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...
VisualInstance3D
派生: Decal, FogVolume, GeometryInstance3D, GPUParticlesAttractor3D, GPUParticlesCollision3D, Light3D, LightmapGI, OccluderInstance3D, OpenXRVisibilityMask, ReflectionProbe, RootMotionView, VisibleOnScreenNotifier3D, VoxelGI
所有可视 3D 节点的父节点。
描述
VisualInstance3D 可用于将资源连接到视觉表示。所有的可视化 3D 节点都继承自 VisualInstance3D。一般来说,你不应该直接访问 VisualInstance3D 的属性,因为它们是由继承自 VisualInstance3D 的节点访问和管理的。VisualInstance3D 是 RenderingServer 实例的节点表示。
属性
|
||
|
||
方法
_get_aabb() virtual const |
|
get_aabb() const |
|
get_base() const |
|
get_instance() const |
|
get_layer_mask_value(layer_number: int) const |
|
void |
|
void |
set_layer_mask_value(layer_number: int, value: bool) |
属性说明
绘制该 VisualInstance3D 的渲染层。
Camera3D 的剔除掩码包含该 VisualInstance3D 所设置的任何渲染层时,该对象才在该相机中可见。
对于 Light3D,可以用于控制指定的灯光能够影响哪些 VisualInstance3D。对于 GPUParticles3D,可以用于控制哪些粒子受到吸引器的影响。对于 Decal,可以用于控制哪些 VisualInstance3D 受到指定贴花的影响。
要在脚本中更加方便地调整 layers,请使用 get_layer_mask_value() 和 set_layer_mask_value()。
注意:VoxelGI、SDFGI、LightmapGI 在确定全局光照影响时始终会考虑所有渲染层。如果不希望这样,请将网格的 GeometryInstance3D.gi_mode 设置为 GeometryInstance3D.GI_MODE_DISABLED,将灯光的 Light3D.light_bake_mode 设置为 Light3D.BAKE_DISABLED,这样就能从全局光照中剔除。
按深度排序时该 VisualInstance3D 的深度将调整的量。使用与引擎相同的单位(通常是米)。将其调整为更高的值,将使 VisualInstance3D 可靠地绘制在位于同一位置的其他 VisualInstance3D 之上。为确保它始终绘制在它周围的其他对象之上(不位于同一位置),请将值设置为大于该 VisualInstance3D 与附近其他 VisualInstance3D 之间的距离值。
bool sorting_use_aabb_center 🔗
如果为 true
,则该对象会根据其 AABB 中心点排序。否则会根据其全局位置排序。
对 3D 模型而言,根据 AABB 的中心点排序一般更为精确。使用 GPUParticles3D 和 CPUParticles3D 时,根据位置排序能够更好地控制绘制顺序。
方法说明
AABB _get_aabb() virtual const 🔗
该方法目前没有描述,请帮我们贡献一个吧!
返回此 VisualInstance3D 的 AABB(也叫边界框)。
返回与此 VisualInstance3D 相关联的资源的 RID。例如,如果该节点是 MeshInstance3D,则会返回相关联的 Mesh 的 RID。
返回这个实例的 RID。这个 RID 与 RenderingServer.instance_create() 返回的 RID 相同。如果你想为这个 VisualInstance3D 直接调用 RenderingServer 函数,就需要这个 RID。
bool get_layer_mask_value(layer_number: int) const 🔗
返回是否启用了 layers 的指定层,该层由一个介于 1 和 20 之间的 layer_number
指定。
设置由该 VisualInstance3D 实例化的资源,这将改变引擎在底层对该 VisualInstance3D 的处理方式。相当于 RenderingServer.instance_set_base()。
void set_layer_mask_value(layer_number: int, value: bool) 🔗
基于 value
,启用或禁用 layers 中的指定层,该层由一个介于 1 和 20 之间的给定 layer_number
指定。