# 3DOF

## **简介**

| **"3DoF"**（3 Degrees of Freedom，三自由度）通常指的是一种跟踪系统，它可以检测和追踪用户头部在三个空间维度上的旋转运动：俯仰（pitch）、偏航（yaw）和翻滚（roll）。这种跟踪技术不包括位置跟踪，也就是说，它不能检测用户在空间中的移动，只能检测头部的旋转。 |
| -------------------------------------------------------------------------------------------------------------------------------------------------- |

在X3设备中，3dof 磁力计演示，是一个三维空间场景，通过获取磁力计数据，进行观察场景。

* **常规3dof**

1、3dof 零方向 是应用启动初始化眼镜前方向

2、当前状态，获取不到磁力计数据

## **API介绍**

[头控模式请选择DOF3 模式](/rayneo-devdoc/x-xi-lie/unity-kai-fa/kuai-su-kai-shi/dao-ru-ardk-ji-pei-zhi.md#tou-kong-mo-shi-xuan-ze)

HeadTrackedPoseDriver 中封装了一些接口 涉及 HeadTrackedPoseParam

<table data-header-hidden><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td>调用方法</td><td>使用说明</td><td>示例代码</td></tr><tr><td>初始化 HeadTrackedPoseDriver 一些配置<br>HeadTrackedPoseParams.AwakeDriver</td><td><strong>参数与返回值细节：这些在 XR Plugin 预制体 的 Head 上的 HeadTrackedPoseDriver 脚本上</strong>/// &#x3C;param name="hdk">HeadTrackedPoseDriver&#x3C;/param>/// &#x3C;param name="resetAction">重置事件&#x3C;/param><strong>异常场景说明：</strong>无<strong>调用时机建议：无需处理，保持 XRPlugin 预制体的默认使用即可</strong></td><td><pre class="language-c#"><code class="lang-c#">HeadTrackedPoseParams .AwakeDriver(HeadTrackedPoseDriver hdk, Action resetAction);
</code></pre><p><br></p></td></tr><tr><td>销毁 HeadTrackedPoseDriver 一些配置HeadTrackedPoseParams .DestroyDriver(HeadTrackedPoseDriver hdk, Action resetAction)；</td><td><strong>参数与返回值细节：这些在 XR Plugin 预制体 的 Head 上的 HeadTrackedPoseDriver 脚本上</strong>/// &#x3C;param name="hdk">HeadTrackedPoseDriver&#x3C;/param>/// &#x3C;param name="resetAction">重置事件&#x3C;/param><strong>异常场景说明：</strong>无<strong>调用时机建议：无需处理，保持 XRPlugin 预制体的默认使用即可</strong></td><td><pre class="language-c#"><code class="lang-c#">HeadTrackedPoseParams .DestroyDriver(HeadTrackedPoseDriver hdk, Action resetAction)；
</code></pre><p><br></p></td></tr><tr><td>姿态更新HeadTrackedPoseDriver.OnPostUpdate</td><td><strong>参数与返回值细节：回调函数 Pose，Pose.rotation 可以获取旋转</strong><br><strong>异常场景说明：</strong>无<strong>调用时机建议：需要时候获取</strong><br></td><td><pre class="language-c#"><code class="lang-c#">HeadTrackedPoseDriver.OnPostUpdate += OnPostUpdate;
HeadTrackedPoseDriver.OnPostUpdate -= OnPostUpdate;

// 事件回调示例
private void OnPostUpdate(Pose pose)
{
Debug.Log($"\[SlamDemoCtrl] OnPostUpdate() position = {pose.position}, rotation = {pose.rotation}");
} </code></pre></td></tr><tr><td>重置旋转HeadTrackedPoseDriver.ResetRotation();</td><td><strong>参数与返回值细节：函数没有参数和返回异常场景说明：</strong>无<br><strong>调用时机建议：需要重置的时候重置</strong></td><td><pre class="language-c#"><code class="lang-c#">HeadTrackedPoseDriver.ResetRotation(); </code></pre><p><br></p></td></tr></tbody></table>

## **Sample 实现简单说明**

1、创建场景，场景中添加预制体 XR Plugin

![](/files/8cbe41eba32d0f4eb4154d04a43d45779bc6e24b)

2、场景中添加三维物体，用来浏览观看

![](/files/1187ceb53d117e19fa8f0aa509034856aba0914b)

3、其中 canvas 中的 Raycaster 是特定组件 XRGraphicRaycaster

![](/files/6ab8a969ce2152771f8aa1e22b757c47907bb28f)

4、打包运行，效果如上

![](/files/96b05c5a7245eab0b1091a784113958486f7162f)

5、其中，实现3dof旋转的脚本可参见 HeadTrackedPoseDriver

![](/files/908b1effa3f254388c799a9b30b4d4b48c37b8c0)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://rayneo.gitbook.io/rayneo-devdoc/x-xi-lie/unity-kai-fa/ar-neng-li-api/3dof.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
