UnityでキャプチャしたVRMモデルのアニメーションをUE4で使う
こんにちは!Midoです!
この度、ありがたいことにMacrossΔワルキューレや魔法科高校の劣等生などの楽曲で有名な姉田ウ夢ヤさん原案のプロジェクト「シンクロ」にて映像制作を担当させていただきました。
その「Episode 0」の制作にあたり、VRoidで作成されたVRMモデルを使う機会がありました。
今回の記事では、Unity + VIVEトラッカー作成されたアニメーションをUnreal Engine 4 (以下、UE4)で使いたいという場面があったので、その方法についてまとめていきます!
対象となる読者
この記事は次のような方を想定して書いています。
1. VRoidで作成されたモデルを使用しているVtuberの方
2. VRoidモデルを使ってUE4で映像を制作したい方
3. Unityで制作したアニメーションをUE4で使用したい方
どんなものが作れるのか?
こんな感じのが作れます。
いい感じじゃないですか…!
なぜUE4を使うのか?
本記事を執筆している時点の最新バージョンは4.26.1で、Episode 0もこのバージョンで制作をしたので、それを踏まえた上で利点を記載していくと、
・ボリューメトリッククラウドでリアルな雲が作れる(無料!)
・Waterプラグインで簡単に海や川を作れる(無料!!)
・Quixel Megascansのアセットが使い放題(無料!!!)
なんと、無料で高品質な機能やアセットを使って舞台を作れるんですね。
しかも商用利用もできるという…(ただしアカウントの規約はちゃんと読もう!)
「どんなのが作れるの?」で見せているアニメーションもこれらをフル活用しています。
それぞれのリンクはこちら↓
必要なもの
当然ですがUnityとUE4は必要なので、インストールをしていない方は以下からインストールをしてください。
この記事を執筆している2021年3月現在では、UnityはUnity Hubで、UE4はEpic Games Launcherで、ソフトウェアのバージョンやプロジェクトの管理をします。
また、他にも以下のプラグインなどが必要ですので準備をしてください。
(キャプチャ済みのデータを受け取って使用したというだけのため、アニメーションキャプチャ周りの説明が曖昧ですみません…)
1. VIVEなどのモーションキャプチャができるVR機器
アニメーションのキャプチャに使用します。
根性でアニメーションのキーフレームをポチポチ打つなどそういう人には必要ないかもしれませんが、今回の制作ではVIVEでキャプチャしたアニメーションを使用しているという前提で読んでいただければと思います。
2. VeryAnimation
今回の方法で一番重要なプラグインです。
今回扱うプラグイン類の中では唯一有料ですが、さほど高価ではない上にとても使いやすいです。
3. EVMC4U
VRM形式のモデルをVR機器で動かすのに使います。
4. UniVRM
UnityでVRMモデルを簡単に読みこむのに使います。
5. Autodesk FBX Converter
VeryAnimationから出力したデータをUE4で使えるデータ形式にするのに必要です。
6. VRM4U
UE4でVRMモデルを簡単に読みこむのに使います。
以上が必要なものです。
キャプチャ環境などによってはUnityにもう少し色々入れる必要があるかもしれませんが、今回の主題は「Unity上でキャプチャしたデータをUE4で使う」なので、そこは省かせてください。
大まかな作業工程
次は今回の方法の大まかな作業工程についてです。
1. UnityでVRMモデルを読みこむ
2. VIVEなどのキャプチャ用機器を使ってUnity上でアニメーションを作成
3. VeryAnimationを使ってDAE形式のファイルを出力
4. Autodesk FBX ConverterでDAE形式のファイルをFBX形式に変換
5. UE4でFBXのアニメーションデータを読み込む
6. UE4でVRMモデルを読みこむ
7. UE4でアニメーションのリターゲットをする
8. シーンを作成する
そこそこ工程が多いですね…
次からは、それぞれの工程の詳細と注意点などを書いていきます。
1. UnityでVRMモデルを読みこむ
まずはUnityのプロジェクトを用意します。
Unity Hubからプロジェクトを新規作成します。
新しいプロジェクトを作成するウィンドウが出てきたら、プロジェクト名と保存先を決めて、テンプレートは3Dにして作成をクリックします。
空のプロジェクトが開いたら、
Assets→Import Package→Custom Package
からUniVRMのUnity Packageをインポートします。
このパッケージをインポートすることで、UnityにVRM形式のモデルを簡単にインポートすることができるようになります。
パッケージを選択すると、Import Unity Packageというウィンドウが開くので、そのまま右下のImportボタンをクリックしてください。
Assets直下にVRM、VRMShaders、UniGLTFというフォルダーが作られます。
インポートをすると、.vrm形式のモデルをドラッグ&ドロップで簡単にインポートできます。
インポートをするとこのように複数のフォルダとVRMモデルが生成されます。
インポートする際にはAssets直下にフォルダを作成して、その中に.vrmのファイルをドラッグ&ドロップした方が管理がしやすいです。
2. Unity上でアニメーションを作成
Unity上でアニメーションを作成します。
今後Very Animatioinを使用するので、Unityにインポートしておくようにしてください。
「シンクロ」ではアニメーションの作成にVIVE Pro Eyeを使用しているようです。
私自身、いただいたデータを使っているだけなのもありキャプチャ関連には詳しくないので、Unityと外部機器を用いてキャプチャする方法については他の記事をあたっていただければと思います。
3. Very Animationを使ってDAE形式のファイルを出力
アニメーションのキャプチャが終わったらVery Animationの出番です!
Unity上には、この三角形のアイコンをしたアニメーションのファイルがあることを前提としてこれからの話を進めていきます。
まずはVery Animationのタブを表示させましょう!
Window→Very Animation→Main
からVery Animationのタブを出します。
Very AnimationではAnimation Windowを開いていないと何もでてきません。
次に、VRMモデルをシーンに追加してアニメーションを適用します。
アニメーションを適用すると、アニメーションコントローラが自動で生成されます。
この画像の一番左の四角形の合わさったようなアイコンがそれです。
続いて、ヒエラルキーのVRMモデルを選択した状態で、Very AnimationのFocus Animation Windowをクリックします。
Very Animationの表示がこのように変わります。
この表示になったらEdit Animationをクリックしてください。
Edit Animationをクリックするとこのような画面になります!
ここまでで、ようやくDAEファイルの出力をする準備ができました。
まずは、Very AnimationのToolsをCopyからExportに変更します。
Export画面では必ずFoot IKのチェックが外れていることを確認します。
確認をしたらExportをクリックしてください。
指定した保存先に
1. VRMモデルの名前のdaeファイル
2. @の付いたdaeファイル
以上の2つが出力されています。
(ほかにも画像ファイルが出力されますが気にしないでください。)
出力が終わったらUnityを閉じます。
4. Autodesk FBX ConverterでDAE形式のファイルをFBX形式に変換
次はFBX Converterを使用します。
FBX Converterを起動すると、このようなウィンドウが開きます。
真ん中のウィンドウが開いていない場合は、左上のAdd FBX Converterから開いてください。
続いて、先ほど出力した2つのDAEファイルを左側のSource File欄へドラッグ&ドロップしてください。この画像のような状態になったら大丈夫です。
右側のDestination filesにあるChange destination folderから変換したファイルの保存先を指定したら、他には設定を変えずにConvertをクリックします。
これでDAE形式のファイルをFBX形式に変換できました!
指定した保存先に以上の2つのファイルが出力されていることを確認してください。
確認できたら、FBX Converterを閉じて大丈夫です!
5. UE4でFBXのアニメーションデータを読み込む
ついにUE4での作業に移ります!
まずはUE4のプロジェクトを作成します。このプロジェクトでアニメーションのためのシーンを作成していきます。
Epic Games LauncherのライブラリからEngineバージョンを指定してUE4のエディタを起動します。
まだUE4のエディタをインストールしていない場合は、Engineバージョンという文字の横の+マークからバージョンを選択してインストールしてください。
今回はバージョン4.26.1で進めていきます。
エディタを起動すると、プロジェクトのカテゴリを選ぶ画面になります。
私はUE4を映像制作のために使用することがほとんどですので、基本的には「映画、テレビ、ライブイベント」という項目を選択して先に進みます。
続くテンプレート選択の画面では、Blankを選択します。
プロジェクトを保存するフォルダはちゃんと自分が分かる場所に変更してください!後でそのフォルダを開く必要が出てきます。
スターターコンテンツの有無とレイトレーシングの有無は自由ですが、今回はスターターコンテンツ有り、レイトレーシング無しで進めています。
これで最小限の機能が入ったプロジェクトが指定した場所に作成されます。
===
次に、エディタのコンテンツブラウザの中にいくつかフォルダを作成しておきます。
今回は次の3つを作成しました!
1. FBXfile
アニメーションの入ったFBXファイルを入れるためのフォルダです。
2. Retarget Animation
FBXのアニメーションをVRMモデルにリターゲットしたものを入れるフォルダです。
3. VRMmodel
VRMモデルを入れるためのフォルダです。
===
続いて、FBXファイルをインポートしていきます。
FBXファイルのインポートは標準でサポートされているのでご心配なく…
まずはFBX Converterでコンバートした2つのうち、@のない方をインポートします。
これを先程作ったFBXfileというフォルダ内にドラッグ&ドロップします。
すると、FBXインポートオプションが自動で開きますので、Import Meshにチェックが入っていることを確認します。
続けて、メッシュという項目の下向きの三角形のアイコンをクリックして、メッシュの設定項目の表示を拡張します。
追加で表示された設定項目の中から、Import Morph Targetsという項目を探してチェックをつけます。
ここまでが完了したらインポートをクリックして先に進んでください!
インポートが完了すると、こんな感じでいろいろなファイルが追加されます。
その中から、{VRMモデルの名前}_Skeletonとなっているものをダブルクリックして開いてください。
新しいウィンドウが開いたら、右側にあるアセットに適用(Apply Asset)というボタンをクリックします。
その後で、保存をしてこのウィンドウを閉じてください。
ウィンドウを閉じたら、あとで使用することになるのでリグを作成しておきます。
先程開いていたスケルトンのファイルを右クリックして、「右クリックメニュー→作成する→リグを作成」をしてください。
ボーンをマージするというウィンドウが出てきますが、そのままOKをクリックしてください。
すると、末尾にRigとついたファイルが作られます。
===
次に@がついている方のFBXファイルをインポートしていきます。
@のついていないほうのFBXファイルをインポートしたのと同じフォルダに、この@付きのファイルをインポートします。
同様にFBXインポートオプションが出てきますので、Import Meshのチェックを外してインポートをします。
すると、こんな感じで勝手にアニメーションのインポートをしてくれます。
結果として、アニメーションのファイルが1つだけ追加されます。
これでFBXファイルのインポートは完了です!
お疲れさまでした!
6. UE4でVRMモデルを読みこむ
次はVRMモデルをインポートしていきます!
一旦エディタを閉じて、まずはVRM4Uというプラグインをインストールします。
VRM4Uのサイトからバージョンにあったファイルを落とします。
GitHubのページが開くので、右側のReleaseからダウンロードページに飛びます。
今回はUE4をバージョン4.26.1で使用したので、VRM4U_4_26と頭についているzipファイルをダウンロードします。
ダウンロードできたら、ファイルを展開してください。
Pluginsというフォルダが出てきます。
そのPluginsフォルダを先程作成したプロジェクトのフォルダに移動して、.uprojectと同じ階層に入れます。
===
続いて、先程閉じたエディタを再度開きます。
今回はEpic Games Launcherのライブラリ→マイプロジェクトに作成したプロジェクトが表示されているはずですので、そちらを選択して開いてください。
エディタが開いたら、上部の「設定→プラグイン」からプラグインを管理するためのウィンドウを表示します。
右上の検索欄に「vrm」と入力すると、VRM4Uがヒットするはずです。
(ヒットしない場合はプロジェクトフォルダへのプラグインの追加が正しくできていません。)
VRM4Uを有効にするとエディタの再起動を求められますので、再起動をします。
以上で、VRMモデルをインポートする準備が整いました!
再起動が完了したら、VRMモデルを入れておくために作成したフォルダー「VRMmodel」をコンテンツブラウザで開き、.vrm形式のファイルをドラッグ&ドロップしてください。
このように複数のファイルがインポートされていれば大丈夫です!
7. UE4でアニメーションのリターゲットをする
いよいよVRMモデルにアニメーションをさせられます!
VRMモデルにアニメーションをさせるには、アニメーションのリターゲットという機能を使用します。
これは、同じボーン構造をしていればUE4が自動でリグの対応関係を設定してくれるという便利な機能です。
さて、まずはVRMモデルのフォルダの中から、頭に「SKEL_」とついた骨格のようなアイコンのファイルを探してください。
これを開くとこんな感じのウィンドウが新たに開きます。
この画面の左側の「リグを設定」からリグを変更します。
「リグを選択」をHumanoidから、FBXをインポートした際に作成したリグに変更します。
ちなみに、リグを作成していないとここには何も表示されません。
表示されていない場合は、リグを作成したかどうかを確認してください。
===
続いて、コンテンツブラウザでインポートしたFBXファイルをまとめてあるフォルダに移動します。
この画像で黄色になっている、一番左のファイルがアニメーションシーケンスです。
このファイルを右クリックし、「Animアセットをリターゲットする→Animアセットとリターゲットを複製する」を選択してください。
すると「スケルトンを選択」というウィンドウが出てきます。
このウィンドウの真ん中下にある「互換性のあるスケルトンのみを表示」のチェックを外すと、左側にスケルトンの一覧が出てきます。
この中から、「SKEL_<VRMファイルの名前>」となっているものを選択してください。「SKEL_VRoidSimple」ではありません!
続けて、右下の「フォルダ」と表示されているところの変更ボタンから、保存先のフォルダを指定します。
今回は最初に作成した3つのフォルダのうち、RetargetAnimationというリターゲットされたアニメーションシーケンスを入れるためのフォルダを選択します。
変更が終わるとこの画面に戻りますので、選択しているスケルトンが正しいことを確認したら、左下のリターゲットボタンをクリックしてください。
クリックすると、こんな感じで「~を複製してリターゲットしました」というものと「アニメーションを圧縮しています」という表示が出ます。
選択したフォルダにアニメーションシーケンスが作られていることを確認したら、これをダブルクリックしてちゃんとアニメーションしているかどうかを確認してみましょう!
動いていますね!
このリターゲットしたアニメーションシーケンスはそのままシーンに配置して使用することができます!
8. シーンを作成する
さて、最後はおまけ程度ですが、このアニメーションシーケンスを使用して映像を制作するための準備をご紹介します。
まずは、コンテンツブラウザに新しいフォルダを作成しておきます。
Cinemaというフォルダを作成しました。
これはレベルシーケンスというものを入れておくために使います。
続いて、エディタ上部のシネマティクスから「レベルシーケンスを追加」を選択してください。
格納先のフォルダを選ぶためのウィンドウが開くので、先程作成したCinemaフォルダを選択してください。
レベルシーケンスが作られていることを確認したら、このシーケンスをダブルクリックして開きます。
すると、このような「シーケンサー」というものが開きます。
ここにカメラなどをドラッグ&ドロップし、キーフレームを打ってアニメーションを作っていきます。
さて、肝心のアニメーションシーケンスの使い方ですが、
まずはシーンに追加したアニメーションシーケンスをシーケンサーにドラッグ&ドロップします。
シーケンサーの時間経過に合わせてアニメーションさせるには、追加したアニメーションシーケンスの+ボタン(マウスを合わせると「+トラック」という表示に変わります)から、アニメーションを選択し、同じ名前のアニメーションシーケンスを選択してください。
シーケンサーを使って動かせるようになりました!
これでシーケンサーのカチンコのアイコンから映像や連番画像のレンダリングもできます。
この方法の課題点
この方法で現在できないことなどについてまとめておきます。
まとめておけば誰かが解決してくれないかと信じて……(ごめんなさい)
1. 髪が揺れない
結構致命的な問題です。ブループリントから髪揺れをアニメーションする方法はありますが、それをシーケンサーの時間に合わせて動かす方法が全く分からないんですね……。
2. 表情のモーフターゲットを手付けする必要がある
FBX変換時にモーションのデータが外れているようです。
ボーンで動くアニメーションはそのままアニメーションさせることができます。
ちなみに表情モーフの調整は、アニメーションシーケンスをダブルクリックして開いたウィンドウから、カーブを追加して編集することができます。
かなり時間がかかるのでどうにかしたいところですね……
おわりに
いかがだったでしょうか?
このような手順を通して「シンクロ」プロジェクトでもアニメーションを制作しました。
レンダリングされたイメージの見た目のなどの様々な課題も見えてきましたが、そこは今後の制作で解消していけるようにしたいですね!
今回の方法をぜひ試して、UE4で映像を制作してみてください!