見出し画像

Unityと仲良くしたいVRChat日記(5)ボーンと着せ替えツール

このところUnity作業が迷走ぎみだったが、寄り道をたくさんしたおかげでアバター改変でやりたいことが固まってきた。

  1. VRChat用アバター(fbx)のテクスチャを改変したい

  2. VRChat用アバター(fbx)に純正以外の衣装(非対応衣装)を着せたい 

  3. ちょっとしたアクセサリを自作してつけたい 

以前VRoid Studioを試したとき

プリセット服や靴を着せるのは超簡単、改変するのも簡単、さらにBOOTHでいろいろな衣装が売ってて、それを改変するのも可能。画像ソフトの概念でテクスチャを重ねることもできるし、別のお店で買ったトップスとボトムスを合わせたり、衣装にあわせて等身を上げ下げするなど現実世界では不可能な調整もできる。

https://note.com/ninigo/n/n4a5a4ccaad17

と書いたが、Unity上でアバターを扱うときはこのような機能は(デフォルトのUnityでは)ない。後述する便利ツールはあるけど、一度はマニュアルでの着せ替えをやって概念を理解すべき、非対応衣装を着せたいならなおさら、という先人の教えもあったのでツールを使わずにまずやってみる。

その1.マニュアル着せ替え

今回のアバターはRadDollさんなならぼさんの純正衣装を着せてみる。
着せ方の説明として

unitypackageをインポートした後、prefabフォルダ内にある
RadDollV2 C_Onepiece.prefabをHierarchyにドラッグアンドドロップしてください。
その後、Armature以下をRadDollv2ちゃんの対応するボーンの子要素として紐づけてください。
最後にSkirt,SkirtBelt,SkirtBeltRing,ShirtRibbon,Shirtの5つをモデルの子要素として移動したら導入完了です。
サンダルと足元のリングに関してはお好みで導入してください。
(導入箇所は左右footにサンダルを、lower_leg.Rにリングを入れてください。)

https://booth.pm/ja/items/4195737

とある。これがUnity着せ替えの世界。逃げ出したくなる難解さ。

RadDoll(着せ替え前)

落ち着いてHierarchyウインドウを細かくみていく。まず元のアバター、RadDollの主要な階層はこうなっている。

全部開くととんでもない長さになるので一部だけ開いてます

Shake_*とRad_*という名前でそろってるのがRadDoll特有の要素、それ以外のSpineとかChest、shoulder.Lなどがアバター共通のHumanoidボーンになっている。
デフォルト衣装でインナー以外はすべてInspectorでチェックを外しておく。
そして着せたい衣装のほうの階層がこちら。

こちらは体のない服だけなのでNeck以下の階層がないなどの違いはあるが、Spineやshoulder.Rといったボーンが共通している。この「服のボーン」を同名の「アバターの体のボーン」のそれぞれ【中】に移動するのが具体的な着せ替え作業になる。
★服を体の【中】に入れるのは服を着せる直感とは違うが、体のボーンに追従して服が動く、という論理関係からいうと【中】になる。そうだ。
Skirt,SkirtBeltなどはモデルの子要素、とあるのでアバターのトップ階層である「RadDollV2_PB」の直下に置く。こうやって着せた結果がこちら。

濃いグレーは表示をオフしたオリジナル衣装

試しにアニメーションファイルを入れて動かしてみた。体に追従してるので着れてるようだ。

アニメーションファイルの入れ方は別途説明するよ

その2.キセテネ

次に、定評ある着せ替え便利ツール「キセテネ」で同じ衣装を着せてみる。
キセテネを組み込んでWebページの説明通りに衣装と体を指定すると、
「一部のボーンが取得できない」と出た。

ボーン詳細設定をみると、衣装(服)の上半身のshoulder.Rとかのボーンが存在するのに割り当てられてないようだ。

Noneになってる
手動でドラッグ&ドロップした後

上半身のシャツに相当するボーン(shoulderとupper.arm)と、下半身のSandalとRingをHierarchyから上記画面のそれぞれ対応するボーンにドラッグ&ドロップ。そして「着せる」ボタンを押すとこのようになる。

元の体、RadDollV2の下にRadDollV2(Clone)という階層ができている。着せ替える体と衣装のオブジェクトはいじらずに、コピーを作って着せ替える、そのコピーをVRChatにアップロードする、という仕組みになっている。キセテネが作成したコピー、RadDollV2(Clone)の中身をみてみると、

衣装(服)のボーン、shoulder.LやSandal.Lがあるべき場所に配置されていて大丈夫そうだ。
今回は一部マニュアルでボーンを指定する必要があったが、通常のアバターと対応衣装(位置やサイズ合わせが不要な衣装)ではキセテネで

  1. Hierarchy上の服(着せたい衣装)を指定

  2. Hierarchy上の服(着せたいアバター)を指定

  3. 「着せる」

の3ステップで完了。あの複雑なボーン階層を知らなくても着せ替えができちゃうのは大きい。初心者にはおすすめ。

なお、さらに高機能で便利という噂のツール、Modular AvatarはこのRadDollでは動作しなかった。そのアバターのボーンの構成とかによって動かないこともあるようなのでそれかもしれない。

マニュアル、キセテネ2つの方法でUnity上では着せられたっぽいが、VRChatにアップデートして実際に動かしてみたときこうなることがある。

オリジナル衣装とワンピース衣装の両方を着てる!?

これの原因はたぶんわかっていて、VRChat特有のFXメニューが悪さをしているはず。ということでFXメニュー編に続く。

補足.ボーンの話

さて、このHierarchyウインドウでチェックON/OFFすると服や靴のそれぞれの衣装パーツを確認できるが、ボーンそのものを可視化することができない。このRadDollさんのボーンはどうなっているのか?
それを見るにはモデルのfbxファイルを選択し、Inspectorウインドウの「Configure…」を選ぶとアバターのボーン設定があらわれる。

「Humanoid」が選ばれている
RadDollのHumanoidボーン対応。緑色のボーン名の対応表はこちらにあるよ

これは、Unityが最初から用意している人型キャラクターのテンプレートにしたがって、たとえばこのRadDollさんの体は腕のどこまでが上腕でどこが上半身か、とかを指定していることになる。まさにボーン(骨格)。

今回これまで貼ったリンクの他、たくさんの先人の記事を参考にさせていただきました。多謝。

(追記)こはろぐさんがボーンと着せ替えについてとてもわかりやすくまとめられていておすすめです。

この記事が気に入ったらサポートをしてみませんか?