Blenderパワーで非対応服を着せ替えする Part 1
VRChat用の衣装をBoothで見ているといろいろな衣装が販売されていますが、対応アバターは一部の有名アバターに偏っているのが現状で、それ以外の多くのアバターを使っている人は非対応の衣装を着せることになります。そんな時に力を発揮するのがBlenderです。モデリングソフトなのでunityで無理やり作業するより圧倒的に楽で高クオリティに着せ替えをすることができます。
着せ替え初心者、unityで着せ替えはしたことあるけどblenderは未経験、非対応服をunityで着せてみたけど上手くいかない、そんな方に向けた記事です。
この記事を読んで作業したけどうまくいかない!とお困りの方はどうぞ気軽に私までご連絡ください。できる限りサポートします。
Blenderを使うメリット
実際、周りのVRChatterにBlenderはいいぞ、と宣伝しても、Blenderは上級者向けだしちょっと……と言われることが非常に多いです。そこで、衣装改変でBlenderを使うメリットを提示したいと思います。
・圧倒的クオリティ
当然ですが、Unityはゲームの開発環境、blenderはモデリングソフトです。そのため、メッシュの変形をしようと思ったら、blenderの方が圧倒的に自由度が高いです。そうはいっても操作も複雑で難しいんでしょう…?と思うかもしれません。しかし、基本操作のみであれば習得は難しくありません。実際、私も多機能すぎるblenderの機能の1割くらいしか使いこなせていない気がしますが、その程度のblender力があれば衣装を合わせるくらい余裕です。出来ます。
・高い作業性
モデリングソフトなので、メッシュ操作の作業性はすこぶるよいです。基本的な操作を覚えるだけで、unityでボーン変形を駆使しながら頑張って着せ替えるより、圧倒的に楽で速く高クオリティなものができます。正直Blenderに慣れるとunityではカメラ操作すらしんどいです。
・衣装選択の自由度が圧倒的に上がる
blenderをつかえば、大きく体型の異なるアバター用衣装を合わせることができます。この衣装可愛いけど対応してない…そんな時もblenderがあれば諦める必要はありません。圧倒的に多くの選択肢の中から服を選ぶことができるようになります。
たとえば、比較的フラットな体型のTETRAちゃんに、桔梗ちゃん用の水着を着せることが出来ます。
これだけの体型差を埋めることも、blenderなら簡単です。
・ボーンの入れ子構造を解消できる
unityで1つのアバターデータに複数の衣装を入れたことがある方は知っていると思いますが、unityで着せ替えるとアバターのArmature構造の中に服のArmatureを入れ子にすることになるため、沢山の服を入れるとArmature構造がぐっちゃぐちゃになって大変見づらくしんどいことになります。
しかし、blenderを使うとアバター素体のボーンに直接服のメッシュを追従させられるため、ボーンは増えません。複数の衣装を入れても増えるのはメッシュだけ。大変シンプルで見やすいプロジェクトを作ることができます。
・無料
え?こんな便利なソフトが無料!?使うしかねぇなぁ!!?!??!!
非対応服着せ替えの仕組み
まず、着せ替えとは何をすることなのか、確認していきます。着せ替えは大きく2つの工程に分けられます。
・服の位置と形状をアバターの体型に合わせる
専用衣装では不要な作業です。しかし非対応服では当然アバターと体型が違うため、位置や形が合いません。メッシュを移動、変形させて貫通などが無いように形を合わせる必要があります。これは単純に外から見ておかしくなければOKという話なので、服の形状によって難易度は変わってきます。ゆったりした形状でシンプルな造形なら簡単ですが、複雑な形状だったり肌にぴっちりつく形状だったりすると少し難しくなってきます。
・アバター側のボーンに服が追従するようにする
対応衣装では、こちら側の作業のみで着せ替えが完了します。端的に言うと、ボーンが動くとそれに対応したメッシュが動くことで、身体の動きに追従するようになります。ちょうど骨と肉のような関係です。unityでの一般的な着せ替えでは、身体側のボーンに対応する服のボーンを入れ子にすることでこれを実現しています。身体のボーンが動くとその子である服ボーンが同じように動き、服ボーンに追従して服メッシュが動く、という関係です。キセテネなとのツールはこのボーンの対応作業を自動でやってくれています。
blenderでも同様にボーンを入れ子にして動かすことができますし、入れ子にせず直接アバター側のボーンに対応させれば、よりシンプルになり元から着ている衣装と同様の仕上がりにすることができます。
今回は記事をPart 1とPart 2の2つにわけて解説していきます。Part 1ではメッシュの変形を行います。この状態で出力してunityに持っていけば、対応服と同じようにunity上で着せ替えすることができます。
Part 2ではより発展形として、Blender上で素体のボーンに服が追従するようにウェイトの設定を行います。多少ウェイト周りの知識が必要ですが、こうすることで、より破綻がなく美しい着せ替えを実現することができます。
着せ替え作業
blenderに読み込む
まずアバターと着せたい服の両方をblenderにインポートします。blenderファイル(.blend)があれば、それを開いてもう一方のfbxをインポートすると良いでしょう。両方.blendファイルがある場合は、AppendでObjectあるいはCollectionを選んでもよいです。Appendとは別のBlenderファイルから中身の一部を持ってくることができる便利機能です。
なお、blendどころかfbxも無く、unitypackageしか入ってない!という場合もまあまああります。その場合は一度適当な unityプロジェクトにインポートして、Assetsフォルダ内から必要なfbxファイルをコピーしてきましょう。
服のインポートが完了すると、以下のようにアバターと服の両方が表示されるはずです。
ちなみに今回はいのりんのお店さんのTETRAちゃんにあっとちゃん屋さんの裾結びオフショルダーシャツ+ショートパンツ(薄荷ちゃん用)を着せていきます。
事前準備:テクスチャの適用
おそらく、この時点ではアバターと服にテクスチャが当たっていないと思います。今後の作業のためにも、テクスチャの貼られた状態で見たいので、その設定をしていきます。詳しい手順については、以下のQuest対応の記事にある
4.ポリゴンを減らす前の作業
マテリアルにテクスチャを割り当てる。
に書いてありますので参考にしてください。
https://note.com/kikjin/n/n8639167963a0#b0552061-2a78-4a82-8a2c-0f08c7f656d5
無事にテクスチャがあてられると、上の画像のようになっているはずです。
Blenderの基本操作
ここで今回使う操作方法を確認しておきます。
Tab オブジェクトモードとエディット(編集)モードの切り替え
オブジェクトモードはメッシュの塊(オブジェクト)ごと動かしたり変形したりする時に使います。エディットモードはメッシュの頂点や辺、面を動かしたりするときに使います。基本的にblenderではこの2つのモードを行ったり来たりしながら作業していきます。
G (Grab : つかむ)
今回一番使うのはこれです。頂点や面、オブジェクトモードならオブジェクト自体を動かすのに使います。とにかく動かすならG!そんな感じです。
S (Scale : 拡大縮小)
拡大縮小はSです。基本的にオブジェクトの原点を基準に拡大縮小されます。
X,Y,Z
これは単品で使うのではなく、GやSの後に続けて押して使います。それぞれX,Y,Z座標のことで、X方向だけに動かす、なんてときに使います。Shift+X, Y, Zとすると、逆にその座標軸以外のみに沿って動かせます。Shift+Xと押すとYZ平面に沿って動かせる感じになります。
1,2,3 頂点/辺/面選択切り替え
数字の1,2,3を押すとエディットモードで選択する対象を頂点/辺/面それぞれに切り替えられます。ちなみにテンキーの数字はまた別の機能が割り当てられています。こっちはテンキーじゃ無い方です。
位置を合わせる
ここから実際の作業に入っていきます。
画面右のOutlinerから、新しい服のオブジェクトを全て選びます。
注: 画像ではArmature.001が選択されていませんが、Armatureも一緒に選択しないとボーンとメッシュの位置がずれてしまいます。ここでは必ずArmatureとメッシュを両方選択するようにしてください。
オブジェクトモードで服を選択し、G→Z の順に押して移動させます。G(移動)の後にZを押せばZ軸方向のみに動かすことができます。同様にG→YとするとY軸方向に動かせます。
このとき真正面ないし真横から確認すると見やすいです。
ざっくりどの辺が貫通するのか確認しながら服を配置していきます。どこを基準に合わせるかは難しいところなんですが、私は肩(腕)が大体合うようにすることが多いです。
画像のように大体位置を合わせられました。腕の位置が合うようにしています。まだスケールをいじっていませんが、結構いい感じになっています。薄荷ちゃん用の衣装をTETRAちゃんに着せていますが、体型は結構近いようです。
ここではまだサイズ感の確認を含めてざっくりで大丈夫です。
後ろから見るとガッツリ貫通していますね。
スケールを変更する
スケール変更はSキーです。このときオブジェクトの原点を中心に拡大縮小するので、位置がずれると思います。いい感じに調整しましょう。(一旦オブジェクトの原点を移動させる方法をあります)
また、先ほどと同様にS→ZとするとZ軸方向だけ拡大縮小する、なんてこともできます。
先ほどの服はあまりスケールをいじらなくても着せられそうなので、ほかの服で試してみました。これはどうも袖が長いようです。袖の長さを腕に合わせてみたら、ボディ部分が身体よりも細くなってしまいました。この服の場合は、体部分の大きさを合わせておいて袖を短くする戦法がよさそうです。と、こんな感じで戦略を立てながら進めていきます。
調整していくと、上下に分かれている服ではそれぞれスケール変更したり移動する必要も出てくると思います。よく見ながら位置とサイズを決めていきます。もっとも、後から動かしたり拡大縮小したりすることもできるので、ここできっちり追い込まなくても大丈夫です。
位置を決めたら、一旦この時点で別名で保存しておきましょう。
メッシュを変形する
いよいよメッシュを変形していきます。服のメッシュを選んでTabキーでエディットモードに入ります。ここではショートパンツとベルトを選択しました。この時一緒に変形してほしいオブジェクトは複数選択してからEditモードに入りましょう。
動かしたい部分(貫通している部分)を適当に選択します。数字の1, 2, 3キーでそれぞれ頂点, 辺, 面選択を切り替えられます。今回はざっくり動かすのでなんでもいいです。私は面選択でやりました。選択したら、Gキーで頂点を動かせます。こんな風に…ってこれじゃダメですね。めちゃめちゃ不自然になってしまいました。
実はこれをいい感じにしてくれるプロポーショナル編集という機能があります。これは選択した頂点/辺/面だけでなく、その周りの頂点も一緒に動かしてくれる機能です。とりあえずはプロポーショナル編集で動かしておけばそれなりに自然な仕上がりになります。
上部のアイコンからプロポーショナル編集のマークをクリックして青色にします。その状態で選択した部分をGキーで動かします。すると円が表示されますが、この円の大きさで移動の影響範囲を調整できます。円のサイズを調整して動かすと、いい感じに貫通がなくなりました。
このときもX, Y, Zキーで移動方向を拘束できるので積極的に使っていきましょう。今回は後ろに動かしたいのでG→Yと押して動かします。
他の部分も同様に作業していきます。
プロポーショナル編集しか使っていませんが、ショートパンツ部分の調整が完了しました。
正直後は貫通がなくなるようにこの作業を繰り返すだけです。
ひたすらプロポーショナル編集で選択して移動、を繰り返していたら、トップスも貫通がなくなりました。作業時間5分くらいです。
しかしここで肩ひもの存在に気が付きました。タンクトップ型インナーの肩ひもがガッツリ宙に浮いています。これを直していきましょう。
とりあえず肩紐部分を選択し、Z, Y方向に縮小してみます。S→Shift+Xと押すとX軸以外を拡大縮小できます。
不自然でないくらいに縮小してみましたが、まだちょっと浮いてるので、G→Zで下に下げてみます。
なんだかいいかんじになりました。副作用としてちょっと貫通したので、例のごとくGキーで適当に修正しておきましょう。
よく見るとなんだか折れたような形になってしまっています。こういう時は辺選択や頂点選択で直しましょう。ちょうどへこんでいる部分の辺ないし頂点を選択し、プロポーショナル編集の円を十分に小さくした状態で動かすといい感じになります。
頂点/辺移動を駆使していたらなんだかいいかんじになりました。よく見るとちょっとガタついていますが、よく見ないと分からないので良しとします。こだわる人は存分にこだわって下さい。
これで、メッシュの変形が完了しました。正直ここは服の形や体型差によって難易度が大きく変わってくる部分ですが、今回くらいの難易度なら、慣れれば15分くらいで終わるんじゃないでしょうか。
場合によっては、プロポーショナル編集だけではつらい形状もあると思います。そのような場合はメッシュ変形モディファイヤー、あるいはラティスという機能を使用してみてください。より高度な変形を行うことができます。(まだあまり使いこなせていないので、使い方については検索してみてください…)
水着など、肌にピッタリ合う形状ならシュリンクラップという機能も有効です。対象のオブジェクトにピッタリ添う形状に変形することができます。
調整が完了したら、ここからPart2へと分岐します。
このままBlenderで着せ替えに挑戦する方は、Part2のウェイト調整へ進んでください。Part2はこちらです。
それ以外の方は、この状態の服をunityに持っていけば、対応服と同様に着せることができます。
それでは服のエクスポートに進みましょう
服のエクスポート(出力)
まず、この時点に戻ってこれるよう、blenderファイルを別名で保存しておきましょう。
保存出来たら、アバターの入ったArmatureをOutlinerから選択し、Delete Hierarcheyします。
これで服とそのArmatureのみが残ったはずです。この状態でfbxをエクスポートします。
エクスポート時の設定についてはこちらの記事に書いてあります。
今回はアバターではなく服のみですが、やることは同じです。エクスポートしてunityにインポート、fbxのインポート設定までやりましょう。
やる気が出たらこっちの記事にも詳細を書こうと思います。
Unity作業
fbxをインポート出来たら、後は普通の着せ替えと一緒です。服をヒエラルキーにドラッグアンドドロップし、メッシュとボーンをそれぞれアバターの階層下に入れていきます。キセテネなどのツールをつかってもよいでしょう。
詳細はこの世に数多ある着せ替え記事に任せようと思います。
うまく着せられたら、アップロードして完成です。お疲れさまでした。
VRChat関連の技術的な情報などを書いています。「スキ❤️」や「フォロー」していただくとモチベになります。「サポート」していただいたら私が美味しいものを食べます。