「UE4」と「VRM」で検索して情報が出てくるようQiitaに書いてみます。
2018/12/08 追記:最新版は手順が変わっています
導入の際はVRM4U置き場より、最新の手順をご確認ください。
この記事よりも機能が増えています。
やったこと
UnrealEngine4のVRMインポーターとして機能する VRM4Uというプラグインを作成しました。
https://github.com/ruyo/VRM4U
利用するには、DownloadZIPをクリックし、MyGame/Plugins/VRM4U/ となるように配置してください。
エディタを起動し、コンテンツブラウザ上にVRMファイルをドラッグ&ドロップすれば動作します。
インポートしてみた例
VRoidStudio v0.2.13で出力したもの https://vroid.pixiv.net/ |
---|
MToonはUE4の素のマテリアルになります。MorphTarget読めます |
ニコニ立体ちゃん (VRM) http://3d.nicovideo.jp/works/td32797 |
---|
UnlitTextureはUnlitのマテリアルになります。揺れ物設定はPhysicsAssetに展開します |
仕組み
VRM読み込みはAssimpのglTF対応をベースにしています。
※現在(2018/10月)のAssimpはglTFのboneと頂点ウェイトの読み込みに未対応です。VRM拡張も未対応です。
なので対応しました。VRMには不要なボーンアニメーションも一部対応しました。https://github.com/ruyo/Assimp
機会あればソースを整頓して本家にパッチを提供したいです。
…しかし今はVRMが優先です。
少し改造すればAssimpで対応している大半のモデルを、UE4にインポートしたり動的に読むことができるでしょう。夢が膨らみます。
…しかし今はVRMが優先です。
仮ながらAssimpはglTFの出力に対応しているので、そこそこ改造すればUE4上で設定したパラメータをVRMファイルに出力することもできるでしょう。
…しかし今はVRM読み込みが優先です。
インポートのメイン処理は、UE4ランタイム側のモジュールで行っています。
これは動的(ゲームビルドで動作する)なモデル読み込みを前提としているからです。
今出来ることと制限
- スキンモデル(メッシュと骨)の読み込み
- MorphTargetの読み込み(いわゆるブレンドシェイプ)
- ※現状では顔の表情を意図通りに制御するのは難しいでしょう。VRMのBlendShapeGroupへの対応が必要そうです。
- テクスチャの読み込み(今のところPNGのみ)
- マスク、半透明マテリアルの作成と割り当て
- UnlitTextureシェーダ:Unlitのマテリアルになります。
- MToonシェーダ:UE4の素の物理シェーディングなマテリアルになります。VRMをglTFビューワで見た時とほぼ同じ結果です
- 揺れ物の読み込み
- コリジョンは正確だと思います
- ※揺れ方は適当です (パラメータを適当に決め打ちしています)
今は出来ないけど将来的に解決したいこと
- 1つのAnimBPを全てのVRMで適用できるようにする
- UE4の思想と非常に相性が悪い… ようにみえます。しかし、これができて初めて「UE4でVRMを読めた」と言えるのはないかと。
- ベースの共通Skeletonの姿勢をコピーするよう実装すればいける予感はしています…
- Gameビルドした環境で 動的にモデルを読めるようにする
- UE4の思想と非常に相性が悪い… ようにみえます。
- 現在はEditorビルドでしか読めません。MorphTargetを読み込む時に行き詰まったので、一旦Gameビルドを諦めました。
- ※裏を返すとMorphTargetを諦めれば、Gameビルドで動的に読むことは おそらく可能です。
- 日本語の骨名に対応する
- 現在はスキニング結果がおかしくなります。最悪エディタが落ちます。
- 動的に読む限りでは、勝手にリネームしても影響は少ないと考えています。
- MMDをVRMにコンバートしたファイルでよく見られます。
出来ないこと
- Unityでの見た目、挙動を完全再現すること
目標
UE4でVRoidHubのようなサービスと連携できるようなところまで行きたい
けど挫けてVRMインポーターで終わるかもしれません(弱気
別問題として、このプラグインがUE4のバージョンアップに追従できるか、かなり不安が残ります。
VTuberのためのツールとしては…正直オススメしません。応援はします!
要望、参考情報、コメントなどありましたらお知らせください。
さいごに
(自分語りなので読みたい方だけ)
Webで情報を公開している方へ 勝手ながら感謝の意を述べます。ありがとうございます。
私個人もUE4でVRMを手軽に扱えない状況に、長らく歯がゆい思いをしていました。
ふと思い立って、えいやっと実装し、公開してしまいました。
UE4とVRMが取り巻く環境が今後どう変化するかわかりませんが、なんらかの足しになれば幸いです。
10/13 ちょっと編集
表記を gltf->glTF、assimp->Assimpにした。言葉足らずなのを修正。