MRTK(2.7.2)のExampleを試す その5 (Demos - HandCoach)
今回は下記の続きです。
xr-physics-work-etc.hatenablog.com
前提
今回の前提は以下です。
Unity 2019.4.17f1
MRTK 2.7.2
準備
いつものようにPackage Managerからデモをインポートします。
すでにImport済みの場合は、Input againで再度インポートできます。
HandCoachExample
このシーンはユーザに手の動きを指示するための、基本的な動きを確認することができます。
タップや選択などの基本的な操作を仮想の手で、ヒント表示することができます。
HandInteractionHint.cs
このスクリプトでは、手の動きを指示する動きのアニメーションの設定を行うことができます。
使用する際、アタッチしたオブジェクトの子オブジェクトにHandRigを設定して使用します。
例 : StaticHandCoachRoot_R
Hint Display Delay
手がトラッキングされていない状態で、手を表示するまでの遅延時間(秒)。Hide If Hand Tracked
bool。Trueの場合、手がトラッキングされている際にはヒントが表示されない。Tracked Hand Hint Dispaly Delay
手がトラッキングされている状態で、手を表示するまでの遅延時間(秒)。Auto Activate
bool。Trueの場合、コンポーネントがActiveになるたびにヒントが表示される。Animation State
ループ中に再生するアニメーション名を文字列で設定。
右手の場合。
※ 子オブジェクトのAnimatorを使用。Repeat Delay
ヒントの1ループが終わって次が始まるまでの時間(秒)。
MoveToTarget.cs
このスクリプトでは、手のヒントをある位置から目標位置まで移動させることができます。
例:InteractionHint_R
Tracking Object
移動前の位置を示すGameObjectTarget Object
移動後の位置を示すGameObjectRoot Object
ルートオブジェクト。相対位置を算出するために使用。
Tracking ObjectとTarget Objectと共通の親オブジェクトを選択する。Duration
Traking ObjectからTarget Objectまでの移動時間Target Offset
目標位置座標の調整用オフセット。Animation Curve
Tracking ObjectからTarget Objectに移動する際のLerp曲線。
public関数のFollow()とMoveToTargetPosition()は、アニメーションイベントとして登録され、アニメーションが実施されるタイミングで実行されます。
これらを外部のスクリプトから実行すれば、HandInteractionHint.cs
と切り離して移動用の関数として使用できます。
RotateAroundPoint.cs
このスクリプトでは、ある点を中心に手のヒントを回転させることができます。
例:RotatingHandCoachRoot_R
Centered Parent
回転中心を中心とした親オブジェクトInverse Parent
ハンドの向きを同じにするために、Centerd Parentと逆に回転させる親オブジェクトPivot Position
動作の開始点。Duration
CenteredParentを中心とした回転の継続時間(秒)。Animation Curve
回転を時間軸で制御するLerp曲線。Rotation Vector
各軸を何度回転させるか。
public関数のResetAndDeterminePivot()とRotateToTarget()はアニメーションイベントとして登録され、アニメーションが実施されるタイミングで実行されます。
# 変数名と用途が異なるのは、私の英語力が低くて間違って認識しているだけ。。?
キリが良いので今回はここまで。
次回はDeos-HandTrakingを取り扱います。