XRServer¶
继承: Object
用于AR和VR功能的服务器。
描述¶
AR/VR服务器是我们高级和虚拟现实解决方案的核心,负责处理所有处理。
属性¶
|
||
|
||
|
方法¶
void |
add_interface(interface: XRInterface) |
void |
add_tracker(tracker: XRTracker) |
void |
center_on_hmd(rotation_mode: RotationMode, keep_height: bool) |
void |
|
find_interface(name: String) const |
|
get_interface(idx: int) const |
|
get_interface_count() const |
|
get_interfaces() const |
|
get_reference_frame() const |
|
get_tracker(tracker_name: StringName) const |
|
get_trackers(tracker_types: int) |
|
void |
remove_interface(interface: XRInterface) |
void |
remove_tracker(tracker: XRTracker) |
信号¶
interface_added(interface_name: StringName) 🔗
添加新接口时发出。
interface_removed(interface_name: StringName) 🔗
删除接口时发出。
reference_frame_changed() 🔗
当参考帧变换改变时发射。
tracker_added(tracker_name: StringName, type: int) 🔗
添加新跟踪器时发出。如果您不使用固定数量的控制器,或者如果您将XRAnchor用于AR解决方案,则对此信号做出反应以添加与此新跟踪器相关的适当XRController或XRAnchor节点非常重要。
tracker_removed(tracker_name: StringName, type: int) 🔗
删除跟踪器时发出。如果适用,您应该删除任何XRController或XRAnchor点。这不是强制性的,节点只是变得不活动,当新的跟踪器可用时(即打开一个新的控制器来代替以前的控制器),节点将再次活动。
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 🔗
如果设置为true,场景将被渲染,就好像摄像机被锁定到XROrigin一样。
注意:这不会为用户提供非常舒适的体验。此设置用于进行基准测试或自动化测试,您希望在其中控制通过代码呈现的内容。
XRInterface primary_interface 🔗
void set_primary_interface(value: XRInterface)
XRInterface get_primary_interface()
当前绑定到XRServer的主XRInterface。
Transform3D world_origin = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗
void set_world_origin(value: Transform3D)
Transform3D get_world_origin()
我们在虚拟世界中跟踪空间的当前来源。渲染器使用它来使用新的跟踪数据正确定位摄像机。
注意:此属性由当前的XROrigin节点管理。它被公开以供从S3Extension访问。
应用世界与现实世界相比的规模。默认情况下,大多数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。