Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

VisualInstance3D

继承: Node3D < Node < Object

派生: Decal, FogVolume, GeometryInstance3D, GPUParticlesAttractor3D, GPUParticlesCollision3D, Light3D, LightmapGI, ReflectionProbe, RootMotionView, VisibleOnScreenNotifier3D, VoxelGI

所有可视 3D 节点的父节点。

描述

VisualInstance3D 可用于将资源连接到视觉表示。所有的可视化 3D 节点都继承自 VisualInstance3D。一般来说,你不应该直接访问 VisualInstance3D 的属性,因为它们是由继承自 VisualInstance3D 的节点访问和管理的。VisualInstance3DRenderingServer 实例的节点表示。

属性

int

layers

1

float

sorting_offset

0.0

bool

sorting_use_aabb_center

方法

AABB

_get_aabb ( ) virtual const

AABB

get_aabb ( ) const

RID

get_base ( ) const

RID

get_instance ( ) const

bool

get_layer_mask_value ( int layer_number ) const

void

set_base ( RID base )

void

set_layer_mask_value ( int layer_number, bool value )


属性说明

int layers = 1

  • void set_layer_mask ( int value )

  • int get_layer_mask ( )

绘制该 VisualInstance3D 的渲染层。

Camera3D 的剔除掩码包含该 VisualInstance3D 所设置的任何渲染层时,该对象才在该相机中可见。

对于 Light3D,可以用于控制指定的灯光能够影响哪些 VisualInstance3D。对于 GPUParticles3D,可以用于控制哪些粒子受到吸引器的影响。对于 Decal,可以用于控制哪些 VisualInstance3D 受到指定贴花的影响。

要在脚本中更加方便地调整 layers,请使用 get_layer_mask_valueset_layer_mask_value

注意:VoxelGI、SDFGI、LightmapGI 在确定全局光照影响时始终会考虑所有渲染层。如果不希望这样,请将网格的 GeometryInstance3D.gi_mode 设置为 GeometryInstance3D.GI_MODE_DISABLED,将灯光的 Light3D.light_bake_mode 设置为 Light3D.BAKE_DISABLED,这样就能从全局光照中剔除。


float sorting_offset = 0.0

  • void set_sorting_offset ( float value )

  • float get_sorting_offset ( )

按深度排序时该 VisualInstance3D 的深度将调整的量。使用与引擎相同的单位(通常是米)。将其调整为更高的值,将使 VisualInstance3D 可靠地绘制在位于同一位置的其他 VisualInstance3D 之上。为确保它始终绘制在它周围的其他对象之上(不位于同一位置),请将值设置为大于该 VisualInstance3D 与附近其他 VisualInstance3D 之间的距离值。


bool sorting_use_aabb_center

  • void set_sorting_use_aabb_center ( bool value )

  • bool is_sorting_use_aabb_center ( )

如果为 true,则该对象会根据其 AABB 中心点排序。否则会根据其全局位置排序。

对 3D 模型而言,根据 AABB 的中心点排序一般更为精确。使用 GPUParticles3DCPUParticles3D 时,根据位置排序能够更好地控制绘制顺序。


方法说明

AABB _get_aabb ( ) virtual const

目前没有这个方法的描述。请帮我们贡献一个


AABB get_aabb ( ) const

返回此 VisualInstance3DAABB(也叫边界框)。


RID get_base ( ) const

返回与此 VisualInstance3D 相关联的资源的 RID。例如,如果该节点是 MeshInstance3D,则会返回相关联的 Mesh 的 RID。


RID get_instance ( ) const

返回这个实例的 RID。这个 RID 与 RenderingServer.instance_create 返回的 RID 相同。如果你想为这个 VisualInstance3D 直接调用 RenderingServer 函数,就需要这个 RID。


bool get_layer_mask_value ( int layer_number ) const

返回是否启用了 layers 的指定层,该层由一个介于 1 和 20 之间的 layer_number 指定。


void set_base ( RID base )

设置由该 VisualInstance3D 实例化的资源,这将改变引擎在底层对该 VisualInstance3D 的处理方式。相当于 RenderingServer.instance_set_base


void set_layer_mask_value ( int layer_number, bool value )

基于 value,启用或禁用 layers 中的指定层,该层由一个介于 1 和 20 之间的给定 layer_number 指定。