ARVRServer

Inherits: Object

AR 和 VR 功能的服务。

描述

AR/VR服务是我们高级的虚拟现实解决方案的核心,负责处理所有的过程。

教程

属性

ARVRInterface

primary_interface

float

world_scale

1.0

方法

void

add_interface ( ARVRInterface interface )

void

add_tracker ( ARVRPositionalTracker tracker )

void

center_on_hmd ( RotationMode rotation_mode, bool keep_height )

void

clear_primary_interface_if ( ARVRInterface interface )

ARVRInterface

find_interface ( String name ) const

Transform

get_hmd_transform ( )

ARVRInterface

get_interface ( int idx ) const

int

get_interface_count ( ) const

Array

get_interfaces ( ) const

int

get_last_commit_usec ( )

int

get_last_frame_usec ( )

int

get_last_process_usec ( )

Transform

get_reference_frame ( ) const

ARVRPositionalTracker

get_tracker ( int idx ) const

int

get_tracker_count ( ) const

void

remove_interface ( ARVRInterface interface )

void

remove_tracker ( ARVRPositionalTracker tracker )

信号

  • interface_added ( String interface_name )

添加新接口时触发。


  • interface_removed ( String interface_name )

当接口被删除时触发。


当新的追踪器被添加时触发。如果你不使用固定数量的控制器,或者你在AR解决方案中使用ARVRAnchor,那么对这个信号做出反应,以添加与这个新追踪器相关的适当的ARVRControllerARVRAnchor节点,将会很重要。


删除跟踪器时触发。如果适当,您应该删除所有 ARVRControllerARVRAnchor 点。这不是强制性的,节点只是变为不活动状态,当新的跟踪器可用时将再次激活,即打开一个新的控制器来代替前一个控制器。

枚举

enum TrackerType:

  • TRACKER_CONTROLLER = 1 —- 追踪器追踪控制器的位置。

  • TRACKER_BASESTATION = 2 —- 追踪器追踪基站的位置。

  • TRACKER_ANCHOR = 4 —- 追踪器追踪AR锚的位置和大小。

  • TRACKER_ANY_KNOWN = 127 —- 内部用于过滤任何已知类型的跟踪器。

  • TRACKER_UNKNOWN = 128 —- 如果我们尚未设置跟踪器类型,则在内部使用。

  • TRACKER_ANY = 255 —- 在内部用于选择所有跟踪器。


enum RotationMode:

  • RESET_FULL_ROTATION = 0 —- 完全重置HMD的方向。无论用户在现实世界中看向哪个方向。将在虚拟世界中锁定视角。

  • RESET_BUT_KEEP_TILT = 1 —- 重置方向,但保持设备的倾斜度。因此,如果我们正在往下看,会继续往下看,但方向会被重置。

  • DONT_RESET_ROTATION = 2 —- 不重置HMD的方向,只让玩家的位置居中。

属性说明

Setter

set_primary_interface(value)

Getter

get_primary_interface()

当前绑定到 ARVRServer 的主要 ARVRInterface


Default

1.0

Setter

set_world_scale(value)

Getter

get_world_scale()

允许你根据你的游戏的单位来调整缩放。大多数AR/VR平台假定1个游戏世界单位=1个现实世界的米。

方法说明

注册一个ARVRInterface对象。


注册一个新的ARVRPositionalTracker,跟踪现实空间中的空间位置。


这是正确理解的重要功能。 AR 和 VR 平台处理定位的方式略有不同。

对于不提供空间跟踪的平台,我们的原点 (0,0,0) 是 HMD 的位置,但您几乎无法控制玩家在现实世界中面对的方向。

对于提供空间跟踪的平台,我们的原点在很大程度上取决于系统。对于 OpenVR,原点通常是地面上跟踪空间的中心。对于其他平台,它通常是跟踪相机的位置。

此方法允许您将跟踪器置于 HMD 的位置。它将获取 HMD 的当前位置并使用它来调整您的所有跟踪数据;从本质上讲,将现实世界重新调整到玩家在游戏世界中的当前位置。

为了使这种方法产生可用的结果,跟踪信息必须可用。这通常在开始游戏后需要几帧。

您应该在几秒钟后调用此方法。例如,当用户请求重新调整显示时,按住控制器上的指定按钮一小段时间,或者当实现传送机制时。


如果设置为提供的接口,则清除我们当前的主接口。


通过名字找到一个接口。例如,如果你的项目使用AR/VR平台的功能,你可以通过名称找到该平台的接口并初始化它。


返回主界面的变换。


返回在我们的接口列表中以指定索引注册的接口。


  • int get_interface_count ( ) const

返回当前在AR/VR服务器上注册的接口数量。如果你的项目支持多个AR/VR平台,你可以查看可用的接口,并向用户展示一个选择,或者简单地尝试初始化每个接口,并使用第一个返回true的接口。


  • Array get_interfaces ( ) const

返回可用接口的列表,每个接口的ID和名称。


  • int get_last_commit_usec ( )

返回 AR/VR 眼睛最后一次 ARVRServer 提交到 VisualServer 的绝对时间戳(单位为 μs)。该值来自对 OS.get_ticks_usec 的内部调用。


  • int get_last_frame_usec ( )

返回最后一帧的持续时间(单位:μs)。这被计算为提交时get_last_commit_usecget_last_process_usec之间的差异。


  • int get_last_process_usec ( )

返回最后一次 ARVRServer 进程回调的绝对时间戳(单位为 μs)。该值来自对 OS.get_ticks_usec 的内部调用。


返回引用帧的变换。主要在内部使用,并公开在GDNative构建接口中。


返回给定ID处的位置追踪器。


  • int get_tracker_count ( ) const

返回当前注册的跟踪器的数量。


移除此接口。


移除此位置跟踪器。