ARVRInterface

Inherits: Reference < Object

Inherited By: ARVRInterfaceGDNative, MobileVRInterface, WebXRInterface

AR/VR接口实现的基类。

描述

需要实现这个类才能使 AR 或 VR 平台可供 Godot 使用,并且应实现为 C++ 模块或 GDNative 模块,注意,对于 GDNative,应使用子类 ARVRScriptInterface。部分接口向 GDScript 公开,因而,您可以检测、启用和配置 AR 或 VR 平台。

接口应以这样的方式编写,只需启用它们就可以为我们提供工作配置。您可以通过ARVRServer查询可用接口。

教程

属性

bool

ar_is_anchor_detection_enabled

false

bool

interface_is_initialized

false

bool

interface_is_primary

false

方法

int

get_camera_feed_id ( )

int

get_capabilities ( ) const

String

get_name ( ) const

Vector2

get_render_targetsize ( )

Tracking_status

get_tracking_status ( ) const

bool

initialize ( )

bool

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

false

Setter

set_anchor_detection_is_enabled(value)

Getter

get_anchor_detection_is_enabled()

在 AR 接口上,如果启用锚点检测,则为 true


  • bool interface_is_initialized

Default

false

Setter

set_is_initialized(value)

Getter

is_initialized()

true 如果这个接口已经初始化。


  • bool interface_is_primary

Default

false

Setter

set_is_primary(value)

Getter

is_primary()

true 如果这是个主接口。

方法说明

  • int get_camera_feed_id ( )

如果这是一个需要显示相机画面作为背景的AR界面,此方法返回该界面的CameraServer中的画面ID。


  • int get_capabilities ( ) const

返回Capabilities标签的组合,提供关于这个接口功能的信息。


返回该接口的名称,如OpenVR、OpenHMD、ARKit等。


返回在VR平台应用镜头失真等内容之前渲染的中间结果的分辨率。


如果支持,返回我们的跟踪状态。这将使你能够向用户反馈,是否存在位置跟踪的问题。


  • bool initialize ( )

调用这个来初始化这个接口。第一个被初始化的接口确定为主接口,用于渲染输出。

在初始化了接口之后,需要启用视窗的AR/VR模式,将开始渲染。

注意: 对于任何使用Godot主输出的设备,如移动VR,你必须在主视窗上启用AR/VR模式。

如果你为一个处理自己输出的平台这样做,如OpenVR,Godot就会在屏幕上只显示一只眼睛而不失真。另外,你可以在场景中添加一个单独的视窗节点,在该视窗上启用AR/VR。它将被用来输出到HMD,让你在主窗口中做你喜欢的事情,比如用一个单独的相机作为旁观者相机,或者渲染一些完全不同的东西。

虽然目前没有使用,但你可以激活其他接口。如果你想跟踪其他平台的控制器,可能希望这样做。然而,此时,只有一个界面可以渲染到HMD。


如果这个接口的当前是立体声输出,返回true


  • void uninitialize ( )

关闭接口。