VRChatでのアバターに服を着せ替える際、Unityだけでやるのか、Blenderも使うのか…、Blenderを使うにしても服側に素体ありを使うのか、なしを使うのか、色々ありますが今回は服側に素体がない場合の着せ替えになります。
(※注意点1:Blender2.79bでの説明。)
今回は素体のウェイトを服に転送(コピー)し、着せ替えるのが目標です。(見出し写真↓)
(※注意点2:素体にウェイトがない部分がある振り袖やコートなどの肌に密着しないタイプの着せ替えには使えません。)
1.まずはじめに素体側のBlenderファイルを開く、もしくは素体側のFBXをインポートします。今回は素体側がクレリックちゃんなのでFBXでインポートです。↓
2.マテリアルやテクスチャの情報が表示されてないときはキャラが表示されてる3Dビュー上(モデルが映ってるところ)でNキーを押してShadelessをクリック。↓
3.次は服側をインポートします。↓(今回は潮溜さんのトップス(https://siodamari.booth.pm/items/1428879) を拝借。
4.テクスチャがないのでShadeless…しても出てこないときは手動で設定し直しなのですがしなくても行けるのでこのまま行きます。↓
5.オブジェクトモードで服のArmatureを選択して、3Dビュー上で「G」→「Z」→移動
Zの部分をXとかYでも同様に調整。↓
7.サイズを合わせましょう。拡縮は「S」キーです。「S」のあとに「X」「Y」「Z」どれかを入力するとその方向だけに拡縮できます。↓
お腹周りがこれだとちょっとダサイですね。
8.編集モード、面選択にして「Z」キーでワイヤーフレーム表示。そして変形したいところの面を選択していきます。(ワイヤーフレーム表示は使わなくても良いです。)↓
「B」で矩形選択、「C」で円形選択です。選択解除は、矩形選択ならShiftドラッグ、円形選択ならスクロールボタン。
9.今回はこのくらい(写真1)選択して「G」→「Y」で右側に少し移動、このくらい(写真2)選択してまた移動、としました。↓
10.辺選択モードにして移動したい辺を選択。↓
(Shift右クリックで地道にやるか、始点を選択した後、終点をCtrl右クリックでもOKです。)
「G」→「Y」で移動。
11.形が整ったら服のArmatureにあるオブジェクトを素体のArmatureに移動いきます。
まずはオブジェクトモードで、目のマークをクリックして非表示にしていたものなどは表示します。
その後、服のArmatureをクリック、そしてオブジェクト→適用→回転と拡縮&位置をします。
そうすると右下のトランスフォームみたいに数値がリセットされるんですね。↓
(黄色い▽の記号がついた服とかもすべて同じようにします。複数ある場合はShift選択で複数選択すると良いです。
(これで服が吹き飛んだりしなくなります。
12.服のオブジェクトの黄色い▽をクリック&ドラッグで素体のArmatureまで持っていき、ドロップです。↓
14.オブジェクトモードで素体のオブジェクト(転送元)をクリックします。↓
15.服のオブジェクト(転送先)をShiftクリックします。↓
16.ウェイトモードにして左のツール(「T」で表示)からウェイト転送↓
17.実行されると左下に設定画面が出てきます。まだ途中なんです↓
18.転送元レイヤーを「アクティブなレイヤー」から「名前」にします。↓
19.ポーズモードにして腕とかのボーンを選択して「R」で回転させたりすると動くのが確認できます。↓
最後にFBX出力してUnityへ持っていきます
20.左上のファイルから名前を付けて保存した後、エクスポート→FBXしましょう。 設定は写真1~4を見てください。 ↓
(モデルによってはボーンの向きや大きさ、構成が変わる可能性があるので写真5も参考に(Blender2.8以降の写真ですが))
メイン、ジオメトリ、アーマチュア、アニメーションの4種類です。写真1のカメラとランプはShiftクリックです。
21.UnityにFBXファイルを下のAssetにD&Dしてインポート。 右のInspectorタブからRigを見るとGenericアバターになってる(写真1)のでHumanoidにしましょう(写真2)。↓
22.FBXファイルをヒエラルキー上にD&D。
マテリアルとか全部なくなってたりオブジェクト全表示されてるので設定しましょう。
23.VRCのwikiにあるように新規でAdd Componentしてもいいのですが、面倒なので設定済みのものをコピーしちゃいましょう。
右クリックでCoppy Component。↓
右クリックでPaste Component As Newです。↓
24.Face Meshのところがコピー元の顔を参照してるので、コピー先の顔をD&D↓
これでアップロードして完成です。
Dynamic Boneは @Taremin_VR さんが公開している「CopyComponentsByRegex」というコピーツールが便利です。
配布場所(https://github.com/Taremin/CopyComponentsByRegex)
使い方(https://taremin.kibe.la/shared/entries/95c1d6cf-9fcd-4a57-8849-677529e50e77)
Dynamic Boneは設定しているオブジェクト(例えばArmature)のScaleによってRadiusの値に影響を与えますので、コピー元のオブジェクトのScaleに注意しましょう。