XRServer
继承: Object
用于 AR 和 VR 功能的服务。
描述
AR/VR 服务器是我们“高级虚拟现实”解决方案的核心,负责执行所有处理。
教程
属性
| ||
|
方法
void | add_interface ( XRInterface interface ) |
void | add_tracker ( XRPositionalTracker tracker ) |
void | center_on_hmd ( RotationMode rotation_mode, bool keep_height ) |
find_interface ( String name ) const | |
get_interface ( int idx ) const | |
get_interface_count ( ) const | |
get_interfaces ( ) const | |
get_reference_frame ( ) const | |
get_tracker ( StringName tracker_name ) const | |
get_trackers ( int tracker_types ) | |
void | remove_interface ( XRInterface interface ) |
void | remove_tracker ( XRPositionalTracker tracker ) |
信号
interface_added ( StringName interface_name )
添加新接口时触发。
interface_removed ( StringName interface_name )
当接口被移除时触发。
tracker_added ( StringName tracker_name, int type )
当一个新的追踪器被添加时发出。如果你不使用一个固定数量的控制器,或者如果你将 XRAnchor3D 用于一个 AR 解决方案,请务必对此信号做出反应,以添加与该新追踪器相适的 XRController3D 或 XRAnchor3D 节点 。
tracker_removed ( StringName tracker_name, int type )
当一个追踪器被移除时发出。如此,你应该移除任何 XRController3D 或 XRAnchor3D 点。这不是强制性的,这些节点只是变得不活动,并且当一个新的追踪器可用时,将再次激活(即打开一个新的控制器,来代替前一个控制器)。
tracker_updated ( StringName tracker_name, int type )
当现有追踪器被更新时发出。如果用户切换控制器,则可能会发生这种情况。
枚举
enum TrackerType:
TrackerType TRACKER_HEAD = 1
追踪器追踪玩家头部的位置。这通常是玩家眼睛之间的中心位置。请注意,对于手持式 AR 设备,这可能是该设备的当前位置。
TrackerType TRACKER_CONTROLLER = 2
追踪器追踪控制器的位置。
TrackerType TRACKER_BASESTATION = 4
追踪器追踪基站的位置。
TrackerType TRACKER_ANCHOR = 8
追踪器追踪 AR 锚的位置和大小。
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 的方向,只让玩家的位置居中。
属性说明
XRInterface primary_interface
void set_primary_interface ( XRInterface value )
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 ( Transform3D value )
Transform3D get_world_origin ( )
我们的跟踪空间在虚拟世界中的原点。渲染器会用到这个信息,根据新的跟踪数据来正确放置相机。
注意:这个属性由当前的 XROrigin3D 节点管理。暴露的目的是方便在 GDExtension 使用。
float world_scale = 1.0
允许你根据你的游戏的单位来调整缩放。大多数 AR/VR 平台假定 1 个游戏世界单位 = 1 个现实世界的米。
方法说明
void add_interface ( XRInterface interface )
注册一个 XRInterface 对象。
void add_tracker ( XRPositionalTracker tracker )
注册一个新的 XRPositionalTracker,用于跟踪现实空间中的一个空间位置。
void center_on_hmd ( RotationMode rotation_mode, bool keep_height )
正确地理解这个函数非常重要。AR 和 VR 平台处理定位的方式略有不同。
对于不提供空间跟踪的平台,我们的原点 (0,0,0) 是 HMD 的位置,但你几乎无法控制玩家在现实世界中面对的方向。
对于提供空间跟踪的平台,我们的原点在很大程度上取决于系统。对于 OpenVR,原点通常是地面上跟踪空间的中心。对于其他平台,它通常是跟踪相机的位置。
此方法允许你将跟踪器置于 HMD 的位置。它将获取 HMD 的当前位置并使用它来调整你的所有跟踪数据;从本质上讲,将现实世界重新调整到玩家在游戏世界中的当前位置。
为了使这种方法产生可用的结果,跟踪信息必须可用。这通常在开始游戏后需要几帧。
你应该在几秒钟后调用此方法。例如,当用户请求重新调整显示时,按住控制器上的指定按钮一小段时间,或者当实现传送机制时。
XRInterface find_interface ( String name ) const
通过名称 name
查找接口。例如,如果你的项目使用 AR/VR 平台的功能,你可以通过名称找到该平台的接口并初始化。
Transform3D get_hmd_transform ( )
返回主界面的变换。
XRInterface get_interface ( int idx ) const
返回在接口列表中给定 idx
索引处注册的接口。
int get_interface_count ( ) const
返回当前在AR/VR服务上注册的界面数量。如果你的项目支持多个AR/VR平台,你可以查看可用的界面,并向用户展示一个选择,或者简单地尝试初始化每个界面,并使用第一个返回 true
的界面。
Dictionary[] get_interfaces ( ) const
返回可用界面的列表,每个界面的ID和名称。
Transform3D get_reference_frame ( ) const
返回引用帧的变换。主要在内部使用,并公开以用于 GDExtension 构建接口。
XRPositionalTracker get_tracker ( StringName tracker_name ) const
返回具有给定 tracker_name
的位置追踪器。
Dictionary get_trackers ( int tracker_types )
返回 tracker_types
的追踪器字典。
void remove_interface ( XRInterface interface )
移除该 interface
。
void remove_tracker ( XRPositionalTracker tracker )
移除该位置 tracker
。
© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7
.
Built with Sphinx using a theme provided by Read the Docs.