ObjectTracking - accessivr/accessivr-unity-sdk GitHub Wiki
AccessiVR では3Dオブジェクトへの視線を解析する際に、下記のステップが必要になります。
- 解析を行うための 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がない場合は追加します。