UE5 の IKRig と IKRetargeter を利用して、BVHモーションを UE5 Quinnで再生する
UE5 の IKRig と IKRetargeter を利用して、BVHモーションを UE5 Quinnで再生する
表題の通りのメモ。現状はメモなので、内容は雑然としています。
- UnrealEngineバージョン:5.3.2
参考:九里江めいく氏のUE5 IKRetergeter 解説より
UE5プロジェクトの作成
- Unrealエディタを起動するとプロジェクトブラウザが開く
- ゲーム → サードパーソンを選択し、プロジェクト名を決めて「作成」

UE5マネキン一式の追加
※ プロジェクトにUE5マネキンが無い場合
- コンテンツブラウザの追加メニューを開く
- 機能またはコンテンツパックを追加
- ブループリント→サードパーソン→プロジェクトに追加
プラグイン「VRM4U」の追加
プロジェクトを閉じた状態で、上記URLより利用するUEのバージョンに対応したファイルをダウンロードし、UEのプロジェクトファイル .uprojectとおなじ場所にPlugins フォルダ以下を展開する。
+ MyProject
- MyProject.uproject
- Plugins
- VRM4U
- VRM4U.uplugin
UE5でプロジェクトを開き、「編集」→「プラグイン」でプラグイン管理ウィンドウを開くと、検索から VRM4U が検索できるので、チェックを入れ確定する。エディタの再起動を促されるので再起動して導入完了。この段階で、BVHファイルのインポートが可能になる。

コンテンツフォルダの整理
UserContentsフォルダを作る
UE5は、なにかを行った際に不意に未知のファイルが大量に生成される。それがとにかく混乱の元凶で、今生成されたファイルと最初からあったファイルの区別もできなくなるから、新しくファイルが作られそうな場合は予め専用のフォルダを作っておくのが良いように思われる。今回の場合は、「コンテンツ」以下に UserContents フォルダを作って、作業を全てそのフォルダ以下で行う。

BVHファイルのインポート
UserContents → ImportBVH → HOGEHOGE と新規フォルダを作って、その中に Windows のエクスプローラから .bvh ファイルをドラッグ&ドロップする。VRM Import Optionsというウィンドウが出るので、そのまま「Import」する。

これだけファイルが出来る。

右下の方にある「すべて保存」を押してプロジェクト内でファイルを確定させておく。
リターゲットプロセス
UserContents 以下に RetargetProcess フォルダを作る
ソースの IKRig を作る
BVH をインポートした時点でいくつも IKRig ファイルが生成されているが、区別もわからんしとりあえず一から IKRig を作ってみる。RetargetProcess フォルダ内で、右クリック→アニメーション→リターゲティング→IKリグとして、IKRig ファイルを作る。これが、リターゲットのソースになる。名前をIK_BVHとしておく。ダブルクリックしてIK_BVHを設定していく。
Preview Skeletal Mesh に HOGEHOGE を適用すると、左のリグ要素に BVHに含まれているボーン構造が出てくる。

リグ要素の Hipsボーンを右クリック→リターゲティングルートの設定

これはこうしなければいけないらしい。別にRootボーンっていうのがあるならばまた違うんかもしれん。
Spine と Spine1 を選択し、右クリックメニューから 新しいリターゲティングチェーン を選択。新規リターゲティングチェーンを追加する。

追加するチェーンは6つで、以下を参照。

左上のセーブボタンを押して閉じる。これで、ソースIKリグの設定完了。
ターゲットの IKRig をつくる
RetargetProcess フォルダ内で右クリックから、新しく IKRigを作成。名前は IK_TargetQuinn としておく。ダブルクリックで開く。PreviewSkeletalMesh を SKM_Quinn_Simple とした。設定していく。Pelvis をリターゲットルートに設定し、同じく6つのリターゲティングチェーンを設定していく。必ずソース側の IKRig で設定したチェーン名と同じものが無いとリターゲットできない。

セーブして閉じる。
IKRetargeter をつくる
RetargetProcess フォルダ内を右クリック→アニメーション→IKリターゲッター。名前は RTG_BVH2Quinn とした。ダブルクリックで開く。
ソースとターゲットを指定
Source IKRig AssetにIK_BVH、Target IKRig AssetにIK_TargetQuinnを設定。
リターゲティングポーズの編集

左上の方のタブの ︙ から「リターゲティングポーズを編集」を選択して、基本ポーズの編集に入る。
- まず、ソース側のBVH。スケルトンが地面に埋まってるので、
HipsボーンをZ軸+88.0だけ上に引っ張り上げた。これ自動的に地面まで引っ張り上げてリターゲットするようにできないものか。 - 次にターゲット側のQuinn。Aポーズなので、Tポーズに変更した。結構厳密に。
clavicle、upperarm、lowerarm、thighの角度を左右それぞれ調整した。「作成」から「現在のポーズを複製」し、Quinn T-Poseと命名して保存した。

- 選択したアニメーションのエクスポート

右下のアセットブラウザから、A_SHIRASUなんたらを選択した状態で「選択肢たアニメーションをエクスポート」を押すと、Quinnが踊っている状態のアニメーションデータがエクスポートされる。念の為、OutputAnimationというフォルダを作ってそこに出力した。
レベルへの配置と再生
OutputAnimation フォルダに完成したアニメーションファイルをレベルにドラッグ&ドロップして配置。再生ボタンを押せばとりあえず動く。
Discussion