ARVRServer
Inherits: Object
AR 和 VR 功能的服务。
描述
AR/VR服务是我们高级的虚拟现实解决方案的核心,负责处理所有的过程。
教程
属性
|
方法
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 ) |
find_interface ( String name ) const | |
get_interface ( int idx ) const | |
get_interface_count ( ) const | |
get_interfaces ( ) const | |
get_reference_frame ( ) const | |
get_tracker ( int idx ) const | |
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,那么对这个信号做出反应,以添加与这个新追踪器相关的适当的ARVRController或ARVRAnchor节点,将会很重要。
删除跟踪器时触发。如果适当,您应该删除所有 ARVRController 或 ARVRAnchor 点。这不是强制性的,节点只是变为不活动状态,当新的跟踪器可用时将再次激活,即打开一个新的控制器来代替前一个控制器。
枚举
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的方向,只让玩家的位置居中。
属性说明
- ARVRInterface primary_interface
Setter | set_primary_interface(value) |
Getter | get_primary_interface() |
当前绑定到 ARVRServer
的主要 ARVRInterface。
- float world_scale
Default |
|
Setter | set_world_scale(value) |
Getter | get_world_scale() |
允许你根据你的游戏的单位来调整缩放。大多数AR/VR平台假定1个游戏世界单位=1个现实世界的米。
方法说明
- void add_interface ( ARVRInterface interface )
注册一个ARVRInterface对象。
- void add_tracker ( ARVRPositionalTracker tracker )
注册一个新的ARVRPositionalTracker,跟踪现实空间中的空间位置。
- void center_on_hmd ( RotationMode rotation_mode, bool keep_height )
这是正确理解的重要功能。 AR 和 VR 平台处理定位的方式略有不同。
对于不提供空间跟踪的平台,我们的原点 (0,0,0) 是 HMD 的位置,但您几乎无法控制玩家在现实世界中面对的方向。
对于提供空间跟踪的平台,我们的原点在很大程度上取决于系统。对于 OpenVR,原点通常是地面上跟踪空间的中心。对于其他平台,它通常是跟踪相机的位置。
此方法允许您将跟踪器置于 HMD 的位置。它将获取 HMD 的当前位置并使用它来调整您的所有跟踪数据;从本质上讲,将现实世界重新调整到玩家在游戏世界中的当前位置。
为了使这种方法产生可用的结果,跟踪信息必须可用。这通常在开始游戏后需要几帧。
您应该在几秒钟后调用此方法。例如,当用户请求重新调整显示时,按住控制器上的指定按钮一小段时间,或者当实现传送机制时。
- void clear_primary_interface_if ( ARVRInterface interface )
如果设置为提供的接口,则清除我们当前的主接口。
- ARVRInterface find_interface ( String name ) const
通过名字找到一个接口。例如,如果你的项目使用AR/VR平台的功能,你可以通过名称找到该平台的接口并初始化它。
- Transform get_hmd_transform ( )
返回主界面的变换。
- ARVRInterface get_interface ( int idx ) const
返回在我们的接口列表中以指定索引注册的接口。
- 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_usec和get_last_process_usec之间的差异。
- int get_last_process_usec ( )
返回最后一次 ARVRServer
进程回调的绝对时间戳(单位为 μs)。该值来自对 OS.get_ticks_usec 的内部调用。
- Transform get_reference_frame ( ) const
返回引用帧的变换。主要在内部使用,并公开在GDNative构建接口中。
- ARVRPositionalTracker get_tracker ( int idx ) const
返回给定ID处的位置追踪器。
- int get_tracker_count ( ) const
返回当前注册的跟踪器的数量。
- void remove_interface ( ARVRInterface interface )
移除此接口。
- void remove_tracker ( ARVRPositionalTracker tracker )
移除此位置跟踪器。