見出し画像

【VRC】Blender2.93からUnityに持っていく+Unity側独自の設定(ダイナミックボーンとかPhysBoneとか)の設定を引っ越しする

-----この記事について-----

この記事はBlender2.93(またはBlender2.8等で)アレコレ(改変・改造)を行ったモデルをFBXに出力し、Unityにインポートし、改変前等のアバターからダイナミックボーンとかの設定を引っ越しする手順です。

Blenderとなんとか和解して一時金(FBX)を受け取ったはいいものの、そのァイルをUnityにインポートしてアバターとしての設定を再設定しなおすまでの工程には意外とトラップがあったりコツを知らないととんでもなく面倒なことが多かったりします。
主にダイナミックボーン等です。

今回はBlenderに取り込んだアバターをFBXに出力してUnityにインポートし、Unity側でセットアップする情報(主にダイナミックボーンなど)の設定をほどほどラクに設定しなおす方法を説明します。


画像1

今回のサンプルはティコちゃん(https://booth.pm/ja/items/3123433)とします。


Step0:アドオンの用意

CopyComponentsByRegex
・正規表現でマッチするコンポーネントを同じ場所にコピーしてくれるUnityエディタ拡張です。
 今はとにかく「キーワードに該当する奴をいい感じにコピーしてくれる便利な奴」ぐらいに考えておいてください。


まずは上記ページでファイルをダウンロードしてください。

画像3

次にUnityを開いて、「Project」タブを右クリックして「Show in Explorer」をクリックしてください


画像4

そうすると多分エクスプローラーが立ち上がって「Assets」フォルダを選択した状態、あるいは「Assets」フォルダを開いた状態になっているはずです。

画像5

この「Assets」フォルダに先程DLしたファイル内にある「Editor」をコピーします。

画像6

Unity画面に戻ってみましょう。

画像7

何か一瞬メッセージ欄がチラっと見えたりしますが問題は無いです。

Hierarchy」を右クリックしてみてください。

画像8

すると右クリックメニューの中に「Copy Components...」というメニューが追加されているはずです。
これで拡張の導入は完了です。



Step1:アバターのスケールを整える-----

ひとまずBlenderに読み込んだティコちゃんを出力してみましょう。

…の前に

画像29

「オブジェクトモード」の状態で「Armature」を選択してみてください。

画像30

よくみるとスケールが「0.01」になっていますね。

しかも、他のメッシュを見てみると

画像31

「回転」が90°になったりしてます。

このまま出力をすると、あとで教える方法(拡張を使ってダイナミックボーンを一括コピー)を使った際に「ダイナミックボーンの当たり判定(白い丸とか黄色い丸)が異常に小さくなったり」「設定は同じはずなのに揺れ方がおかしくなったり」します。

画像35

↑スケールを直さないままティコちゃんを出力してダイナミックボーン並びにコライダーをコピーするとこうなります(写真右側)。



まったく同じ設定で同じ個所にダイナミックボーンとコライダーが設定されているのにコライダーが見えなくなっていますね。

画像36


よ~~~く見てみるとコライダーはあるんですが物凄く小さくなっています。
これだとまたコライダーの半径を調整したりする必要が出てきたりして面倒です。



ので、Armatureを含めた各メッシュが初期値(位置が全部0、回転が0、スケールがx1)になるようにしておきます。

画像32


↑これが初期値です


画像33

各メッシュと「Armature」を選択します。

画像34

「オブジェクト」の「適用」->「全トランスフォーム」を選択します。

画像37

これでOKです。


Step2:BlenderからFBXとして出力-----

ではBlenderから出力しましょう。

画像8

「Armature」を含む全部を選んで

画像9

「エクスポート」->「FBX」を選択


画像10

エクスポート設定は画像のようにすればOK………のハズです。


※私は今のところこの出力設定で問題は起きてませんが、もしかしたら正しくない設定があるかもしれないのでそこはご了承ください…


パスモード:自動
パッチモード:オフ

内容:
 Limit to:「選択したオブジェクト」を選択
 オブジェクトタイプ:エンプティ、アーマチュア、メッシュ、その他
 カスタムプロパティ:選択無し

トランスフォーム:
 スケール:1
 スケールを適用:すべてFBX
 
前方:-Zが前方
 
上:Yが上
 
単位を適用:選択無し
 空間トランスフォームを使用:選択
 
トランスフォームを適用:選択無し

ジオメトリ:
 スムージング:法線のみ
 
他:全部選択無し

アーマチュア:
 プライマリボーン軸:Y軸
 セカンダリボーン軸:X軸
 アーマチュアFBXノード…:Null
 デフォームボーンのみ:選択無し
 
リーフボーン追加:選択無し

アニメーションをベイク:選択無し

画像11

これでFBXが出力できました。


Step2:FBXをUnityにインポート-----

画像12

Unityの「Project」を開いてどこかいい感じの場所にFBXをドラッグアンドドロップしましょう。
解りやすくするために今回はデフォルトのティコちゃんのFBXが置かれているフォルダとします。

Step3:FBXのインポート設定を整える-----

デフォルトのインポート設定だとシェイプキーを使用したときに法線(顔の影の付き方)がおかしくなったり、アバターのポリゴン数が3桁万(⁉)と表示されたりするので修正しましょう。

画像13

「Project」でインポートしたFBXを選択すると、「Inspector」にそのFBXをインポートする際の設定が出てきます。

画像14

Model」タブの

・「Read/Write Enabled」にチェックを入れる
・「Blend Shape Normals」を「None」にする
を必ず行ってください。


画像15

他にもデフォルトのFBXと設定が異なる箇所があった場合はここも合わせたほうがイイ…かもしれません。たぶん。


画像16

設定が完了したら「Apply」を押します。


画像17

次は「Rig」を選択します。
デフォルトの設定だとFBXはHumanoid(人型)と認知されないので修正します。

画像18

Animation Type」を「Humanoid」にして「Apply」を押してください。

画像19

Configure」が押せるようになるので押してください。


画像20

もしかしたらアバターによっては正しくボーンが配置されてなかったりしますが、そこは改変前のFBXをConfigureしてみてにらめっこしてみてください。

ティコちゃんの場合は特にエラーは起きませんが「Jaw」に前髪のボーンが登録されてます。
Avatar3.0だとどうなるかはわかりませんが、2.0だと髪の毛が喋り出すのでとりあえずここはNoneにしておきましょう。

画像21

設定が完了したら「Done」を押します。
これでインポート時の設定は大体修正完了です。


Step4:マテリアルを設定しなおす-----

画像22

まずはすでにダイナミックボーンなどの設定が完了しているアバターが存在しているシーンを開きます。

そのシーンの「Hierarchy」にインポートしたFBXをドラッグアンドドロップします。


画像23

ちょっと見づらいので設定済みのアバターをずらします。
まずはマテリアルをコピーしていきます。

画像24

設定済みアバターの方のメッシュを選択し、「Inspector」に表示される「Materials」のそれぞれの奴をクリックしてみましょう。

画像25

するとそのマテリアルがどこにあるのかが「Project」欄で黄色くハイライトされます。

画像26


これを利用してインポートしたFBXの「Materials」を設定済みと同じようにドラッグアンドドロップしていって合わせていきます。

画像27

設定済みアバターと同じ発色になればOKです。
引き続き、他のメッシュも同じように設定しましょう。


画像28

Step5:CopyComponentsByRegexを利用して改変前のPrefab(または設定済みのアバター)からダイナミックボーンを引き継ぐ-----

今の状態だとマテリアル設定はコピーできたものの肝心のダイナミックボーンはコピーできていません。

マテリアルのようにダイナミックボーンを手作業で再設定するのは中々大変です。
そこでいよいよStep0で導入した拡張を利用します。

画像38

設定済みのアバターを選択して右クリックしてください。

画像39

Copy Components By Regex」をクリックします。

画像40

するとこんな感じでウィンドウが出てきます。

ひとまず下記の設定に合わせて「Copy」を押してください。

画像41

正規表現:「Dyn
コピー先に同じコンポーネントがあったら削除
コピー先にオブジェクトがなかったらオブジェクトをコピー」を選択

画像42

すると「コピー中のオブジェクト」が設定済みアバターの名前になっているはずなので、今度はインポートしたアバターを選択します。

画像43

その状態で「Paste」を押してください。

画像44

これでインポートしたFBXにダイナミックボーンが設定できました。

あとはVRC用のセッティングをアレコレしたりするだけです。




Step5-1:Step5は何をやったのか-----

正規表現を「Dyn」として「Copy」を押すと、


Unity「指定したアバター(tycho)のさ、「Dyn」って文字を含むコンポーネント一覧をコピーしておくれ」
エディタ「ワカリマシタ」

画像45

エディタ「『Dynamic Bone』と『Dynamic Bone Collider』が一致してたのでコピーしておきました」
Unity「じゃあ今度は指定したアバター(tycho_blog)にそれ張り付けておいて、オブジェクトがなかったらコピーでいいよ」
エディタ「ワカリマシタ」

画像46

エディタ「よく見たら「DB」と「Anchor target」っていうオブジェクトがないな、コピーしておくか」

画像47

エディタ「えっと、あとは各部のボーンに該当のコンポーネント(DynamicBone,DynamicBoneCollider)を張り付けていって…っと」

画像48

エディタ「よしできた」


だいたいこんな感じです (たぶん)。


とにかくこのエディタが優秀なのは一括ですべてのダイナミックボーンをコピーできるだけでなく、普通にコピーしたら元の設定をそのまま引き継ぐだけの所をいい感じにコピー先に合わせてくれるところです。

画像49

例えば上記のDynamicBoneコンポーネントを普通にコピーして貼り付けると、「Root」と「Colliders」に指定されている値は元のアバターの「Hair BackB」「Chest」のままなんですが、
この拡張でコピーして貼り付けると張り付けた先の「HairBackB」「Chest」に置換されます


要は全てのコンポーネントを一個ずつコピーしてRootやCollidersをコピー先のアバターの対称のボーンにして……という気の遠くなる手作業が一発で終わります。
超便利。

コピー先に同じコンポーネントがあったら削除」は、チェックを入れておくと貼り付け先にある同じコンポーネントを消したうえで貼りなおしてくれます
Pasteを連打しちゃって全てのダイナミックコンポーネントが二つ登録されちゃって……という大惨事が回避できます。

ちなみに、「コピー先にオブジェクトがなかったらオブジェクトをコピー」をチェックしておくと、コピー対象のコンポーネントだけじゃなくて貼り付け先に無いオブジェクトも丸ごとコピーしてくれるので例えばコピー対象のアバターに首輪や指輪を付けていた場合、貼り付け先にもそれを張り付けてくれます。
そこら辺の再設定の手間も省けるので超便利。

Step6:オマケ:Bound(可視範囲)・Anchor Overrideを統一-----

AnchorOverrideとBoundは統一しておいた方がライティング方面で何かと無難です。
正しい方法かはわかりませんが現状私が改変をするときにやっている設定を書きます。

画像50

アバターの首(Neck)を選択し、右クリックで「CreateEmpty」を選択

画像51

対象のメッシュを全選択

画像52

先程作成した「GameObject」を「Anchor Override」にドラッグ

画像53

「Bounds」の「Center」「Extent」を下記の通りにしてください。

画像54

画像55

画像56

白い四角(Bounds)がアバター全体を覆う程度の大きさになっていればOKです


5/14追記(PhysBoneの件):

いつの間にか一年遅れの「夏」が来ましたね。
ダイナミックボーンの代わりとなるPhysBoneに関しても上記のプラグインでコピーできます。

正規表現を「Phys」としておけばPhysBoneコンポーネント関連を丸ごとコピー出来ます。

画像57


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