Unity の頭を見つめますHead gaze in Unity

アプリが混合現実で作成するホログラムをユーザーが対象にする主な方法は、宝石です。Gaze is a primary way for users to target the holograms your app creates in Mixed Reality.

ヘッド見つめの実装Implementing head gaze

概念的には、ヘッドセットが接続されているユーザーのヘッドから光を投影し、その射線がどのように衝突しているかを判断することによって、宝石を実装します。Conceptually, gaze is implemented by projecting a ray from the user's head where the headset is, in the forward direction they are facing and determining what that ray collides with. Unity では、ユーザーの head 位置と方向は、Unity のメインカメラ(具体的にはunityengine) を介して公開されます。transformUnityengine. Camera. mainを変換します。transform. position.In Unity, the user's head position and direction are exposed through the Unity Main Camera, specifically UnityEngine.Camera.main.transform.forward and UnityEngine.Camera.main.transform.position.

Physics.RayCast を呼び出すと、衝突が発生した3D ポイントや、宝石が競合ししている他のオブジェクトなど、衝突に関する情報を含む RaycastHit 構造体が生成されます。Calling Physics.RayCast results in a RaycastHit structure which contains information about the collision including the 3D point where collision occurred and the other GameObject the gaze ray collided with.

例:ヘッド見つめを実装するExample: Implement head gaze

void Update()
{
       RaycastHit hitInfo;
       if (Physics.Raycast(
               Camera.main.transform.position,
               Camera.main.transform.forward,
               out hitInfo,
               20.0f,
               Physics.DefaultRaycastLayers))
       {
           // If the Raycast has succeeded and hit a hologram
           // hitInfo's point represents the position being gazed at
           // hitInfo's collider GameObject represents the hologram being gazed at
       }
}

ベスト プラクティスBest Practices

上の例では、更新ループで1つの raycast を実行して、宝石のターゲットを見つける方法を示していますが、gazed するオブジェクトに関係する可能性のあるオブジェクトではなく、1つのオブジェクトでこの操作を行うことをお勧めします。While the example above demonstrates how to do a single raycast in an update loop to find the Gaze target, it is recommended to do this in a single object managing gaze instead of doing this in any object that is potentially interested in the object being gazed at. これにより、各フレームに1つの raycast を加えるだけで、アプリの処理を保存できます。This lets your app save processing by doing just one gaze raycast each frame.

視覚化 (宝石を)Visualizing Gaze

マウスポインターを使用してコンテンツをターゲットにして操作するデスクトップと同様に、ユーザーの宝石を表すカーソルを実装する必要があります。Just like on the desktop where you use a mouse pointer to target and interact with content, you should implement a cursor that represents the user's gaze. これにより、ユーザーが操作しようとしている内容に自信を持っています。This gives the user confidence in what they're about to interact with.

Mixed Reality Toolkit v2 での宝石Gaze in Mixed Reality Toolkit v2

MRTK v2 の入力マネージャーから宝石にアクセスできます。You can access gaze from the input Manager in MRTK v2.

関連項目See also