Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
OpenXRCompositionLayer
实验性: This class may be changed or removed in future versions.
派生: OpenXRCompositionLayerCylinder, OpenXRCompositionLayerEquirect, OpenXRCompositionLayerQuad
所有 OpenXR 合成层节点的父类。
描述
合成层允许 XR 合成器通过保留其质量的特殊投影,从而在头戴式设备内显示 2D 视口。这样可以在保持图层的原始分辨率的同时,渲染清晰的文本。
注意:如果 OpenXR 运行时不支持给定的合成层类型,则可以使用 ViewportTexture 生成后备网格,以模拟合成层。
属性
|
||
|
||
|
||
|
||
|
方法
intersects_ray(origin: Vector3, direction: Vector3) const |
|
is_natively_supported() const |
属性说明
启用使用其 alpha 通道混合图层的功能。
可以与 Viewport.transparent_bg 结合使用,以便为图层提供透明背景。
Vector2i android_surface_size = Vector2i(1024, 1024)
🔗
如果启用了 use_android_surface,则为要创建的 Android 表面的大小。
bool enable_hole_punch = false
🔗
启用一种称为“打孔”的技术,该技术允许将合成层置于主投影层后面(即将 sort_order 设置为负值),同时在 Godot 渲染的所有内容上“打一个洞”,以便该层仍然可见。
这可用于创建合成层与 Godot 渲染的所有内容存在于同一 3D 空间中的幻觉,使对象看起来既从合成层的后面又从合成层的前面经过。
SubViewport layer_viewport 🔗
void set_layer_viewport(value: SubViewport)
SubViewport get_layer_viewport()
合成层上渲染的 SubViewport。
合成层的排序顺序。数字较大的层显示在数字较小的层之前。
注意:使用回退网格时无效。
bool use_android_surface = false
🔗
如果启用,则会创建 Android 表面(大小为 android_surface_size),为合成层提供 2D 内容,不使用 layer_viewport。
如何获取该表面以便应用程序在表面上进行绘制,见 get_android_surface()。
注意:仅在 Android 构建上有效。
方法说明
JavaObject get_android_surface() 🔗
如果启用了 use_android_surface 并且 OpenXR 已创建 android.view.Surface
,则返回代表该表面的 JavaObject。否则返回 null
。
注意:表面只能在活动的 OpenXR 会话中创建。因此,如果 use_android_surface 是在 OpenXR 会话外启用的,就需要等到启动全新的会话才会创建。
Vector2 intersects_ray(origin: Vector3, direction: Vector3) const 🔗
返回给定射线与合成层相交的 UV 坐标。origin
和 direction
必须位于全局空间中。
如果射线不相交,则返回 Vector2(-1.0, -1.0)
。
bool is_natively_supported() const 🔗
如果 OpenXR 运行时本身支持该合成层类型,则返回 true
。
注意:仅在 OpenXR 会话启动后才会返回准确结果。