ObjectTracking - accessivr/accessivr-unity-sdk GitHub Wiki

3Dオブジェクトへの視線を解析する

AccessiVR では3Dオブジェクトへの視線を解析する際に、下記のステップが必要になります。

  1. 解析を行うための Script を実装
  2. 実際にアプリを実行してデータを蓄積

Unity にて Script を埋め込む

対象物に視線が下記の TrackObjectGaze 関数にユニークなObjectId(任意)を送信して、対象がどれくらい見られているのかを集計します。

AccessiVRCore.TrackObjectGaze(string objectId);

集計用の関数は存在しますが、視線が通っているかの判定は用意する必要があります。

視線判定のサンプル

視線からRayを飛ばしてヒットしたオブジェクトのID(AccessiVR上での管理用のID)をSDKを通して送信します。

※ここでは一例として、Cameraに付属するコンポーネントとしてスクリプトを作成していますが、構造によってはそれでは制御しづらいのであくまで参考程度にお読みください。

まずはCameraなどVRにおいて目となるコンポーネントにRayを飛すスクリプトを作成します。

Raycast の Script 作成

using Dazzle.AccessiVRRuntime;
using UnityEngine;

public class ObjectDetectRaycaster : MonoBehaviour
{
    void Update()
    {
        var ray = new Ray(transform.position, transform.forward);
        RaycastHit hitInfo;
        int mask = LayerMask.GetMask("AccessiVR");

        // layer [AccessiVR] のオブジェクトのみ判定
        if (Physics.Raycast(ray, out hitInfo, 100f, mask)) {
            var data = hitInfo.collider.gameObject.GetComponent<ObjectData>();
            // データを送信
            AccessiVRCore.Instance.TrackObjectGaze(data.ObjectId);
        }
    }
}

Cameraコンポーネントが付いているGameObjectに ObjectDetectRaycaster を付けます。

ObjectId を保持するだけの C# Script 作成

using UnityEngine;

public class ObjectData : MonoBehaviour
{
    public string ObjectId;
}

視線を計測する対象物に、 ObjectData コンポーネントを付けて、LayerをAccessiVRに設定して、Colliderがない場合は追加します。

⚠️ **GitHub.com Fallback** ⚠️