開発
開発
プラットフォームを選択

Unreal用Movementのサンプル

更新日時: 2024/09/04
Unreal Movementのサンプルは、Oculus-VR Unreal Engine Forkにあります。

概要

このセクションを完了すると、以下のことができるようになります。
  1. 提供されたサンプルのコンテクストを理解する。
  2. サンプルを操作して、プロジェクトに適用できるサンプルコードを見つける。
Unreal用のMovementのサンプルは4つのシーンで構成されており、それぞれ少し異なる使用例を示しています。最初の2つは古いアクターコンポーネントメソッドで実装され、後の2つはアニメーションノードメソッド(好ましい)を使っています。シーンは「Content/Maps」フォルダーにあります。
フェイス(「オーラ」): (“MAP_Aura”) アクターコンポーネントメソッドを使ったフェイストラッキングとアイトラッキングの活用方法を示すフェイストラッキングシーンです。
上半身: (“MAP_HighFidelity”) ボディトラッキング、フェイストラッキング、アイトラッキングが実装されたリアルなキャラクターです。このシーンはOculusリグをそのまま使っており、Unrealのマネキンとの互換性はありません。
リターゲティング - マネキン: (“MAP_RetargetMannequinAnimBlueprint”) このシーンでは、マネキンとアニメーションノードメソッドを使ったリターゲティングオプションを示しています。このサンプルで使われる技術はほかのリグにも使うことができます。これはボディトラッキングの最も完全な例です。
フェイス、アイ、ボディのリターゲティング: (“MAP_HighFidelity_AnimBlueprint”) このサンプルでは、アニメーションノードメソッドを使って、リアルなキャラクターモデルにボディ、フェイス、アイのトラッキングを適用しています。
上記のシーンを切り替えるためのシーンセレクトメニューは、以下のとおりです。
Scene Switch

マップの設定

このセクションで説明したように、すべてのサンプルは共通のコンポーネントを使います。
  • メインのポーン これは、VRに入るときに所有するポーンです。カメラはこのコンポーネントに取り付けられており、一人称の映像を表示します。
  • ミラーリングされたポーン これはメインのポーンと同じですが、X軸全体のミラーリングを実現するために(-1, 1)にスケールされ、カメラコンポーネントは持っていません。これは、Oculusのポーンが外部からの視点、つまり三人称視点での位置づけでどのように見えるかを示すポーンです。
  • シーンハンドラー 環境を設定し、メインアバターを管理するために使われ、レベル切り替えのロジックを含んでいます。
レベル間を切り替えるには、上の図に示したScene Swtich UIを使うができます。
  • コントローラーの使用: UIのボタンを指し、右コントローラーのA ボタンを押して選択します。
  • ハンドトラッキングの使用: UIのボタンを指し、親指と人差し指のピンチ操作で選択します。

オーラ - フェイストラッキングとアイトラッキング

このサンプルは、Movement SDKのフェイストラッキングとアイトラッキングの機能を示しています。オーラは、通常よりも大きな目や花びらのような髪など、少しスタイリッシュで幻想的な特徴を持つようにモデル化されたキャラクターです。オーラの比率は人間と少し異なるため、フェイストラッキングデータはキャラクターに合わせて調整する必要があり、動かしたりアニメ化する際にキャラクターが自分の形状を切り取ってしまわないように制約する必要があります。これは、フェイスデータがキャラクターにどのように適用されるかについて制約を設定し、表情モディファイアを使って実現します。オーラには自由に浮遊する頭と手がある、つまり考慮するべき肘や膝がないため、3ポイントのボディトラッキング(頭と手2つ)を適用すると納得のいく結果が生まれます。
Level Aura

実装

オーラはアクターコンポーネントの実装を使ってリターゲティングされます。マップを開いてポーンを調べると、以下のコンポーネントがオーラに追加されていることがわかります。
  • OculusXRFaceTrackingは、モーフターゲットを駆動するフェイストラッキングトリガーを実装します。
  • OculusXRBodyTrackingは、手を動かすボディトラッキングを実装します。
  • OculusXRBodyTrackingはアイトラッキングインターフェイスを実装します。
さらに以下のコンポーネントも持っています。
  • AC_BoneHideは、表示されるべきではない骨格を隠します。
  • OculusXRFaceTrackingCorrectivesは、舌のトラッキングのサポートを追加します。
これらはさまざまな方法でトラッキングを改善するコンポーネントです。これらはサンプル内にあり、同様の機能を実現するためのインスピレーションとして利用することも、自分のプロジェクトに移行することもできます。

表情モディファイア

さまざまなキャラクターの顔が必ずしも実際の顔と正しく一致するとは限らないため、表情モディファイアが必要になります。顔のモーフターゲットは、完全に無効にするか、実際の顔による効果を増減することによって変更できます。例えば、オーラキャラクターが笑うと、唇が歯の後ろに隠れてしまいますが、唇のモディファイアを使って修正できます。
Aura wrong expression
表情モディファイアは、フェイストラッキングコンポーネントで有効になります。表情モディファイアは33個の要素を配列したものです。
Face Expression Modifiers
以下に個々の要素を示します。
Face Expression Modifiers element
  • 表情 一度に複数の表情(可能であれば顔の左側と右側の2つ)をターゲティングする配列です。
  • 最小値 モーフターゲットの最小値を含みます。
  • 最大値 モーフターゲットの最大値を含みます。
  • 乗数 モーフターゲットの効果を増減するために使います。

上半身

このサンプルでは、半身キャラクターのMovement SDKの使い方を紹介します。これは3Dスキャンされたキャラクターで、現実的な比率を持っています。これは、トラッキングデータを直接キャラクターに適用できるということです。腕が不自然な方法でねじれないようにするために、Twist Distributionを腕に適用する必要があることにご注意ください。
Upper Body

実装

このモデルは、以下の機能を使ってアクターコンポーネントを実装することで設定されています。
  • OculusXRFaceTrackingは、モーフターゲットを駆動するフェイストラッキングトリガーを実装します。
  • OculusXRBodyTrackingは、手を動かすボディトラッキングを実装します。
  • OculusXRBodyTrackingはアイトラッキングインターフェイスを実装します。
さらに以下のコンポーネントも持っています。
  • AC_InverseKinematicは、肘の位置を変えるために使われます。
  • AC_TwistDistributionは、手首がねじれて表示されないようにひねりを与えます。

Animation Blueprintをリターゲットする - マネキン

このサンプルでは、OculusXRMovementボディトラッキングアニメーションノードを使って、Unreal 5マネキンリグにボディトラッキングを適用しています。Unrealマネキンの骨格はOculusボディトラッキングの骨格とは異なるため、トラッキング骨格名をターゲット骨格の骨にマッピングするにはボーンマップが必要です。OculusXRMovementボディトラッキングノードは、上半身全身のトラッキングをサポートしています。側面のUIパネルで、実行時に2つのモードから選択できます。サンプルが上半身のトラッキングを使っている場合、足に関する情報はありません。その代わり、フットグラウンディングが足を床に固定します。このプロセスでは、地面までトレースを走らせ、IKを使って自然に見えるように足をそこに配置します。 Retarget Mannequin Level

実装

マネキンは、以下の機能を使ってAnimation Blueprintを実装することで設定されています。
  • OculusXRBodyTrackingノードは、アニメーションノードメソッドでボディトラッキングを実装しています。
さらに、このキャラクターは以下のコンポーネントも持っています。
  • OculusXRBodyTrackingは、地面までトレースし、接地可能な足の位置を見つける役割を果たします。
  • AC_FBSCheckerは、全身モードがアクティブかどうかをチェックします。

フェイス、アイ、ボディのリターゲティング

このサンプルは、このサンプルにボディトラッキング、フェイストラッキング、アイトラッキング(つまりフルトラッキング)を適用することを示しています。先ほど紹介したサンプルと比較して、この例はボディトラッキング、フェイストラッキング、アイトラッキングのアニメーションノードの実装を使っています。
Full Retargeting Level

実装

このモデルは、以下の機能を使ってAnimation Blueprintを実装することで設定されています。
  • OculusXRFaceTrackingは、モーフターゲットを駆動するフェイストラッキングトリガーを実装します。
  • OculusXRBodyTrackingは、手を動かすボディトラッキングを実装します。
  • OculusXRBodyTrackingはアイトラッキングインターフェイスを実装します。
さらに、このサンプルには以下のコンポーネントがあります。
  • OculusXRBodyTrackingは、地面までトレースし、接地可能な足の位置を見つける役割を果たします。
  • AC_FBSCheckerは、全身モードが使われているかどうかをチェックします。

Blueprints

概要

このセクションでは、サンプルプロジェクトのすべてのBlueprintの概要と、それらの目的を説明します。
名前目的パス
AC_BoneHide
骨格を隠すために使われるアクターコンポーネント。半身のサンプルに使われています。
Blueprints/AC_BoneHide
AC_AndroidPermissions
Androidでのアクセス許可のリクエストに使われるヘルパーコンポーネント。
Blueprints/AC_AndroidPermissions
AC_DeformationLogic
キャラクターの本体を変形させるために使われるアクターコンポーネント。
Blueprints/Deformation/AC_DeformationLogic
AC_DriveSkeletalUpdateLogic
骨格更新ロジックを実行するために使われるアクターコンポーネント。
Blueprints/AC_DriveSkeletalUpdateLogic
AC_TwistDistribution
関節のねじれを分散するために使われるアクターコンポーネント。
Blueprints/TwistDistribution/AC_TwistDistribution
BP_AuraOculusPawn
オーラキャラクター用のOculusポーン。
Blueprints/Avatars/BP_AuraOculusPawn
BP_AxisGixmo
関節の向きを示すために使われるギズモ。
Blueprints/Debug/BP_AxisGizmo
BP_MovementSampleGameMode
サンプル用のゲームモード。いくつかのレンダリングコマンドの設定と関連するパーミッションのリクエストを行います
Blueprints/BP_MovementSampleGameMode
BP_OculusPawn
MetaXRプラグインのベースOculusポーン
Blueprints/Avatars/BP_OculusPawn
BP_Printer
アクターは、ワールドスペースのスクリーンにデバッグ情報をプリントするために使われます。
Blueprints/Debug/BP_Printer
BP_SceneHandler
アクターは環境を設定するために使われ、メインアバターを所有します。各サンプルレベルでこれらのうち1つ。
Blueprints/BP_SceneHandler
WBP_BodyTrackingSettings
ボディトラッキングの設定を表示するために使われるウィジェット。
Blueprints/Widgets/WBP_BodyTrackingSettings
WBP_LevelSwitch
レベル間を切り替えるために使われるウィジェット。
Blueprints/Widgets/WBP_LevelSwitch
WBP_Recalibrate
ボディトラッキングの高さの再キャリブレーションをトリガーするために使われるウィジェット
Blueprints/Widgets/WBP_Recalibrate
WBP_SkeletonDebugSettings
ボディトラッキング骨格のさまざまなデバッグ表示を有効または無効にするために使われるウィジェット。
Blueprints/Widgets/WBP_SkeletonDebugSettings

Twist distribution - Blueprint

骨/関節を正しく回転させ、体の各部分がキャンディーの包み紙のようにねじれて見えないようにするために関節を調整するTwist Distributionコンポーネントがあります。(アニメーションノード実装を使う場合は不要です。)この現象は手を回転させると確認できます。肘の骨と手首の骨は回転していますが、関節の回転が正しく分散されておらず、キャンディーの包み紙のような外観になっています。
twist distributionなし
twist distributionあり
プロパティ
  • ウェイト: ねじれによる効果の程度。
  • セグメント開始: ねじれが発生した場所の反対側の開始ボーン。
  • セグメント終了: ねじれを含むターゲットボーン。
  • セグメント終了: 任意。セグメント終了ベクトルとして使う別のボーンを割り当てます。
  • ツイストジョイント: ソースの回転の影響を受けるツイストジョイントのリスト。重みはさまざまな分散に使われます。
  • ツイスト前方軸: ツイストジョイントの前方軸。ねじれ軸に沿ってセグメントの端を指します。
  • ツイスト上方軸: ツイストジョイントの上方軸。セグメントの端の上方軸と一致します。

Deformation Logic - Blueprint

シミュレーションされたボディの脊椎と腕の骨の間隔が、ボディの状態の更新後に変化する場合があります。元の間隔が開始時に記録され、ボディの状態の更新後に間隔を修正するために使われます。Deformation Logicコンポーネントはこの間隔を調整します。特定の理由のために頭や腰をスキップするオプションがあります。
プロパティ
  • ウェイト: 上腕の骨に対する下腕の骨の位置を変更するために使われます。
  • 移動速度: Move Towardsを使う場合に、手が瞬時ではなくスムーズに再配置されます。 Retarget Mannequin Level

AC_AndroidPermissions

プロジェクトでAC_AndroidPermissionsを使って、デバイスへのアクセス許可をリクエストすることができます。
  • Movement SDKのサンプルで、[Content (コンテンツ)] > [Blueprints] > [AC_AndroidPermissions]に移動し、これをプロジェクトに移行します。これを行うには、アセットを右クリックし、[Asset Actions (アセットアクション)] > [Migrate (移行)]を選び、これをプロジェクトに移動します。
  • プロジェクトで、GameModeAC_AndroidPermissionsをコンポーネントとして追加します。
  • GameModeBeginPlay中に、コンポーネントのRequestPermissionsメソッドを呼び出して、関連するアクセス許可をリクエストする必要があります。
BP_MovementSampleGameModeをご覧いただければ、この設定方法を確認できます。
ナビゲーションロゴ
日本語
© 2026 Meta