🍣

UE5 の IKRig と IKRetargeter を利用して、BVHモーションを UE5 Quinnで再生する

2024/02/27に公開

UE5 の IKRig と IKRetargeter を利用して、BVHモーションを UE5 Quinnで再生する

表題の通りのメモ。現状はメモなので、内容は雑然としています。

  • UnrealEngineバージョン:5.3.2

参考:九里江めいく氏のUE5 IKRetergeter 解説より

UE5プロジェクトの作成

  1. Unrealエディタを起動するとプロジェクトブラウザが開く
  2. ゲーム → サードパーソンを選択し、プロジェクト名を決めて「作成」

Alt text

UE5マネキン一式の追加

※ プロジェクトにUE5マネキンが無い場合

  1. コンテンツブラウザの追加メニューを開く
  2. 機能またはコンテンツパックを追加
  3. ブループリント→サードパーソン→プロジェクトに追加

プラグイン「VRM4U」の追加

プロジェクトを閉じた状態で、上記URLより利用するUEのバージョンに対応したファイルをダウンロードし、UEのプロジェクトファイル .uprojectとおなじ場所にPlugins フォルダ以下を展開する。

  + MyProject
    - MyProject.uproject
    - Plugins
      - VRM4U
        - VRM4U.uplugin

UE5でプロジェクトを開き、「編集」→「プラグイン」でプラグイン管理ウィンドウを開くと、検索から VRM4U が検索できるので、チェックを入れ確定する。エディタの再起動を促されるので再起動して導入完了。この段階で、BVHファイルのインポートが可能になる。

Alt text

コンテンツフォルダの整理

UserContentsフォルダを作る

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

Alt text

BVHファイルのインポート

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

Alt text

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

Alt text

右下の方にある「すべて保存」を押してプロジェクト内でファイルを確定させておく。

リターゲットプロセス

UserContents 以下に RetargetProcess フォルダを作る

ソースの IKRig を作る

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

Alt text

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

Alt text

これはこうしなければいけないらしい。別にRootボーンっていうのがあるならばまた違うんかもしれん。

SpineSpine1 を選択し、右クリックメニューから 新しいリターゲティングチェーン を選択。新規リターゲティングチェーンを追加する。

Alt text

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

Alt text

左上のセーブボタンを押して閉じる。これで、ソースIKリグの設定完了。

ターゲットの IKRig をつくる

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

Alt text

セーブして閉じる。

IKRetargeter をつくる

RetargetProcess フォルダ内を右クリック→アニメーション→IKリターゲッター。名前は RTG_BVH2Quinn とした。ダブルクリックで開く。

ソースとターゲットを指定

Source IKRig AssetIK_BVHTarget IKRig AssetIK_TargetQuinnを設定。

リターゲティングポーズの編集

Alt text

左上の方のタブの ︙ から「リターゲティングポーズを編集」を選択して、基本ポーズの編集に入る。

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

Alt text

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

Alt text

右下のアセットブラウザから、A_SHIRASUなんたらを選択した状態で「選択肢たアニメーションをエクスポート」を押すと、Quinnが踊っている状態のアニメーションデータがエクスポートされる。念の為、OutputAnimationというフォルダを作ってそこに出力した。

レベルへの配置と再生

OutputAnimation フォルダに完成したアニメーションファイルをレベルにドラッグ&ドロップして配置。再生ボタンを押せばとりあえず動く。

Discussion