見出し画像

PhysCopyでfbx素体にPB移植

VRChat用アバターをBlenderでfbxから改変できれば大変便利ですが、ここで問題となってくるのがPhysBone(以下PB)。BoneといいつつUnity側の機能なのでfbxからインポートした場合PB設定は皆無になります
アバター改変の場合、非改変箇所のPBはできるだけ使いまわしたい。というわけで見つけた、せぃが君のおみせ屋さん製作の"PhysCopy"というツールを試してみました

PhysCopyのダウンロードと導入

上記リンクからダウンロードできます
UnityPackageなのでインストールはUnity起動中にダブルクリックするだけ

デフォ桔梗ちゃんのfbxとPB設定済みで試す

PhysCopyを実際にやってみる

  • fbxとPBの桔梗ちゃんをそれぞれSceneに配置する

  • メニューから USUAJI_tool → PhysCopyを 選択

  • コピー元にPB、コピー先にfbx桔梗ちゃんを選ぶ

エラー対応:存在しないオブジェクトと参照先修正

基本的にはこれでコピーが完了しますが、今回はエラーメッセージが表示されました。過去の記事から読んでいる人にはお馴染の Collider_plane と Collider_outside です。ちょっと厄介なことになったので説明しておきます

この二つはPB側にだけ存在するボーン(オブジェクト?)なので、fbx側にコピーしようとしても「存在しない場所にPB設定をコピーしようとしている」扱いになって処理をスキップされてしまいます
しかし二つを当たり判定として参照する髪側のボーンはfbx側にも存在しています。そこでPhysCopyはこれらのボーンにつくPBの参照先をコピー元のPB桔梗ちゃんのままにしてコピーした、というわけです
実際にどうなるかというと、向かって左側にいるfbx桔梗ちゃんの髪が、右側にいるPB桔梗ちゃんの動きに連動してしまうので、修正していきます

  • fbx側を右クリック → Unpack Prefab で編集可能にする

  • PB側の Collider_plane と Collider_outside をコピーし、ヒエラルキーでfbx側の同階層にペーストする

  • コピー元の座標でペーストされるので、インスペクタで位置修正

  • 参照しているボーンを調べるため、元となるPB版のほうのオブジェクトを選びインスペクタのメニューから Find References~ を選択

  • 参照しているボーンが表示されるのでメモっておく

  • 参照しているボーンの Colliders の参照先をfbx側に変更

厳密に見ればごく小さなレベルで値が違っていたりしますが、概ね問題ないレベルでPBコピーできました。便利です

応用:fbx素体に頭部のPBのみ移植する

fbx桔梗ちゃんに頭部のPBだけ移植してみる

改変で頭を挿げ替えることがあると思うのでやってみました。こちらは例の Collider_plane 等が含まれないのでエラー無しで終わります
このときHipsなど、頭部の位置に関わるボーンのツリーは残しておいたほうが楽だと思います。コンポーネントを空にしておけば何もコピーされないので残っていても大丈夫です
一応最後のほうに Humanoid Rig を構成するボーンの探し方を画像だけ載せておきます(今回の例では腕などは消えても良いのでこれらを絶対残さなければいけないわけでは無いです)

  • (必要ならfbxの Humanoid Rig 設定を確認し主要ボーンを確認)

  • PB側の 頭部 + 主要ボーン だけ残して他を削除

  • 残った主要ボーンをインスペクタで見て、不要コンポーネントも削除

  • PB側が頭部だけの状態でPhysCopyを実行

補足:Humanoid Rig の主要ボーン名確認方法

以上で終了です。お疲れ様でした
これでBlenderでのアバター改変のときの心配事が少し減りそうです

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