XRServer

继承: Object

用于AR和VR功能的服务器。

描述

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

属性

bool

camera_locked_to_origin

false

XRInterface

primary_interface

Transform3D

world_origin

Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)

float

world_scale

1.0

方法


信号

interface_added(interface_name: StringName) 🔗

添加新接口时发出。


interface_removed(interface_name: StringName) 🔗

删除接口时发出。


reference_frame_changed() 🔗

当参考帧变换改变时发射。


tracker_added(tracker_name: StringName, type: int) 🔗

添加新跟踪器时发出。如果您不使用固定数量的控制器,或者如果您将XRAnchor用于AR解决方案,则对此信号做出反应以添加与此新跟踪器相关的适当XRControllerXRAnchor节点非常重要。


tracker_removed(tracker_name: StringName, type: int) 🔗

删除跟踪器时发出。如果适用,您应该删除任何XRControllerXRAnchor点。这不是强制性的,节点只是变得不活动,当新的跟踪器可用时(即打开一个新的控制器来代替以前的控制器),节点将再次活动。


tracker_updated(tracker_name: StringName, type: int) 🔗

更新现有跟踪器时发出。如果用户切换控制器,可能会发生这种情况。


枚举

enum TrackerType: 🔗

TrackerType TRACKER_HEAD = 1

跟踪器跟踪用户头部的位置。这通常是以用户眼睛为中心的位置。请注意,对于手持AR设备,这可以是设备的当前位置。

TrackerType TRACKER_CONTROLLER = 2

跟踪器跟踪控制器的位置。

TrackerType TRACKER_BASESTATION = 4

跟踪器跟踪基站的位置。

TrackerType TRACKER_ANCHOR = 8

跟踪器跟踪AR锚点的位置和大小。

TrackerType TRACKER_HAND = 16

跟踪器跟踪手的位置和关节。

TrackerType TRACKER_BODY = 32

跟踪器跟踪身体的位置和关节。

TrackerType TRACKER_FACE = 64

跟踪器跟踪人脸的表情。

TrackerType TRACKER_ANY_KNOWN = 127

内部用于过滤任何已知类型的跟踪器。

TrackerType TRACKER_UNKNOWN = 128

如果我们尚未设置跟踪器类型,则在内部使用。

TrackerType TRACKER_ANY = 255

在内部用于选择所有跟踪器。


enum RotationMode: 🔗

RotationMode RESET_FULL_ROTATION = 0

完全重置HMD的方向。无论用户在现实世界中看向哪个方向。用户将在虚拟世界中遥望前方。

RotationMode RESET_BUT_KEEP_TILT = 1

重置方向,但保持设备的倾斜。所以如果我们往下看,我们继续往下看,但航向会被重置。

RotationMode DONT_RESET_ROTATION = 2

不会重置HMD的方向,只有播放器的位置居中。


属性说明

bool camera_locked_to_origin = false 🔗

  • void set_camera_locked_to_origin(value: bool)

  • bool is_camera_locked_to_origin()

如果设置为true,场景将被渲染,就好像摄像机被锁定到XROrigin一样。

注意:这不会为用户提供非常舒适的体验。此设置用于进行基准测试或自动化测试,您希望在其中控制通过代码呈现的内容。


XRInterface primary_interface 🔗

当前绑定到XRServer的主XRInterface


Transform3D world_origin = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗

我们在虚拟世界中跟踪空间的当前来源。渲染器使用它来使用新的跟踪数据正确定位摄像机。

注意:此属性由当前的XROrigin节点管理。它被公开以供从S3Extension访问。


float world_scale = 1.0 🔗

  • void set_world_scale(value: float)

  • float get_world_scale()

应用世界与现实世界相比的规模。默认情况下,大多数AR/VR平台假设1个应用单元对应1个现实世界的仪表。


方法说明

void add_interface(interface: XRInterface) 🔗

注册一个XRInterface对象。


void add_tracker(tracker: XRTracker) 🔗

注册一个跟踪物理对象的新XRTracker


void center_on_hmd(rotation_mode: RotationMode, keep_height: bool) 🔗

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

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

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

这种方法允许你把跟踪器集中在HMD的位置上。它将获取HMD的当前位置,并用它来调整你所有的跟踪数据;本质上,将现实世界与用户在应用世界中的当前位置重新对齐。

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

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


void clear_reference_frame() 🔗

清除先前调用center_on_hmd()设置的参考帧。


XRInterface find_interface(name: String) const 🔗

通过其name查找接口。例如,如果您的项目使用AR/VR平台的功能,您可以通过名称找到该平台的接口并对其进行初始化。


Transform3D get_hmd_transform() 🔗

返回主接口的转换。


XRInterface get_interface(idx: int) const 🔗

返回在接口列表中给定idx索引处注册的接口。


int get_interface_count() const 🔗

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


Array[Dictionary] get_interfaces() const 🔗

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


Transform3D get_reference_frame() const 🔗

返回参考帧变换。主要在内部使用并为S3Extension构建接口公开。


XRTracker get_tracker(tracker_name: StringName) const 🔗

返回具有给定tracker_name的位置跟踪器。


Dictionary get_trackers(tracker_types: int) 🔗

返回tracker_types的跟踪器字典。


void remove_interface(interface: XRInterface) 🔗

删除此interface


void remove_tracker(tracker: XRTracker) 🔗

删除此tracker