AR/VR类拼图参考 - Soft8Soft
Description: 如何在Verge3D拼图编辑器里为应用启用虚拟现实和增强现实功能。

# 增强现实/虚拟现实 | AR/VR

此类拼图可用于实现基于浏览器的WebXR（eXtended Reality on the Web）技术运行的增强现实（AR）和虚拟现实（VR）体验。

关于支持的AR和VR设备，以及开展最佳实践的详细介绍，请参见手册中的 对应章节。

## 内容

- 拼图参考
  - check VR mode(检查VR模式)
  - enter VR mode(进入VR模式)
  - check AR mode(检查AR模式)
  - enter AR mode(进入AR模式)
  - detect surface AR(检测AR平面)
  - AR hit point(AR碰撞点)
  - AR hit normal(AR碰撞法线)
  - camera control object(摄影机控制对象)
  - on session event(在会话事件...)
  - traverse controllers(遍历控制器)
  - get controller property(获取控制器属性)
  - end AR/VR session(结束AR/VR会话)

#

## 拼图参考

#

### check VR mode(检查VR模式)

检查虚拟现实系统。如果成功，if available do 中的拼图会被触发。如果浏览器不支持VR或者没有找到VR硬件，if unavailable do 插槽中的拼图将被触发。

请查看以下 章节 了解使用Verge3D创建VR应用的详细信息。

#

### enter VR mode(进入VR模式)

进入虚拟现实模式。在进入或退出VR模式时，放置在 on enter do 和 on exit do 插槽中的拼图会被触发。在无法建立VR会话时将触发放在 if unavailable do 插槽的拼图。

VR定位模式：

sitting or standing
  放置在离地面一定高度的不可移动的摄影机。世界坐标空间的中心位于用户脚下。此模式是推荐使用的，因为它与市场上最受欢迎的VR头戴设备兼容，如Meta Quest 1-3、HTC Vive等。
looking around
  位于零坐标处的不移动的摄影机。
room
  位于某些范围内（如房间）的移动摄影机。
walking
  无边界的移动摄影机。
viewer locked
  位于零坐标处的不移动的摄影机。所有内容都以视图为父节点。

为在VR模式下正确地控制摄影机，请确保在进入VR模式时，将其与一些空对象、虚拟对象或真实对象相对齐并设为父对象，在您选择的3D编辑器中进行定位。这一点很必要，因为VR会话对您的摄影机有完全的控制权，而您只能移动摄影机所依附的空对象或虚拟对象。

从Verge3D 4.3开始，您可以使用 camera control object(摄影机控制对象) 拼图代替手动创建控制对象。

#

### check AR mode(检查AR模式)

检查增强现实系统（WebXR）。如果成功，if available do 插槽中的拼图会被触发。如果浏览器不支持AR或者没有找到AR硬件，else if unavailable do 插槽中的拼图将被触发。else if Apple USDZ do 插槽中的拼图在没有找到WebXR兼容硬件但系统支持基于USDZ的Apple AR Quick Look技术时被触发。

请查看以下 章节 了解使用Verge3D创建AR应用的详细信息。

#

### enter AR mode(进入AR模式)

进入增强现实模式。在进入或退出AR模式时，放置在 on enter do 和 on exit do 插槽中的拼图会被触发。在无法建立AR会话时将触发放在 if unavailable do 插槽的拼图。

属性 allow HTML 用于在AR模式中显示HTML内容。如果指定，canvas container 元素的内容将被渲染在3D内容之上。此选项是实验性的。

AR定位模式：

looking around
  位于零坐标处的不移动的摄影机。此模式推荐用于典型的AR用例，例如在某个水平或垂直表面上定位模型。
sitting or standing
  放置在离地面一定高度的不可移动的摄影机。世界坐标空间的中心位于用户脚下。
room
  位于某些范围内（如房间）的移动摄影机。
walking
  无边界的移动摄影机。
viewer locked
  位于零坐标处的不移动的摄影机。所有内容都以视图为父节点。

#

### detect surface AR(检测AR平面)

在AR模式下，通过向前投射一条射线来检测平面。当相交时，该射线会在 on intersection do 插槽中触发拼图。如果没有发生相交或者设备处于预热状态，拼图就会触发 if missed do 插槽。

参数 smooth 是用来平滑化AR标记的运动。指定值为0表示禁用平滑，接近1的值表示最大的平滑。

#

### AR hit point(AR碰撞点)

由 detect surface AR(检测AR平面) 拼图检测到的表面点坐标。可以是 X、Y、Z 值，或 XYZ 矢量。

#

### AR hit normal(AR碰撞法线)

由 detect surface AR(检测AR平面) 拼图检测到的表面法线向量。可以是 X、Y、Z 值，或 XYZ 向量。

#

### camera control object(摄影机控制对象)

获取摄影机控制对象。通过偏移此对象（例如使用 set transform(设置变换) 拼图），您可以高效地在AR或VR模式下移动摄影机。这使您无需专门维护某个空对象来作为摄影机的父对象和捕捉目标，因为此对象在进入或退出WebXR时会自动创建或丢弃。

#

### on session event(在会话事件...)

捕获一个由VR设备（例如头戴式显示器或控制器按钮）产生的VR会话事件，并触发在 do 插槽中指定的拼图。

事件：

- select — 当用户按下并释放主控制器按钮时触发。
- selectstart — 当用户按下主控制器按钮时触发。
- selectend — 当用户释放主控制器按钮时触发。
- squeeze — 当用户挤压并释放控制器时触发。
- squeezestart — 当用户挤压一个控制器时触发。
- squeezeend — 当用户取消挤压控制器时触发。
- connected — 当VR控制器连接时被触发，即进入VR会话时。使用这个事件来初始化任何控制器逻辑。
- disconnected — 当VR控制器断开连接时被触发。

#

### traverse controllers(遍历控制器)

循环遍历所有连接的VR控制器，执行 do 插槽中指定的拼图。

#

### get controller property(获取控制器属性)

获取控制器的属性。

属性：

- object — 一个代表控制器的空对象。
- ray/reticle — 控制器的射线或十字线对象。
- handedness — 控制器的惯用手，以下之一："left"（左控制器），"right"（右控制器），"none"（未指定，可能是头戴式控制器）。
- target ray mode — 以下之一："gaze"（用于注视类设备，即Cardboard类设备），"tracked-pointer"（用于普通的手持控制器），"screen"（该事件与画布输入有关，目前尚未实现）。
- profiles — 控制器配置文件名称的列表。
- gamepad index — 控制器的游戏手柄索引，可以传递给 get gamepad property(获取游戏手柄属性) 拼图，以便从您的控制器获取更多信息，比如按钮/轴的状态。

#

### end AR/VR session(结束AR/VR会话)

结束一个虚拟现实或增强现实会话。

## 在使用拼图时遇到困难？

欢迎您随时在 论坛上提问！您还可以加入中文用户社区QQ群(171678760)，在线寻求帮助。