UE プラグインダウンロード
以下はダウンロードリンクです。UEのソースコードを確認して開発することができ、自分でコンパイルすることができます。現在のプラグインは UE5
バージョンにのみ対応しており。
UE 使用説明
UEで新しいプロジェクトを作成
ブループリントまたはc++プロジェクトのどちらでも可能です。プラグインの二次開発が必要な場合は、
c++
プロジェクトを作成し、キャラクターをインポートします(キャラクターのデフォルトポーズはT-Pose
でなければならず、A-Pose
では手の動きが異常になります)。次に、プロジェクトのフォルダを開き、新しいPlugins
フォルダを作成し、rebocap_unreal_engine_plugin
をPlugins
に配置します。例えば、新しいtestV3
プロジェクトを作成した場合、全体のディレクトリ構造は以下のようになります:UEを再度開くと自動的にコンパイルされます【ソースコードがリリースされているため、すべてのバージョンに対応するはずです】
プラグインの二次開発とデバッグは、Riderを使用して
[name].uproject
を直接開くことで簡単に行えます。Riderを使用してコンパイルし、コンパイルエラーを確認できます。UEの自動コンパイルを使用してエラーが発生した場合は、
Saved/Logs/[name].Log
を確認してください。UE
の出力ログは一般的に日本語のエンコード問題があるため、システムエンコードをUTF-8
に調整する必要があるかもしれません。スケルトンバインディングの手順
- キャラクターアセットのスケルトンメッシュをクリックし、右クリックして新しいアニメーションブループリントを作成し、アニメーションブループリントをダブルクリックして編集します。【不明な点はビデオと併せて確認することをお勧めします】
- 右クリックして
Rebocap
を検索し、Rebocap Body Pose
を選択してノードを作成し、ノードの右側のキャラクターを出力ポーズのResult
に接続します。 - ブループリント編集ページの左下の変数セクションでプラスボタンをクリックして新しい変数を作成し、変数タイプを検索して
Rebocap
を選択し、RebocapMapData
を選択してクラス参照を行います。次に、変数をブループリントにドラッグして先ほど作成したノードRetargetAsset
に接続すると、自動的に変数ノードが生成されます。次に、左上のコンパイルボタンをクリックします。 先ほど作成した変数ノードをクリックし、右側のデフォルト値でプラスボタンをクリックして新しい
Map
アセットを作成します。自動的に新しいページに移動し、新しいページでユーザーがスケルトンマッピングを手動で入力する必要があります。注意として、24個のノードすべてを入力することをお勧めします。Avatar
のスケルトン名に基づいて入力してください。スケルトン名はブループリントページの上部バーの最初のライトブルーのスケルトンキャラクターをクリックすると自動的に選択され、各スケルトンの対応するポイントを確認できます。
Rebocap
の24個のノードのポイントは標準の人体スケルトンポイントです。ここでRebocap
のスケルトン名はスケルトンボーンの起点に基づいて命名されています。例えば、VRM
ではLeftUpperLeg
と命名されているボーンの起点はヒップなので、Rebocap
ではL_Hip
と命名されます。LeftFoot
の起点は足首なので、対応する命名はL_Ankle
です。Rebocap
ではL_Foot
は足の指に対応します。UEの命名体系では一般的にball
と呼ばれます。L Collar
左肩のスケルトンL Shoulder
左上腕のスケルトンL Elbow
左前腕のスケルトンL Wrist
左手のスケルトンL Hand
左手の中指のスケルトン【駆動しません】スケルトンが多い場合は、適切な位置を選択して選択することができます。例えば、脊柱が6本ある場合は、そのうちの3本を選択することができます。
先ほどのブループリントページに戻り(選択したスケルトンマッピングは保存してコンパイルしないと有効になりません)、変数ノードの値を先ほど作成した
Map
アセットに設定します。- 再度コンパイルし、
Warning
を確認します。通常、Warning
は3つだけです。スケルトンマッピングが間違っている場合は、特定のスケルトンが見つからないという警告が表示されます。 - アニメーションブループリント編集ウィンドウを閉じ、トップメニューの
ウィンドウ->バーチャルプロダクション->Live Link
をクリックし、ソース->Rebocap Source->conn
を選択します。【port
はポート番号です。Rebocap
のブロードキャストポート番号を変更した場合は、ここも変更する必要があります】。Rebocap
クライアントが開いている場合、connect
はok
状態になります。そうでない場合はbad
状態です。また、ユーザーが動作キャリブレーションを行った後にデータのブロードキャストが開始されます。
<div align="center">
<img src="../../img/ue_plugin/ue2.png" alt="pic_left" width="80%">
<img src="../../img/ue_plugin/ue3.png" alt="pic_left" width="80%">
</div>
- コードの説明
主な動作制御に関連するコードはSource\rebocap\Private\rebocap_pose_node.cpp
にあり、その他は周辺関連コード(例えばdll
の呼び出しやlivelink
など)です。その中で、Init_Foot_Vertices_And_SkeletalData
関数はキャラクターのデフォルト骨格位置およびvert
ポイントを取得し、地面接触用の6つのポイント【各足6つ】を計算します。自動計算のため精度が不足する可能性があるので、ユーザーは自分で足底の6つのポイントを見つけてパラメータを渡すと、より正確になるかもしれません。
PS:足が大きいとキャラクターが上下に揺れる可能性があります。極端な例を挙げると、例えば2メートルの大きな足を持つキャラクターが2メートルしかない場合、つま先で立ってから地面に降りると、つま先が地面に接触し続けるためにキャラクターが上下に揺れることになります。
パッケージ化を必要とする開発者の方は、最新バージョンのプラグインをダウンロードしてください(以前のバージョンではパッケージ化後に動作しません)。
runtime
モードではlivelink
接続管理が追加されています。Plugins/rebocap_unreal_engine_plugin/Source/rebocap_runtime/Private/RebocapLivelinkManagerDemoWidget.cpp
ファイルのConnectLiveLink
とDisconnectLiveLink
メソッドを参考にして独自に実装することができます。プラグインに付属のUIを無効にしたい場合は、Plugins/rebocap_unreal_engine_plugin/Source/rebocap_runtime/rebocap_runtime.Build.cs
を編集し、USE_REBOCAP_LIVELINK_MANAGER_DEMO
のマクロ定義をコメントアウトしてから自分でコンパイルしてください。プラグインを自分のプロジェクトに組み込む開発者の方は、独自にUIを追加してlivelink
の接続を管理してください。
runtime
モード(standalone or game mode
、つまりパッケージ化後の実行)については、現在のところruntime
モードでメッシュの頂点を取得する方法が見つかっていないため、パッケージ化後は自動ボーン登録に足底が含まれず、足底の表現がEditor
モードよりも少し劣ることがあります。将来的にはこの問題を解決する予定です。
Editor
でlivelink
接続を使用する場合、livelink
チャンネルが占有され、game
モードでの接続が成功しない可能性がありますので、Editor
を再起動してから試してください。
ビデオ操作デモ
ここには音声がなく、仮に使用しています。後でより本格的なものにします。
Meta Human を Tpose に変更
以下はビデオチュートリアルと対応するTposeファイルのパッケージです。ビデオに従って操作してください。変換ファイルは現在UE5.3
にのみ対応しており、他のバージョンは後で追加します。