34
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UE4でVRMをインポートできるようにしたけど、まだ先は長そうです

Last updated at Posted at 2018-10-11

「UE4」と「VRM」で検索して情報が出てくるようQiitaに書いてみます。

2018/12/08 追記:最新版は手順が変わっています

導入の際はVRM4U置き場より、最新の手順をご確認ください。
この記事よりも機能が増えています。

やったこと

UnrealEngine4のVRMインポーターとして機能する VRM4Uというプラグインを作成しました。
https://github.com/ruyo/VRM4U

利用するには、DownloadZIPをクリックし、MyGame/Plugins/VRM4U/ となるように配置してください。
エディタを起動し、コンテンツブラウザ上にVRMファイルをドラッグ&ドロップすれば動作します。

image.png

インポートしてみた例

VRoidStudio v0.2.13で出力したもの https://vroid.pixiv.net/
image.png
MToonはUE4の素のマテリアルになります。MorphTarget読めます
ニコニ立体ちゃん (VRM) http://3d.nicovideo.jp/works/td32797
image.png
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にした。言葉足らずなのを修正。

34
12
11

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?