ARVRInterface¶
Inherited By: ARVRInterfaceGDNative, MobileVRInterface, WebXRInterface
AR/VR接口实现的基类。
描述¶
需要实现这个类才能使 AR 或 VR 平台可供 Godot 使用,并且应实现为 C++ 模块或 GDNative 模块,注意,对于 GDNative,应使用子类 ARVRScriptInterface。部分接口向 GDScript 公开,因而,您可以检测、启用和配置 AR 或 VR 平台。
接口应以这样的方式编写,只需启用它们就可以为我们提供工作配置。您可以通过ARVRServer查询可用接口。
教程¶
属性¶
|
||
|
||
|
方法¶
get_capabilities ( ) const |
|
get_name ( ) const |
|
get_tracking_status ( ) const |
|
initialize ( ) |
|
is_stereo ( ) |
|
void |
uninitialize ( ) |
枚举¶
enum Capabilities:
ARVR_NONE = 0 --- 没有ARVR功能。
ARVR_MONO = 1 --- 此接口可以与正常的渲染输出一起工作,非基于HMD的AR。
ARVR_STEREO = 2 --- 该接口支持立体渲染。
ARVR_AR = 4 --- 该接口支持 AR,视频背景和真实世界跟踪。
ARVR_EXTERNAL = 8 --- 这个接口输出到一个外部设备。如果使用主视窗,屏幕上的输出是一个未经修改的左眼或右眼的缓冲区,如果没有将视窗尺寸更改为get_render_targetsize的相同长宽比,则被拉伸。使用一个单独的视窗节点可以释放出主视窗,用于其他用途。
enum Eyes:
EYE_MONO = 0 --- Mono输出,这主要是在相机节点检索定位信息时,或者在不支持立体视景渲染时,内部使用。
EYE_LEFT = 1 --- 左眼输出,这主要是在为左眼渲染图像和获得定位和投影信息时内部使用。
EYE_RIGHT = 2 --- 右眼输出,这主要是在为右眼渲染图像和获得定位和投影信息时内部使用。
enum Tracking_status:
ARVR_NORMAL_TRACKING = 0 --- 追踪行为符合预期。
ARVR_EXCESSIVE_MOTION = 1 --- 过度运动会阻碍追踪,即玩家的移动速度超过追踪的速度。
ARVR_INSUFFICIENT_FEATURES = 2 --- 跟踪受到功能不足的阻碍,太暗(对于基于相机的跟踪),玩家被阻碍等。
ARVR_UNKNOWN_TRACKING = 3 --- 我们不知道跟踪的状态,或者这个接口未提供反馈。
ARVR_NOT_TRACKING = 4 --- 追踪功能失效,即相机未插电或被遮挡,灯塔关闭,等等。
属性说明¶
bool ar_is_anchor_detection_enabled
Default |
|
Setter |
set_anchor_detection_is_enabled(value) |
Getter |
get_anchor_detection_is_enabled() |
在 AR 接口上,如果启用锚点检测,则为 true
。
bool interface_is_initialized
Default |
|
Setter |
set_is_initialized(value) |
Getter |
is_initialized() |
true
如果这个接口已经初始化。
bool interface_is_primary
Default |
|
Setter |
set_is_primary(value) |
Getter |
is_primary() |
true
如果这是个主接口。
方法说明¶
int get_camera_feed_id ( )
如果这是一个需要显示相机画面作为背景的AR界面,此方法返回该界面的CameraServer中的画面ID。
int get_capabilities ( ) const
返回Capabilities标签的组合,提供关于这个接口功能的信息。
String get_name ( ) const
返回该接口的名称,如OpenVR、OpenHMD、ARKit等。
Vector2 get_render_targetsize ( )
返回在VR平台应用镜头失真等内容之前渲染的中间结果的分辨率。
Tracking_status get_tracking_status ( ) const
如果支持,返回我们的跟踪状态。这将使你能够向用户反馈,是否存在位置跟踪的问题。
bool initialize ( )
调用这个来初始化这个接口。第一个被初始化的接口确定为主接口,用于渲染输出。
在初始化了接口之后,需要启用视窗的AR/VR模式,将开始渲染。
注意: 对于任何使用Godot主输出的设备,如移动VR,你必须在主视窗上启用AR/VR模式。
如果你为一个处理自己输出的平台这样做,如OpenVR,Godot就会在屏幕上只显示一只眼睛而不失真。另外,你可以在场景中添加一个单独的视窗节点,在该视窗上启用AR/VR。它将被用来输出到HMD,让你在主窗口中做你喜欢的事情,比如用一个单独的相机作为旁观者相机,或者渲染一些完全不同的东西。
虽然目前没有使用,但你可以激活其他接口。如果你想跟踪其他平台的控制器,可能希望这样做。然而,此时,只有一个界面可以渲染到HMD。
bool is_stereo ( )
如果这个接口的当前是立体声输出,返回true
。
void uninitialize ( )
关闭接口。