まだ死んでない

なんか作ったり作らなかったりしたいです。

ユニティちゃんをVRMにしてBlenderに読み込む

概要
ユニティちゃんをBlenderで読み込むのは顔周りのメッシュが問題となり、結構面倒だったりします。既に色々な方法が模索され、公開されていますが、ここであえてVRM経由でBlenderに読み込む方法をご紹介したいと思います。

準備
使用ツールとバージョンです。
Unity(2018.4.0f1)
UniVRM(0.51)
Blender(2.79)
VRM importer(0.5)

手順
①Unityでユニティちゃんのunitypackageをインポート
②展開されたfbxからUniVRMでVRMをエクスポート
BlenderVRM importerでVRMをインポート

問題
前述の手順でインポートすると以下のようになります。
ちなみにテクスチャは、3Dビューのシェーディングをマテリアルにすると表示されます。
以下はMToonの場合です。

現象としては「顔周りのメッシュのズレ」と「ボーン構造の不具合」です。
以下にこの問題の対策を記載します。

対策
①Character1_Head以下のSkinned Mesh Rendererを持つオブジェクトのTransformのPositionを0,0,0に設定(ダミーの親オブジェクトでオフセット)

具体的な手順は以下を参考にしてください。
①ー1対象オブジェクトを複製
①ー2複製したオブジェクトの(1)を削除(同名の方が都合が良いです※)
①ー3複製したオブジェクトが持つSkinned Mesh Rendererを削除
①ー4対象オブジェクトを複製したオブジェクトの子にする
Blenderで読み込んだ際にウェイトペイントが適用された状態になります。
これで「顔周りのメッシュのズレ」の対策とします。


②mesh_root以下のSkinned Mesh RendererのRoot BoneをCharacter1_Referenceに変更

これで「ボーン構造の不具合」の対策とします。

結果

顔周りのメッシュが正しい位置に表示され、ボーン構造も正常であることが確認できます。
確認のためポーズモードで腕と首を曲げています。

備考
BlenderからFBXでエクスポートすればUnityでも表示できることを確認しています。

ただし、問題と対策はUniVRMとVRM importerのバージョンに深く依存すると思われるため、バージョンが異なればこの通りにはならないことが予想されます。ご注意ください。

この記事の方法で生成したVRMは以下からDLできます。
https://1drv.ms/u/s!Ass7Jg1DXnrDgeZidF7tlFIwUHbvzg

参考
© Unity Technologies Japan/UCL
https://icyp.github.io/

https://www.cg-method.com/entry/blender-import-vrm/
http://bluebirdofoz.hatenablog.com/entry/2019/04/25/091709