見出し画像

Resoniteでの「服の着せ方」をVRChat(Unity)風に理解してみようのメモ


はじめに

この記事は「VRChatでは服を着せられる」が「Resoniteでは服を着させられない」人向けに書かれています。なので、ある程度VRChatでの知識が必要です。(特にArmatureを手動で紐付けする作業は、便利なツールがある今のVRChatでは知ってる人が少ないかも?)
加えて、ResoniteでのDev Toolを含めた基本操作の知識が必要になります。(本記事では基本操作の解説は省略しております…。)

今回は対応衣装を着せていくので、アバター『フォシュニア』と対応衣装『【フォシュニア専用】ドラゴンジャケット』を使って解説していきます。

また、今回この記事を書くにあたって、以下の記事をとても参考にさせていただきました。

①下準備その1~モデルのインポート(Resoniteのみ)

1.アバターを用意して、動作させられるまでセットアップを済ませます。ここでは解説を省くので、以下を参照ください。

2.服のモデルをインポートします。
服のモデルのFBXファイルをResoniteのウインドウにD&Dすると、モデルインポーターというウインドウが出てきます。そして、モデルインポーターを次の設定で進めていきます。

3Dモデル

一般的なほとんどのモデル

自動スケール(で良いと思う)

高度な設定
・マテリアルを「XiexeToon」に設定
・「IKをセットアップする」のチェックを外す(※服がアバター用の判定になっておかしくなる)
・「アセットをオブジェクト内に入れる」にチェックする(※詳しく言えば任意の項目ですが...このあとの説明の都合上、今回はチェックを付けた場合として話を進めます)

モデルインポーター
インポートしたモデル

これで服のモデルがインポートできたはずです。ここではまだテクスチャが貼られておらず、モデルは真っ白ではないかと思います。

[今回のポイント!]FBXのHierarchy上での階層構造の見え方の違い

VRChatユーザーではおなじみのUnityでfbxをHierarchyに置いたとき、アバターの階層構造は以下のように表示されます。

アバター.fbx
  Armature(ボーン)
  Body(メッシュレンダラー;メッシュやマテリアル等を参照し実装するもの)
  Hair(メッシュレンダラー)
…etc

服.fbx
  Armature(ボーン)
  Cloth1(メッシュレンダラー)
  Cloth2(メッシュレンダラー)
…etc

Unityでの階層構造

一方、Resoniteで同じものをインポートすると、シーンインスペクター(=Resoniteのシーンインスペクター左側、UnityのHierarchyに該当)では以下のように表示されます。

アバター.fbx
  CenteredRoot
   Assets
    Mesh(メッシュ)
    Mesh(メッシュ)
    Material: Body(マテリアル)
    Material: Hair(マテリアル)…etc
   RootNode
    Armature(ボーン)
    Body(メッシュレンダラー;UnityのBodyと同じもの)
    Hair(メッシュレンダラー;UnityのHairと同じもの)
…etc
   Head Proxy(アバターの構成ファイル)
   Hips Proxy
   Chest Proxy…ect

Resoniteでのアバターの階層構造

服.fbx
  Assets
   Mesh(メッシュ)
   Mesh(メッシュ)
   Material: Cloth1(マテリアル)
   Material: Cloth2(マテリアル)…etc
  RootNode
   Armature(ボーン)
   Cloth1(メッシュレンダラー;UnityのCloth1と同じもの)
   Cloth2(メッシュレンダラー;UnityのCloth2と同じもの)
…etc

Resoniteでの服の階層構造

ここらへんの詳しい説明は大変なので割愛しますが…、ざっくり言えば『黒文字』のところはUnityと対応しています。

たとえば『服(Clothes)』のオブジェクトをそれぞれUnityとResoniteで非表示にしてみます。

対象オブジェクトを非表示にすると
このように見えなくなる
ResoniteでもUnityに対応するオブジェクトのActiveを外すと
このように表示されなくなる

すなわち、黒文字の部分を意識しておけば、Unityと同様の操作で服やアクセサリーを付けることができます。ただし、マテリアル部分に関しては「Assets > Material:」の部分で設定します。(Unityとは違ってメッシュレンダラーの付いているオブジェクトから直接マテリアルを編集できません)

(ResoniteでのFBXの中にあるAssetsは、モデルインポート時の「アセットをオブジェクト内に入れる」によって発生した、言わばUnityで言うところのAssets(Projectタブの中身)のようなものです。マテリアルもUnityではAssets中のフォルダに入ってますね。今回の作業ではあまり気にしなくて大丈夫です。)

②下準備その2~プロテクション等の設定(Resoniteのみ)

服モデルを保護するために、プロテクション(SimpleAvatarProtection)をかけます。まずはFBXを選択し、「コンポーネントをアタッチ」を押します。出てきたウインドウから「Users > CommonAvatarSystem > SympleAvatarProtection」を選択します。するとプロテクションがかかります。

服のFBXを選択して
下にある「コンポーネントをアタッチ」からSimpleAvatarProtectionを設定
これでプロテクションがかかる

これをRootNode内のArmature以外のもの(=メッシュレンダラーが付いているオブジェクト)にも同様に設定します。

jacket、innerなどにもかけます

次にUniPocket、もしくは以下のURLをResoniteにコピペしてAvatarSetupHelperを取り出し、服のコライダーの除去と、このあとの作業がしやすいようにオブジェクトのネーム部分の着色をします。(ResoniteではこういうURLをコピペするとアイテムが取り出せます。)

resdb:///d97f523c13aca36ae3a25cd943af3a2c87926d6a11c7a8dcbaadba5f15511b75.brson

AvatarSetupHelperの上のスロットに服のFBXをD&Dして…
Remove collidersとRecolorを押す

服のFBXに設定されている「Grabbable」を削除し、下準備は終了です。

Grabbableの右のゴミ箱マークで削除

③服のマテリアルを設定する(Resonite)

インポートした状態では画像が設定されていないので、『服.fbx > Assets > Material: Cloth』に該当する部分でマテリアルの画像を設定しましょう。
また、服の裏側も見せる場合はCullingをOFFにしましょう。(初期状態のBackでは、表面しか表示されません。)

MainTextureの部分に画像をD&Dすると…
このように反映される。
下の方にあるCullingをOFFにすれば、服の両面が描写される。

④アバターと服の位置を揃える

服の位置や大きさを調整し、アバターに合わせます。
Unityでは対応衣装の場合は既に大きさや位置調整がされていると思いますが、Resoniteでは位置の微調整が必要かもしれません

Unityの場合

Hierarchyには「アバター」と「服」のオブジェクトがそれぞれ独立して存在
ズレていたら服のPositionを調整して、「イイカンジ」に合わせます。
(元から調整済みで位置もピッタリだったので、あくまで画像はイメージ)

Resoniteの場合

まず、アバターをTポーズ(またはAポーズ)にしましょう。FBX内の『IKPositionWeight』を0にします。

このままだとIKに追従したまま別のポーズを取ってるので…
IKPositionWeightwを0にして初期ポーズに

次にアバターと服の位置を揃えましょう。アバターと服の『リセット』のところにある『位置』『回転』『拡大/縮小』のボタンを押します。するとアバターと服の位置等の値がリセットされ、それぞれがワールド原点に揃います。(アバターのPositionに揃えても良いとはおもいますが、ワールド原点に揃えてしまうのが楽だと思います。)

こんな感じ

ワールド原点には揃いましたが、アバターに対して服の位置がズレているので、ここで服の位置を調整します

原点には揃ったものの…
服の位置がズレているので、Gizmoやインスペクター内のPositionの数値で微調整します

⑤アバターのFBXファイルに、服のFBXファイルを入れる

服を追従させる第一歩です。アバターに服を取り込むため、アバターのFBXファイルに、服のFBXファイルを入れます。UnityもResoniteも同じです。

Unityの場合

服オブジェクトをアバターにD&Dするだけ

Resoniteの場合

服のファイルを右クリック(VRではグラブ)しながらドラッグして
アバターのFBXのところでドロップ

[余談]このままアバターを動かすと...?

アバターに服自体はくっついてきますが、ボーンとの関連付けができていないので、袖などは動きません。初心者が陥りやすいミスです。

VRChat
Resonite

⑥アバターのボーンに服のボーンを追従させる

アバターのArmatureの中身に、服のArmatureの中身を入れていきます。アバターの『Hips』の中に服の『Hips』を、アバターの『Spine』の中に服の『Spine』を入れて、入れ子構造にします。同名のボーンを全てそのようにします。とても手間がかかりますが、これが正攻法。

Unityの場合

同名のアバターのArmatureに、同名の服のArmatureを入れていく

Resoniteの場合

D&Dして…
同名のアバターのArmatureに、同名の服のArmatureを入れていく

⑦(ResoniteはIKPositionWeightを1に戻して…)これで完成

VRChatではこれでアバターをアップロードして完成ですが、Resoniteにはもうひと仕事あります。
アバターをTポーズ(またはAポーズ)にするために切っておいたIKPositionWeightの値を1に戻します。これでアバターが服と一緒に動くはずです。

あ!!!
IKPositionWeightを1に戻しましょう…
これでアバターも服もIKに追従して動きます

[余談]Resoniteにも『キセテネ』みたいなのってある?

アバターのArmatureに服のArmatureを入れていく作業ですが、とても面倒ですよね…。
VRChatには『キセテネ』に代表されるような、そこらへんを自動でやってくれるものがあります。

Resoniteにも同じように自動化してくれるものがあるので、一例を紹介します。

●着付け支援ツール
UniPocket「Avatar Setup Tools」から「着付け支援ツール」を取り出します。「Avatar Setup Tools」は以下のURLからも取得できます。

resdb:///37e3683e016f2853a2ba33540e4f352dac751f068b95ae4412b79d54efa4c037.brson

「⑤アバターのFBXに服のFBXを入れる」を終わらせたら、「Avatar Setup Tools」指示通りにアバターのArmatureと服のArmatureをスロットにD&Dします。
ボーンの名前がアバターと合ってることを確認して、あとは実行すれは、自動でArmatureの紐付けをやってくれます。便利!

UniPocketから取り出して…
スロットにD&Dして実行すると
紐付け完了!
もう動く!便利!

おわりに

今回、私自身がアバターに服を着せた記録として、この記事を書きました。実際に理解した後の感想としては「Unityとやってることが変わらない」ことです。コンポーネントの追加や削除はあれど、「位置をあわせて」「アバターのFBXの中に服のFBXを入れて」「Armatureを紐付けさせる」という大きな流れは変わりません。
やや長めの記事になってしまいましたが、VRChatでアバター改変をしたことがある人なら問題なくできる作業であると考えています。もし興味がありましたら、ぜひチャレンジしてみてください。

ととやま


いいなと思ったら応援しよう!