はじめに
今回はBlender4.5を使って力技で非対応衣装を着せる方法を紹介します。
苦しんで衣装改変を行い、BlenderとUnityのスキルアップがしたい人向けの記事です。
楽したい方は適当な専門ツールを使った方が良いです。

とはいえ…
Blenderで苦しみながら調整した方が「綺麗」かつ「自分で意図した形」にできます。
やってることの内容的にある程度「Blender」と「Unity」が使える人向けになります。
またBlenderとUnityは導入済みなことを前提に進めます。


これからBlenderを入れる人は「blender launcher V2」経由で入れることをおすすめしますが… 面倒だと思うので公式サイトからDLで大丈夫です。
Blenderの基本操作はチュートリアル系の本1冊やるかのがおすすめ。
あとは必要に応じて私のブログなどを検索してください。
↓私が出した本だとブログとの相性が良いのでおすすめ。
(3章までの実践+4章以降は流し見でOK)
Unityに関しては、まずアバターを入れて対応衣装を着せる経験までしてから進めることをおすすめします。

初心者向けに難しそうなところは補足になるブログなどのリンクを入れます。
ただやってることの「工数」や「必要知識」の多さ的に中~上級者向けです。
非対応衣装の改編に関する専門用語
まず初めに専門用語を解説します。
初回の方は読み飛ばして良いです。
2回目以降見た人。
ほかの記事などを検索したい人向けの「検索ワード」の提示です。
//ーーー基本に関することーーー
【Blender】
3DCGを "作る" ツール
3Dモデル構造そのものを編集できる
高度なモデルの編集や突き抜け対策が行える
3DCGを動かす設定は行えない
VRChatでの動作設定はUnityで行う
【Unity】
3DCGを "動かす" ツール
3Dモデル構造そのものを編集できない
3Dモデルの構造は少しだけ操作できるが高度なことはできない
3DCGを動かす設定は行える
突き抜け対策などの高度な3Dモデル構造の編集はBlenderで行う方が綺麗
【fbx】
3Dモデルの構造データを保存する形式(メッシュ、ボーン、ウエイトなど)
fbxは多くの3Dツールでデータを読み込み利用できる
Blenderで作ったモデルはfbxで書き出してUnityに入れるのが一般的
ただしUnityはBlenderがPCに入っていればBlenderデータを直接読み込める
販売用モデルを作ろうとしない限り個人的な用途でfbxを扱うメリットはあまりない
//ーーー突き抜けに関することーーー
【メッシュ(3Dモデル)】
3DCGの形に関する情報
X,Y,Zの3次元情報に位置情報を記録して頂点を定義する
この頂点のつなぎ方などの情報を操作して面を形作る
"重要な情報は頂点" に記録される(ウエイトなど)
【ボーン】
3Dモデルを操作するための情報。
根元にある制御点を元に3Dモデルを操作する。
【ウエイト】
ボーン動作に合わせてどれだけ3Dモデルを動かすかという情報。
ウエイトを設定しないと3Dモデルは動かない。
Blenderではこのウエイト情報は「頂点グループ」に記録される。
【スカルプト】
Blenderなどのモデル制作で使える頂点の位置情報を編集する方法。
直感的に頂点を操作することができる。
これで衣装モデルの形を操作し突き抜けを軽減できる。
//ーーーUnity上の動作に関することーーー
【コンポーネント】
3Dモデルの動かすための設定などを行うパーツ。
「Phys Bone」や「Modular Avatar」などはこのコンポーネントという形で設定して動かす。
ヒエラルキーのあるオプジェクトを使って入れる。
【PhysBone】
揺れものボーンを中心とした動作設定。
スカート、髪の毛、胸などの揺れ設定はこれが使われてる。
(スカートの一部はクロスという別の処理を使う事例もある)
【Modular Avatar】
VRChat向け3Dモデルを動かす上で便利な設定をまとめたコンポーネント群。
アバターのボーン追従やパイメニューでのモデル切り替えなど様々なことが行える。
以上が非対応衣装の改編に関する専門用語の解説です。
3Dモデルを用意する
今回はこちらのモデルを使います。


購入履歴を辿り.zipをDL → 展開します。

アバターの方は「.blend」というBlenderのデータが入ってました。
Blenderが入ってるパソコンであればこちらをダブルクリックで開けます。

.blendが無い場合は「.fbx」が入ってると思います。
こちらを探します。

そしてBlenderを立ち上げ。
ファイル → インポート → fbxを使えば3Dモデルの情報を読み込めます。

買ったモデルによっては「.blend」と「.fbx」がファイル内に無い事があります。
そのような場合は「.unitypackage」があることを確認。


.unitypackageすらない場合は販売データに問題がある可能性があります。
販売元にお問合せ案件です。
.unitypackageがあればUnityを立ち上げ。
プロジェクトにドラッグ&ドロップ。

インポートしたデータの中から「.fbx」や「.blend」データを探します。

.fbxを見つけたら右クリック。
エクスプローラーで表示を選択。

これで.fbxのモデルデータを入手できます。

モデルデータがあるファイルパスをコピー。
(Ctrl+Aキーで全選択 → Ctrl+Cキー)

Blenderに戻ります。
ファイル → インポート → fbxを選択。

画面上部のファイルパスにCtrl+Vでペースト。
Enterキー → fbxを表示してインポートします。

これらのテクニックを使いBlenderに「アバター」と「衣装」の情報を読み込みます。
今回は.blendがあったので.blendを開く。
そして.unitypackageの中にあるfbxを読み込んでいれる形になりました。

色の表示はZ → 2キーのマテリアルプレビューで見れます。
おや… 服の色がピンク色ですね。

衣装の色がピンク色なのはBlender上で「テクスチャ(色情報)」が欠けてることを表してます。
ただこれはBlender上でモデルを調整して静止画を作らない限り “直さなくて良い” です。
マテリアルが “ある” という情報があれば大丈夫です。


Blender上で治してもUnityやVRChatには反映されません。
むしろBlender上では服はピンク色をしていた方が突き抜けなどが分かりやすくて便利。
マテリアルはBlenderとUnityで共有できません。
なのでUnityにモデルを入れた際にUnityのマテリアルに差し替えることになります。

このマテリアルに画像の色情報の設定があれば大丈夫です。
もしUnityの方のマテリアルに色情報がない場合がこちらを見て対処してください。
fbxのボーンが不自然な時の対処法
読み込んだモデルはなぜか膝のボーンが前に出てました。

ボーンを選択 → Shift+Hキーでボーンだけを表示。
すると… これは膝周りのメッシュで動きを良くするための補助ボーンのようです。

ヒューマノイドボーンの構造が保たれていたのでこのまま行きます。
ちなみにヒューマノイドボーンはUnityでキャラクターを動かすためのボーン企画です。

一部のモデルではBlenderにfbxを読み込むとボーンの向きが崩れることがあります。

このような場合はShift+クリックで読み込んだ衣装モデルを全選択。
Xキー → 削除。

そしてfbxをインポート。
右側の設定を開き下記の設定を試します。
・リーフボーンを無視を無効化
・ボーンの方向を自動整列を有効化

これで正しいボーンの向きで読み込めるはずです。

詳細はこちらで解説。
以上がfbxのボーンが不自然な時の対処法です。
衣装改変用のBlenderファイルを作る
今回は.blendがあったので.blendを開き衣装のfbxを入れました。
このまま編集 → 保存すると.blendファイルに上書き処理が入ってしまいます。
そして元の.blendファイルの状態を復元できなくなります。

この元の状態の.blendファイルを残すために現在のデータを別の場所に移植します。

再度モデルデータをDL → .zip展開すれば復元できますが…
面倒なので別ファイルを作ります。
Alt+Hキーで非表示にしたモデルを再表示。
Aキーで全選択。
Ctrl+Cでコピー。

次にWindowsキー → Blenderを選択などを行い多重起動します。
そして多重起動先したBlenderを選択。

Ctrl+Vキーでペースト。
これでデータを移植でききます。
こちらを適当な名前で保存。


あとは元の.blendファイルは保存を行わず閉じます。
以上で衣装改変用のBlenderファイルを作成が完了です。
服とアバターの表示調整
キャラクターの衣装が邪魔なので消します。
選択 → Xキーで削除。

服と体だけ残します。
「メッシュ」と「ボーン」の2つが残れば大丈夫です。


服はセンシティブ判定回避のため黒い立方体を配置してます。
ただのモザイクです。気にしないでください。
次はボーンの表示を調整します。
「モデル」と「ボーン」をShift+クリックで複数選択。
Shift+Hキーで表示を調整するモデルだけ表示。


アバターの方は.blendファイルから読み込んだので表示調整は不要でした。
なので記事上では「衣装」だけ表示を調整します。
ボーンを選択 → オプジェクトデータプロパティを選択。
ビューポート表示を開いて下記の設定を操作。
・表示方法 → スティック(任意)
・表示 → 最前面を有効化

以上で服とアバターの表示調整が完了です。
全体の大まかな大きさを合わせる
服の方のボーンを選択。
Sキーで全体の大きさを調整。
Gキーで全体の位置を調整。

首あたりに位置を合わせます。

ボーンを選択したままCtrl+Aキー。
「全トランスフォーム」を実行して大きさの調整を “確定” します。

これを行うことで位置、回転、スケールの大きさが綺麗な値になります。


この値が綺麗な状態だとUnityに入れた時の編集などがやりやすいです。
データが綺麗 = エラーになる確率が少なくなります。
以上で全体の大まかな大きさを合わせる処理が完了です。
TポーズをAポーズに変換
次はTポーズとAポーズの変換を行います。
今回用意したモデルはアバターがAポーズ、衣装がTポーズです。

このテクニックを使えば尻尾のモデリングが行えたりします。
↓このテクニック単体のやり方、詳細版はこちらで解説。
衣装のボーンを選択。
Ctrl+Tabキーでポーズモード。

右上の「X」マークを押します。

これで左右のボーンが同期して動きます。

これを使ってアバターの形に衣装の大まかな形を合わせます。

そしてポーズモードは「ポーズ」を変えただけです。
元の “ボーン” や “形” に対して変化が入ってないです。
Tabキーでボーンの編集モードに入ると元の形に戻ってしまいます。


編集モードで表示された “形” が「元の形」です。
なのでポーズモードの形を「元の形」として適用します。
Ctrl+Tab → 4キーでオプジェクトモード。
ポーズ操作で形を変形したモデルのメッシュを選択。

モディファイアプロパティを開きます。
ここにある「アーマチュアー」モディファイアがボーンとモデルを紐づける設定です。

このアーマチュアーモディファイア上にマウスを移動。
Shift+Dキーで複製。

複製すると変化の適応量が “2倍” になります。
= ボーンの移動量の2倍の位置にメッシュが移動します。

そしたら複製した方の「アーマチュアーモディファイア」を適用します。
マウスを複製したアーマチュアー上に移動 → Ctrl+Aキー。

衣装を選択 → Tabキーで編集モード。
すると「モデル」がボーン操作で変形した形になります。

ただしボーン形は適用されてません。
なのでオプジェクトモードの表示は変化量2倍の状態になってます。


操作前は「元形状の変化0」+「ポーズ操作の変化量2」=2でした。
操作後は「元形状の変化1」+「ポーズ操作の変化量1」=2の状態になってます。
一旦変化量2倍の状態で大丈夫です。
衣装のモデルが分かれていて他にも影響がある場合はそのメッシュにも同じ処理を行います。

次はボーンの形を適用します。
ボーンを選択 → 編集モードにするとTポーズのままだと分かります。

この形を確定するためにボーンを選択。
Ctrl+Tabキーでポーズモード。

Aキーで全ボーンを選択。
Ctrl+Aキー → 「レストポーズとして適用」を実行。

Tabキーで編集モード。
これでボーンの形がポーズのモードの形で確定されます。


この操作で「元形状の変化1」+「ポーズ操作の変化量0」=1の状態になりました。
これでポーズモードで変形した形を「メッシュ」と「ボーン」に適用できました。
以上でTポーズをAポーズに変換する工程が完了です。
衣装ボーンの人型部分をアバターのボーンに合わせる
次は衣装ボーンの中からヒューマノイドボーン部分をアバターに合わせます。

ヒューマノイド部分は「キャラクター」を動かすためのボーン規格部分です。
この規格があることでどのアバターでもVRChat上での動き方が同じになります。


胴体ボーンに関しては「3つ」と「4つ」ボーンの2派閥あります。
なので完全に一致しないこともあります。
(詳細はのちほど解説)
ヒューマノイドボーンの構造は「アバター」と「衣装」にも共通して存在します。
この人型ボーン位置を合わせておくと衣装とアバターの動きが綺麗に同期します。

衣装のボーンを選択。
Tabキーで編集モード。

画面上部のマグネットマークを有効化。(Shift+Tabキー)
スナップ対象を「頂点」に変更。

さらに右上の「X」マークを有効化。

この状態でボーン端にある「点」を選択。

そしてアバターのボーンにスナップさせて位置を合わせます。

この作業を繰り返していけば「胴体」以外はボーンを揃えれると思います。

ただ念のためにボーンの名前表示を行って確認した方が良いです。
名前を表示してボーンを確認
ボーンを調整していた所、胴体ボーンの数が違うという問題に行きつきました。

ボーンは見ただけでは何なのかが分かりません。
そこでボーンを選択 → オプジェクトデータプロパティ → ビューポート表示を開きます。
ここの「名前」を有効化。


アバターと衣装のボーン両方でこの操作は同時に行えません。
Tabキーなどでオプジェクトモードに戻り「アバター」と「衣装」を個別に選択。
個別に名前表示を有効化してください。
有効化するとアバターの方にあるボーンはヒューマノイドっぽく見える関係ないと分かりました。
なので普通に「3」と「3」ボーンなので位置を合わせて合成します。

次は胴体のボーン数が違う場合の解説です。
胴体のボーン数が3と4で違う場合
胴体のボーンは「3」と「4」ボーンの2派閥あります。
具体的には胸を「Chest」だけにするか「Upper Chest」に分けるかです。

ヒューマノイドボーンの原作的には「4ボーンが正しい」です。
ただUpper Chestは無くても動くし、無い方がウエイト調整が楽だったりします。
なので3ボーンの方が主流…?になってりします。

もし「3」と「4」ボーンの違いに当たった場合は…
正直、諦める方が早いです。

諦めるというか…
作り直した方が早い。
(そしてこれから紹介する処理は “ほぼ作り直し” の処理になります)
諦めたくない方は…
「アバターが4」と「衣装が3」の場合は衣装ボーン1つ増やします。
Tabキーで編集モード。
衣装3のChestボーンを選択 → 右クリックで細分化。

増えたボーンを選択。
ボーンプロパティを開きます。

名前を「Upper Chest」に設定。
これで衣装を4ボーンに合わせます。

「アバターが3」と「衣装が4」の場合は衣装のボーンを1つ減らします。
編集モードでUpperChestボーンを選択。
Xキー → ボーンを溶解を実行。

これでボーンが3つになります。

アバター側のボーン数を変えるのは良くないです。
今回はよくても、それ以降で対応衣装など着せる際に問題になります。
なので、土台(アバター)ではなく付加情報(衣装)の方で調整するよう心掛けてください。

というか全アバター+衣装ショップは胴体のボーン数を商品ページに記載するべき。
胸までちゃんと揺らせたい方は胸ボーンの数や位置もちゃんとそろえます。

そしてChestや胸のボーン数や構造をアバターに合わせ…
ウエイトをあなたが人力で調整します。(これしか手が無い)

コツは画面上部でUV編集を選択。

UVと選択を同期を有効化。
UVエディター上から「胴体+胸」に関するメッシュをLキーのリンク選択などで選択。


3DビューのモデルでLキーのリンク選択を使うと袖まで選択されました。
なのでUV上から選択してます。
Pキー → 選択でオプジェクトを分離。

そして分離したオプジェクトに対してウエイト調整を行います。
胴体なので体とそんなに形が離れてない場合はウエイト転送がおすすめ。


ウエイト転送はアバターのウエイト情報を元に衣装のウエイト情報を決める処理です。
ウエイト転送ツールは「Robust Weight Transfer」がおすすめ。
これで転送元の形状で「アバターの体」を選べば衣装のウエイトを良い感じにできます。
↓詳細はこちらでまとめてます。
転送が終わればオプジェクトモードで分離したモデル → 元のモデルの順に選択。(Shift+クリック)
Ctrl+Jキーで統合。
Tabキーで編集モード。
分離したところは頂点が2重になってるので選択 → Mキー → 距離でで接続します。

面倒な方はAキーで全選択 → 距離ででも良いですが…
場合によっては意図しない頂点まで統合されて誤作動が起こる原因になるので注意。

以上が胴体のボーン数が3と4で違う場合の対処法です。
スカルプトで突き抜けを調整する
次は3Dモデルの突き抜けを直していきます。
服と体の形が合ってないのではみ出てます。

服を治す前に体のシェイプキーを先に調整します。
【シェイプキー変形を対応させたい場合】
・全てのシェイプキーを0にして形を合わせる
・その後体のシェイプキーに合わせて衣装の変形シェイプキーも作成する
(手間だが将来の拡張性が高い)
【使いたい体型が決まってる場合】
・シェイプキーを使いたい体型の値に設定
・そのシェイプキーの値に合わせた調整を行う
(楽だが将来の拡張性が低い)

拡張性を考えてシェイプキー0の状態で作り…
シェイプキー対応が手間なのでそのままとなり…
次第にシェイプキー0の体系しか使わなくなる。
(それならシェイプキー値固定の決め打ちで作っても良い説)
アバターと衣装のシェイプキーは「名前が一致」していればMA Blendshape Syncで連動させれます。
↓詳細はこちら。
この記事のコンセプトは苦しんで行う非対応衣装改変です。
なので「体のシェイプキーを全て0にした状態にします。」
(…と書いておきます)


あと今回の私はやり忘れましたが…
衣装に着せる「下着」などがあれば着用した状態にして形を調整してください。
(は い て な い)
衣装のモデルを選択。
Ctrl+Tab → 2キーでスカルプトモード。

Vキーのドローで少し盛ったり…
Kキーのスネークフックで直感的に形を調整しながら突き抜けを治します。

右上の「X」を有効化。

すると “モデルの形状が左右非対称” でも大まかな形を左右対称に変形できます。
これが便利。

その他の細かなスカルプトの操作はこちらで解説。

↑UI表示が変わってますが、まだこの記事使えます。
TポーズをAポーズにした場合、脇のあたりが調整しにくいと思います。

このような細かな調整を行いたい場合はビューポートオーバーレイ表示を調整。
ワイヤーフレームのチェックを有効化。
不透明度を0.2に設定。

Shift+スペース → Relax Slideあたりのブラシを設定。

これで少し膨らんでも良いので突き抜けを修正。

その後、Shift+クリックのスムーズなどで形を整えます。

あとはあまり大きい声で言えませんが…
アバターによっては体の形を絞って削るシェイプキーが用意されてます。
これで解決するのであれば使っても良いと思います。

Boothで販売する用の衣装であればちゃんと形を調整した方が良いです。
アバター改変で個人で使う範囲であれば使って良い手になります。

ゲーム系の3Dモデルは突き抜け対策で体の中にある見えない面を消すテクニックが使われることがあります。
Blender上でアバターと衣装のボーンを同時に動かす
突き抜けの状態を確認するためにアバターと衣装のボーンを同時に動かします。
現状、体のボーンを動かすと衣装のボーンはついてきません。

そこで最も楽なテクニックが下記。
1,オプジェクトモードに戻る
2,Shift+クリックで「体」と「衣装」のボーンを複数選択
3,Ctrl+Tabキーでポーズモード
4,Bキーの矩形選択で「体」と「衣装」のボーンを重ねて複数選択
5,この状態でRキーの回転などでボーンを動かす

以上がBlender上でアバターと衣装のボーンを同時に動かす方法です。
スカルプトではどうにもできない突き抜けがある
ウエイトの問題的にスカルプトではどうしようもない突き抜けがあります。
今回は足部分がそれでした。

スカルプト状態で形を調整はしない方が良いです。

ポーズモードで動かしたボーンはAキーで全選択。
Alt+Rキーで回転をリセット。


ボーンの移動やスケールも行った方は…
・Alt+Gで移動をリセット
・Alt+Sでスケールをリセット
状態を確認。
ポーズモードで変形状態で調整したモデルは元に戻すと形が崩れます。

そこで必要になる対処法は「ウエイト」を自身の手で設定する処理です。
ウエイトを自分の手で調整する
最高の対処法はウエイト操作を覚えて自力で調整する方法です。
ただし… 覚えることが多い上に難しい。

↓必要な手順はこちらでまとめてます。
なので…
一般の方はウエイト転送で治せるところだけ頑張るのをおすすめします。
ウエイト転送は体のウエイトを使って衣装のウエイトを調整する処理です。

↓ウエイト転送のやり方はこちらで解説。
そしてウエイト転送しても変化しない場合は…

ボーンの名前が完全に一致してるか確認してください。

一致してなかったらボーンの名前を修正します。
編集モードでボーンを個別選択 → ボーンプロパティから名前を手入力。

半角スペースまで正しく合わせないと動かないので注意。

あともし正しく動かない誤作動が起こった方は…
一度、頂点グループを削除してウエイトを初期化をためします。
※この処理は体にないボーンのウエイトは完全に消えるので注意
(服の袖やスカートなどの揺れモノ系のウエイトが消えます)

ウエイト転送を行うと突き抜けが良い感じに消えます。
ただちょっと面がギザギザしてます。

そこでおすすめする設定は「スムーズ」です。
こちらを有効化+値を調整。
→ 再度ウエイト転送。

これで少し突き抜けが発生しましたが…
面の変化が綺麗になりました。

この突き抜けスカルプトで修正したらいい感じになります。

次は、この調整を行う上でおすすめする設定を紹介します。
Alt+Dキーでリンク複製すると調整が楽
オプジェクトモードでAキーで全選択。
Alt+Dキーでリンク複製。

片側のボーンをポーズモードで操作。
「確認用」と「編集用」のモデルを作ります。

そして “編集用” の方にスカルプトで調整を入れます。
すると確認用の方にも変化が発生します。

確認用の方で調整すると元の形が崩れるので注意。

このような微調整はVキーのドローあたりがおすすめ。

これで突き抜けの対策が完了です。
どうにもならない所はメッシュを編集
面の構造的にどうしようもないことが起こります。
このような場合は衣装モデルの面を編集することを検討します。
↓足元に謎の面ができてました。

下から見ると、中を閉じる形がありこれが悪さしてることが分かりました。
Alt+クリックのループ選択やLキーのリンク選択などで選択。
Xキー → 頂点で削除。

するとUnity上で裏面が消える挙動になります。


Blenderでは裏面は表示されます。
(特殊な設定をしてない限り)
こちらはUnity上でマテリアルを選択。

lilToonであればCull Modedを「Off」にすれば対処できます。

これで裏面にも色が表示されます。

面の裏表についての詳細はこちらで解説。
またlilToonのメインカラー2ndを使えば裏側だけ色を変えれたりします。
土台のCull Mode「Off」をオフのまま…
メインカラー2ndのCullModeを「Front」に設定。

メインカラー2ndの色を調整。
すると内側の色を変えて影っぽくできたりします。

あと場所によってはモデルの分割数が足りなくで表現できない所があります。
↓元の形的には良くても動かして伸ばすと分割が足りない事例です。


モデルの変形に関する情報は「頂点」に入ります。
分割数が少なく、頂点が足りないと変形を表現できないです。
=滑らかな変形でなくなり突き抜けます。
こちらはCtrl+Rキーのループカット。
分割数を増やして治らないか様子を見ます。

頂点が増えることで移動量の保存場所が増えました。

この状態で再度ウエイト転送などをやり直し。

すると良い感じになりました。

あと最後はスカルプトで調整します。

以上がメッシュ編集による突き抜け対策です。
突き抜けはどうやっても起こる
同じ頂点位置+同じ移動量でない限り「突き抜け」はどうやっても起こります。
↓同じ頂点位置でも少し膨らませるとズレて突き抜けます。


これは数学的にどうしようもないです。
諦めましょう。
そして完全に同じ頂点位置+移動量だと「面がチカチカ」するという別の問題が発生します。
(面の位置が同じ位置に無いことが重要)

この面がチカチカする現象は「Zファイティング」と呼ばれます。

このように「完全一致」も「非一致」もどちらでも問題は発生します。
なので、完全な突き抜け対策は不可能です。
ある程度で諦めるしか手は無いです。
突き抜け対処は理屈的にはモデルを膨らませれば膨らませるほど軽減されます。
しかし、膨らませると形が悪くなっていきます。

つまり私たちはこの「形優先」か「突き抜け優先か」というバランスを保ちながら造形を調整するしか手は無いです。
両方完璧な対策は不可能です。

今回は形優先で突き抜けを許容することにしました。

また、Blenderの変形とVRChat上での変形は若干突き抜けが気になるポイントが違います。
理想はVRChatに入れて動作確認。すると、この形でもVRChatではほぼOKと分かりました。


とはいえ1回1回アップロードは手間なので…
Unityでアニメーションさせるのが無難な対処法と思います。
↓Unity上でアニメーションさせたモノ。
ちょっと突き抜けてますが気にならないと思います。

アニメーションはMixamoというサイトからとれます。
こちらをUnityで加工すればアバターを動かせます。
↓詳細はこちらで解説。
次はこのような突き抜け確認をするためにUnityにモデルを入れていきます。
3DモデルデータをUnityに再読み込みする
編集したモデルデータをUnityに入れる方法は下記の2つ。
◆既存モデルのデータを上書き(.fbx更新)
・早いし楽
・あとからの編集に弱い(再更新で手間が増える)
◆BlenderファイルをUnityに入れて1から設定
・遅いし大変
・あとからの編集に強い
・BlenderやUnityの設定を勉強できる
どちらを選ぶかはMAやPhys Boneの設定をみて総合的に判断します。
あまりにも特殊な設定が多い場合は「.fbx」置き換えをおすすめします。


自信のUnityや3Dツールの設定力に合わせて選んでください。
fbxを上書きする
調整したデータを「元からあるデータ」に上書き保存します。
この.fbx上書き保存するは事前のデータ整理が必要です。

データ整理で行うことは下記の4つ。
・メッシュの名前
・メッシュの数
・ボーンの名前
・ボーンの数
これを把握するためにBlenderを多重起動。
そして既存のモデルを見ながら調整した方のデータを整理します。


ウエイト転送を行うためにボーン名を変更しました。
これを衣装のボーン名に戻す必要があります。
…そして再度ウエイト転送するならまたボーン名をアバター側に治す必要があります。
このやり取りが面倒なので可能であれば.blendで入れることをおすすめします。
データ整理が終わったら上書きするfbxがあるファイルを開きます。
Unityのプロジェクトから右クリック → エクスプローラーで表示を選択。

そしてBlenderでファイル → エクスポート → fbxを実行。
ここにfbxを上書き保存します。


fbx書き出しは多くの場合で初期設定のままで大丈夫です。
何か問題が起こったらこの記事にコメントを書いてください。
blendで入れてファイルを1から設定する
次はBlenderのファイルを直接Unityに入れる方法を紹介します。

Blenderを多重起動。
Unityに入れる用に衣装の「モデル」と「ボーン」だけを選択して移植します。

Unity用のBlenderファイルを別名で保存。

BlenderファイルをUnityのプロジェクトにドラッグ&ドロップ。

プロジェクトのデータをヒエラルキーにドラッグ&ドロップ。
これでシーン上に浴衣が表示されます。
ただモデルを読み込んだだけではVRChatアバターの衣装として動きません。


ここでなぜマテリアルが表示されたのか。
なぜ別の柄のテクスチャが読み込まれたのかは謎。
(たぶん消えてない一時データなどが悪さをしている)
衣装として動かすための設定は既存prefabを見ながら真似て設定していきます。

主に設定する必要があることは下記。
【インポート設定】
・形状データの扱いに関する「モデル」
・色の設定に関する「マテリアル」
【コンポーネント】
・揺れモノ設定の「Phys Bone」
・動作設定の「Modular Avatar」
…など。
(他は衣装やギミックによっては変わる)
インポート設定はプロジェクト上で「blend」データを選択。
インスペクターの所で操作できます。

コンポーネント設定はヒエラルキーでそれっぽいオプジェクトを選択。

すると選択したオプジェクトにあるコンポーネントを “インスペクター” で確認できます。
ここに「PhysBone」や「Modular Avatar」などが入ってます。


どこに何がどのような形で入ってるかは衣装によって変わります。
ヒエラルキーをクリックして観察するしかないです。
そしたらインポート設定を見ていきます。
まず “パラメーターコピー用” に既存モデルの「fbx」を選択。

するとショップ側が用意した設定が見れます。
インスペクターの右上の鍵マークで表示をロック。

次に編集して読み込んだBlendデータを選択。
画面を分割し横に並べて設定をコピーします。

コピーが終わりましたら「適用」を押して確定。
これでModel設定が完了です。

1つ1つ理解して設定したい方はこちらの記事をご覧ください。
次は「Materials」を選択。
ここに衣装に使われてるMaterialを推測しながら入れます。
プロジェクトでマテリアルを探してドラッグ&ドロップ。
読み込みが終われば「適用」で確定。

次はコンポーネントの設定を行います。
まず衣装をアバター直下の階層に配置。

そしてどこでもいいので既存衣装モデルの「prefab」をヒエラルキーに配置。
prefabのデータを選択。


パラメーターコピー用なのでアバター内じゃなくても良いです。
インスペクターを確認。
ここにあるTransform以外のコンポーネントを1つ1つコピーしていきます。
右側の3つの点 → コンポーネントをコピーを実行。

編集したblendデータの方を選択。
インスペクター → Transformで良いので右側の3つの点を選択。
新しいコンポーネントとして貼り付けでModular Avatar設定を移植します。

同じことを繰り返し、トップ階層にあるModular Avatar設定を移植します。


Modular Avatar関連は “基本的に” 設定を移植するだけで新しい服のボーンなどを参照してくれます。
次はprefab衣装の階層を開きます。
すると中に別の設定が入ってることがあります。
Armatureに「MA Merge Armature」が入ってました。
こちらもコピー。

編集した衣装にある「Armature」にも同じ手順で貼り付けます。


他にもめぼしいModular Avatar設定があればコピーペースト。
空白のオプジェクトに設定されたものならオプジェクトごとコピーペースト。
次はPhys Boneの設定を移植していきます。
今回の衣装は「PB」という空のオプジェクト内に設定が入ってました。

こちらは空白オプジェクトっぽいのでオプジェクトごと移植します。
Ctrl+Cキーでコピー。


空白オプジェクトかどうかの判断はシーンに何も表示されないかで行います。
編集した衣装の階層内にCtrl+Vキーでペースト。

そしてPhys Boneは複製すると “対象となるボーン” がコピー元の衣装になってます。
編集して調整した衣装のボーンは参照されてません。

Root Transformに書かれたボーン名をダブルクリック。
すると参照されてるボーンが強調表示されます。

もちろん旧服のボーンを参照してると動きません。
なので新服の方でボーン階層を開き、同じボーンを探します。


背負ってるの銃はアバター付属のモノです。
消し忘れてました。
気にしないでください。
対応するボーンを見つけたら新服側のオプジェクトを選択。
Phys Boneのインスペクターを開きます。
この状態でヒエラルキーから対応するボーンをドラッグ&ドロップで治します。

他にも「Ignore Transforms」や「コライダー」が設定されてることがあります。
こちらがあれば同じ手順で設定を再現します。

Phys Boneのパラメーターの詳細はこちらで解説。
(1つ1つ理解したい人向け)
これで「新服に移植した設定」が「新服のボーン」を参照するようになりました。

この服には他にもPhysBoneオプジェクトがありました。
なので、これと同じ手順を繰り返します。

次は「Collider」衝突判定の設定です。
この服は最初に「MA Bone Proxy」が設定された階層がありました。

MA Bone Proxyは指定したボーンに対して “追従” を行う処理です。
詳細はこちらで解説。
Modular Avatar関係は移植するだけで新服のボーンを参照してくれます。
なのでプロジェクトで移植した「MA Bone Proxy」は何もしなくて良いです。

そして「MA Bone Proxy」の中に「Collider」が入ってます。
これは衝突判定です。

そして本来はColliderのRoot Transformで追従するボーンを指定しますが… ここでは空白です。
これを空白にして上階層に「MA Bone Proxy」を置くことで移植したら1から設定しなおさなくて良いという構造を実現させてます。


なのでこの衣装の場合は何もしなくて良いです。
別の構造でRoot Transformが設定されてる方は新服の方を設定しなおしてください。
以上が基本的なblendファイルの設定移植です。
伸びたPhys Boneを修正する
新服に設定したPhys Boneの表示を確認します。

「ギズモ表示」を有効化でガイドラインを表示。

そしてまずは旧服、既存衣装のprefabを確認します。

次は移植した方の状態を確認。
おや… 袖のPhys boneが伸びてます。

伸びてる原因はBlenderファイルを直接読み込んだことです。
直接読み込むと末端にボーンが生成されます。(リーフボーンと呼ばれる)
リーフボーンアリ+Endpoints Positionsが「0以外」だとボーンが伸びます。

直すためにPhys Boneを設定したオプジェクトを個別に選択。

Endpoints Positionsを「0」に設定。
これで治ります。

原作に忠実にやるならIgnore Transformsを追加。
リーフボーンを入れて無効化です。


微妙に面倒だと思うのでEndpoints Positionsを「0」にするだけで大丈夫です。
ほかのPhys boneにも同じ設定を行います。

以上が伸びたPhys boneの修正方法です。
細かなデバッグと微調整を繰り返す
なにか設定し忘れたことが無いか見ていきます。
ここからは解説というより私がやったことに記録です。

細かな設定は買った衣装で変わります。
なので “こうしたらいい” と書くことができません。
Phys Boneのコライダー設定を確認。
こちらは修正した衣装を参照してましたのでそのままにします。

そして下から見た所…
メッシュ編集で消したので裏面が消えてました。

こちらはマテリアルを選択。

裏面カリングをオフにして対処。

表示されました。

やる方は2ndカラーまで設定。

色を少し暗くすると裏面っぽくなります。

今回の衣装には付属パーツが付いてました。

こちらはヒエラルキーでコピー。

ペーストで移植。

他にも足したいアクセサリーなどがあれば足します。


花飾りなど増えましたが気にしない。
ウチワにギミックがあったので動作テストを行います。

ギミックは「Gesture Manager」を使うとUnity上で確認できます。

Gesture Managerの導入や使い方はこちらで解説。
ギミックも無事動きました。
(動かない場合はModular Avatarなどの設定を見直します)

あとアバターのトップ階層にMA Mesh Settingsを入れておくと表示上の誤作動を減らせます。

やる方はこちらの設定まで行います。
MA Mesh Settingsで「Bounds範囲」と「Anchor Override」を適切に設定。
(詳細は先ほどの記事を見てください)

これで細かな調整が完了です。

Unity上でキャラクターを動かして様子を見る
次はキャラクターを動かして動作確認します。

アニメーションはMixamoというサイトから取れます。
入手方法はこちらで解説。
キャラクターのアニメーションデータが手に入ったらプロジェクトを右クリック。
作成 → アニメーションコントローラを作ります。

アニメーションコントローラーの詳細はこちらで解説。
作ったアニメーションコントローラーをアバタートップ階層にドラッグ&ドロップ。

プロジェクト上のアニメーションコントローラーをダブルクリック開きます。
そしてアニメーションデータをドラッグ&ドロップで追加。
配線などを行い動くようにします。

1つ目の要素は自動配線されます。
2つ目以降は配線は要素を右クリック。
遷移を作成で再生後にどこに行くかを指定します。

線の条件分岐は無しで大丈夫です。

この状態で再生ボタンを押します。

するとキャラが動きます。
そして突き抜けを確認できます。

以上でUnity上でキャラを動かした動作確認が完了です。
VRChatにアップロード+微調整
最後はVRChatにアバターを入れて動作を見ます。
だいたい良い感じですが… たいてい何か見つかります。

今回は肘の部分が突き抜けてます。

これはひじ部分の布に素体のウエイト転送を使ってないのが原因です。
が… ひじの布にウエイト転送を使うと袖のウエイトが崩れます。

なので、最後は体のシェイプキーを絞って対処することにしました。

Boothで売る用のモデルではやらない方が良いです。
ただ個人で使う場合は手軽さを優先してシェイプキー絞りを使って良いと思います。
商品として作ってる場合は下記の2つで治すことをおすすめします。
・スカルプトの工程まで戻り造形を調整しなおす
・ウエイトを手動で塗りなおす
力業の体メッシュのシェイプキー絞り
Unityに入れたモデルから「素体」のメッシュを選択。

インスペクターの「Blend Shapes」よりシェイプキーを確認。
突き抜けてる所に該当しそうなパーツが絞れないか確認。
行けそうなら値を上げて形を調整。

この状態で全体を表示。
問題がなければ突き抜け対策が完了。

おまけ:結局腕絞るなら他も絞っても一緒かと思い見えないところはすべて絞りました。
こっちの方が事故防止的には強いです。

ちなみにシェイプキーのアニメーション+ギミックを作れば…
浴衣を脱いだら体の絞りを解除するみたいなこともできます。

おまけ:結局体の内側メッシュを絞るとV感的にダメだったので調整しなおしました。
スカルプトでIキーの「Inflateブラシ」で肘部分の布を膨らまして調整。
下着もモデルを読み込みなおして1から設定。
浴衣のスカート的な部分(?)の面の裏側が背面表示をONにして直しましたが…
袖部分で裏の面が突き抜けてしまいました。
なので裏面表示を無くし、スカート的な部分は内側の面を張りなおして調整しました。
…みたいな調整を各自の状態に合わせてやってください。
これで非対応衣装の改編が完了です。
まとめ
今回はBlenderとUnityだけで非対応衣装を着せる方法を紹介しました。
・衣装データの構造はBlenderで編集する
・編集モード操作でボーンの数や形を合わせる
・スカルプト操作でメッシュの形を体に合わせる
・可能であれば素体のウエイトを転送してウエイトを塗りなおす
・Blenderで調整したデータをUnityに入れてVRChatで動く設定をする
・揺れモノボーンに関する設定はPhys Boneコンポーネントで調整
・ギミックや動作に関する設定はModular Avatarなどで設定
・あとはデバッグと調整の繰り返し
・最終的な力技として体を絞るシェイプキーがあれば使って突き抜け対策もできる
また他にもBlenderやUnityについて解説してます。
ぜひ、こちらもご覧ください。
コメント