見出し画像

UnityでキャプチャしたVRMモデルのアニメーションをUE4で使う

こんにちは!Midoです!
この度、ありがたいことにMacrossΔワルキューレや魔法科高校の劣等生などの楽曲で有名な姉田ウ夢ヤさん原案のプロジェクト「シンクロ」にて映像制作を担当させていただきました。

その「Episode 0」の制作にあたり、VRoidで作成されたVRMモデルを使う機会がありました。
今回の記事では、Unity + VIVEトラッカー作成されたアニメーションをUnreal Engine 4 (以下、UE4)で使いたいという場面があったので、その方法についてまとめていきます!

対象となる読者

この記事は次のような方を想定して書いています。

1. VRoidで作成されたモデルを使用しているVtuberの方
2. VRoidモデルを使ってUE4で映像を制作したい方
3. Unityで制作したアニメーションをUE4で使用したい方

どんなものが作れるのか?

こんな感じのが作れます。

画像1

画像2

いい感じじゃないですか…!

なぜ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のプロジェクトを用意します。

画像3

Unity Hubからプロジェクトを新規作成します。

画像4

新しいプロジェクトを作成するウィンドウが出てきたら、プロジェクト名と保存先を決めて、テンプレートは3Dにして作成をクリックします。

画像5

空のプロジェクトが開いたら、
Assets→Import Package→Custom Package
からUniVRMのUnity Packageをインポートします。

画像6

このパッケージをインポートすることで、UnityにVRM形式のモデルを簡単にインポートすることができるようになります。

画像7

パッケージを選択すると、Import Unity Packageというウィンドウが開くので、そのまま右下のImportボタンをクリックしてください。
Assets直下にVRM、VRMShaders、UniGLTFというフォルダーが作られます。

画像8

インポートをすると、.vrm形式のモデルをドラッグ&ドロップで簡単にインポートできます。

画像9

インポートをするとこのように複数のフォルダとVRMモデルが生成されます。
インポートする際にはAssets直下にフォルダを作成して、その中に.vrmのファイルをドラッグ&ドロップした方が管理がしやすいです。

2. Unity上でアニメーションを作成

Unity上でアニメーションを作成します。
今後Very Animatioinを使用するので、Unityにインポートしておくようにしてください。
「シンクロ」ではアニメーションの作成にVIVE Pro Eyeを使用しているようです。
私自身、いただいたデータを使っているだけなのもありキャプチャ関連には詳しくないので、Unityと外部機器を用いてキャプチャする方法については他の記事をあたっていただければと思います。

3. Very Animationを使ってDAE形式のファイルを出力

アニメーションのキャプチャが終わったらVery Animationの出番です!

画像10

Unity上には、この三角形のアイコンをしたアニメーションのファイルがあることを前提としてこれからの話を進めていきます。

画像11

まずはVery Animationのタブを表示させましょう!
Window→Very Animation→Main
からVery Animationのタブを出します。

画像12

Very AnimationではAnimation Windowを開いていないと何もでてきません。

次に、VRMモデルをシーンに追加してアニメーションを適用します。

画像13

アニメーションを適用すると、アニメーションコントローラが自動で生成されます。

画像14

この画像の一番左の四角形の合わさったようなアイコンがそれです。

画像17

続いて、ヒエラルキーのVRMモデルを選択した状態で、Very AnimationのFocus Animation Windowをクリックします。

画像15

Very Animationの表示がこのように変わります。
この表示になったらEdit Animationをクリックしてください。

画像16

Edit Animationをクリックするとこのような画面になります!

ここまでで、ようやくDAEファイルの出力をする準備ができました。

画像18

まずは、Very AnimationのToolsをCopyからExportに変更します。

画像19

Export画面では必ずFoot IKのチェックが外れていることを確認します。
確認をしたらExportをクリックしてください。

画像20

指定した保存先に

1. VRMモデルの名前のdaeファイル
2. @の付いたdaeファイル

以上の2つが出力されています。
(ほかにも画像ファイルが出力されますが気にしないでください。)
出力が終わったらUnityを閉じます。

4. Autodesk FBX ConverterでDAE形式のファイルをFBX形式に変換

次はFBX Converterを使用します。

画像21

画像22

FBX Converterを起動すると、このようなウィンドウが開きます。
真ん中のウィンドウが開いていない場合は、左上のAdd FBX Converterから開いてください。

画像23

続いて、先ほど出力した2つのDAEファイルを左側のSource File欄へドラッグ&ドロップしてください。この画像のような状態になったら大丈夫です。

右側のDestination filesにあるChange destination folderから変換したファイルの保存先を指定したら、他には設定を変えずにConvertをクリックします。

画像24

これでDAE形式のファイルをFBX形式に変換できました!

画像25

指定した保存先に以上の2つのファイルが出力されていることを確認してください。
確認できたら、FBX Converterを閉じて大丈夫です!

5. UE4でFBXのアニメーションデータを読み込む

ついにUE4での作業に移ります!
まずはUE4のプロジェクトを作成します。このプロジェクトでアニメーションのためのシーンを作成していきます。

画像30

Epic Games LauncherのライブラリからEngineバージョンを指定してUE4のエディタを起動します。
まだUE4のエディタをインストールしていない場合は、Engineバージョンという文字の横の+マークからバージョンを選択してインストールしてください。
今回はバージョン4.26.1で進めていきます。

画像31

エディタを起動すると、プロジェクトのカテゴリを選ぶ画面になります。
私はUE4を映像制作のために使用することがほとんどですので、基本的には「映画、テレビ、ライブイベント」という項目を選択して先に進みます。

画像32

続くテンプレート選択の画面では、Blankを選択します。
プロジェクトを保存するフォルダはちゃんと自分が分かる場所に変更してください!後でそのフォルダを開く必要が出てきます。

スターターコンテンツの有無とレイトレーシングの有無は自由ですが、今回はスターターコンテンツ有り、レイトレーシング無しで進めています。
これで最小限の機能が入ったプロジェクトが指定した場所に作成されます。

===

次に、エディタのコンテンツブラウザの中にいくつかフォルダを作成しておきます。

画像35

今回は次の3つを作成しました!

1. FBXfile
アニメーションの入ったFBXファイルを入れるためのフォルダです。

2. Retarget Animation
FBXのアニメーションをVRMモデルにリターゲットしたものを入れるフォルダです。

3. VRMmodel
VRMモデルを入れるためのフォルダです。

===

続いて、FBXファイルをインポートしていきます。
FBXファイルのインポートは標準でサポートされているのでご心配なく…

画像36

まずはFBX Converterでコンバートした2つのうち、@のない方をインポートします。
これを先程作ったFBXfileというフォルダ内にドラッグ&ドロップします。

画像37

すると、FBXインポートオプションが自動で開きますので、Import Meshにチェックが入っていることを確認します。
続けて、メッシュという項目の下向きの三角形のアイコンをクリックして、メッシュの設定項目の表示を拡張します。

画像38

追加で表示された設定項目の中から、Import Morph Targetsという項目を探してチェックをつけます。

ここまでが完了したらインポートをクリックして先に進んでください!

画像39

インポートが完了すると、こんな感じでいろいろなファイルが追加されます。

画像40

その中から、{VRMモデルの名前}_Skeletonとなっているものをダブルクリックして開いてください。

画像41

新しいウィンドウが開いたら、右側にあるアセットに適用(Apply Asset)というボタンをクリックします。
その後で、保存をしてこのウィンドウを閉じてください。

ウィンドウを閉じたら、あとで使用することになるのでリグを作成しておきます。

画像42

先程開いていたスケルトンのファイルを右クリックして、「右クリックメニュー→作成する→リグを作成」をしてください。
ボーンをマージするというウィンドウが出てきますが、そのままOKをクリックしてください。
すると、末尾にRigとついたファイルが作られます。

===

次に@がついている方のFBXファイルをインポートしていきます。

画像43

@のついていないほうのFBXファイルをインポートしたのと同じフォルダに、この@付きのファイルをインポートします。

画像44

同様にFBXインポートオプションが出てきますので、Import Meshのチェックを外してインポートをします。

画像45

すると、こんな感じで勝手にアニメーションのインポートをしてくれます。

画像46

結果として、アニメーションのファイルが1つだけ追加されます。
これでFBXファイルのインポートは完了です!
お疲れさまでした!

6. UE4でVRMモデルを読みこむ

次はVRMモデルをインポートしていきます!
一旦エディタを閉じて、まずはVRM4Uというプラグインをインストールします。

VRM4Uのサイトからバージョンにあったファイルを落とします。

画像26

GitHubのページが開くので、右側のReleaseからダウンロードページに飛びます。

画像27

今回はUE4をバージョン4.26.1で使用したので、VRM4U_4_26と頭についているzipファイルをダウンロードします。

画像28

ダウンロードできたら、ファイルを展開してください。
Pluginsというフォルダが出てきます。

画像29

そのPluginsフォルダを先程作成したプロジェクトのフォルダに移動して、.uprojectと同じ階層に入れます。

===

続いて、先程閉じたエディタを再度開きます。
今回はEpic Games Launcherのライブラリ→マイプロジェクトに作成したプロジェクトが表示されているはずですので、そちらを選択して開いてください。

画像33

エディタが開いたら、上部の「設定→プラグイン」からプラグインを管理するためのウィンドウを表示します。

画像34

右上の検索欄に「vrm」と入力すると、VRM4Uがヒットするはずです。
(ヒットしない場合はプロジェクトフォルダへのプラグインの追加が正しくできていません。)

VRM4Uを有効にするとエディタの再起動を求められますので、再起動をします。
以上で、VRMモデルをインポートする準備が整いました!

再起動が完了したら、VRMモデルを入れておくために作成したフォルダー「VRMmodel」をコンテンツブラウザで開き、.vrm形式のファイルをドラッグ&ドロップしてください。

画像47

このように複数のファイルがインポートされていれば大丈夫です!

7. UE4でアニメーションのリターゲットをする

いよいよVRMモデルにアニメーションをさせられます!
VRMモデルにアニメーションをさせるには、アニメーションのリターゲットという機能を使用します。
これは、同じボーン構造をしていればUE4が自動でリグの対応関係を設定してくれるという便利な機能です。

画像48

さて、まずはVRMモデルのフォルダの中から、頭に「SKEL_」とついた骨格のようなアイコンのファイルを探してください。

画像49

これを開くとこんな感じのウィンドウが新たに開きます。

この画面の左側の「リグを設定」からリグを変更します。

画像50

「リグを選択」をHumanoidから、FBXをインポートした際に作成したリグに変更します。
ちなみに、リグを作成していないとここには何も表示されません。
表示されていない場合は、リグを作成したかどうかを確認してください。

===

続いて、コンテンツブラウザでインポートしたFBXファイルをまとめてあるフォルダに移動します。

画像51

この画像で黄色になっている、一番左のファイルがアニメーションシーケンスです。
このファイルを右クリックし、「Animアセットをリターゲットする→Animアセットとリターゲットを複製する」を選択してください。

画像52

画像53

すると「スケルトンを選択」というウィンドウが出てきます。

画像54

このウィンドウの真ん中下にある「互換性のあるスケルトンのみを表示」のチェックを外すと、左側にスケルトンの一覧が出てきます。

画像55

この中から、「SKEL_<VRMファイルの名前>」となっているものを選択してください。「SKEL_VRoidSimple」ではありません!

続けて、右下の「フォルダ」と表示されているところの変更ボタンから、保存先のフォルダを指定します。

画像56

今回は最初に作成した3つのフォルダのうち、RetargetAnimationというリターゲットされたアニメーションシーケンスを入れるためのフォルダを選択します。

画像57

変更が終わるとこの画面に戻りますので、選択しているスケルトンが正しいことを確認したら、左下のリターゲットボタンをクリックしてください。

画像58

クリックすると、こんな感じで「~を複製してリターゲットしました」というものと「アニメーションを圧縮しています」という表示が出ます。

画像59

選択したフォルダにアニメーションシーケンスが作られていることを確認したら、これをダブルクリックしてちゃんとアニメーションしているかどうかを確認してみましょう!

画像60

動いていますね!

このリターゲットしたアニメーションシーケンスはそのままシーンに配置して使用することができます!

8. シーンを作成する

さて、最後はおまけ程度ですが、このアニメーションシーケンスを使用して映像を制作するための準備をご紹介します。

まずは、コンテンツブラウザに新しいフォルダを作成しておきます。

画像61

Cinemaというフォルダを作成しました。
これはレベルシーケンスというものを入れておくために使います。

画像62

続いて、エディタ上部のシネマティクスから「レベルシーケンスを追加」を選択してください。
格納先のフォルダを選ぶためのウィンドウが開くので、先程作成したCinemaフォルダを選択してください。

画像63

レベルシーケンスが作られていることを確認したら、このシーケンスをダブルクリックして開きます。

画像64

すると、このような「シーケンサー」というものが開きます。
ここにカメラなどをドラッグ&ドロップし、キーフレームを打ってアニメーションを作っていきます。

さて、肝心のアニメーションシーケンスの使い方ですが、

画像65

まずはシーンに追加したアニメーションシーケンスをシーケンサーにドラッグ&ドロップします。

画像66

シーケンサーの時間経過に合わせてアニメーションさせるには、追加したアニメーションシーケンスの+ボタン(マウスを合わせると「+トラック」という表示に変わります)から、アニメーションを選択し、同じ名前のアニメーションシーケンスを選択してください。

画像67

シーケンサーを使って動かせるようになりました!
これでシーケンサーのカチンコのアイコンから映像や連番画像のレンダリングもできます。

この方法の課題点

この方法で現在できないことなどについてまとめておきます。
まとめておけば誰かが解決してくれないかと信じて……(ごめんなさい)

1. 髪が揺れない
結構致命的な問題です。ブループリントから髪揺れをアニメーションする方法はありますが、それをシーケンサーの時間に合わせて動かす方法が全く分からないんですね……。

2. 表情のモーフターゲットを手付けする必要がある
FBX変換時にモーションのデータが外れているようです。
ボーンで動くアニメーションはそのままアニメーションさせることができます。

画像68

ちなみに表情モーフの調整は、アニメーションシーケンスをダブルクリックして開いたウィンドウから、カーブを追加して編集することができます。

画像69

かなり時間がかかるのでどうにかしたいところですね……

おわりに

いかがだったでしょうか?
このような手順を通して「シンクロ」プロジェクトでもアニメーションを制作しました。
レンダリングされたイメージの見た目のなどの様々な課題も見えてきましたが、そこは今後の制作で解消していけるようにしたいですね!

今回の方法をぜひ試して、UE4で映像を制作してみてください!

よろしければサポートをお願いいたします! サポートは今後の情報発信のための学習代として活用させていただきます。