OmniLight3D

继承: Light3D < VisualInstance3D < Node3D < Node < Object

全向光,如灯泡或蜡烛。

描述

全向光是 Light3D 的一类,可以向所有方向发射光。光随距离而衰减,该衰减可以通过修改其能量、半径和衰减参数来配置。

注意:使用移动渲染方式时,每个网格资源上只能显示 8 个全向灯。尝试在单个网格资源上显示 8 个以上的全向灯,将导致全向灯随着相机移动而闪烁。使用 Compatibility 渲染方式时,默认情况下每个网格资源上只能显示 8 个全向灯,但可以通过调整 ProjectSettings.rendering/limits/opengl/max_lights_per_object 来增加。

注意:当使用 Mobile 或 Compatibility 渲染方法时,全向灯只会正确影响可见性 AABB 与该灯光的 AABB 相交的网格。如果使用了着色器将网格进行了变形,超出了 AABB 的范围,则必须将该网格的 GeometryInstance3D.extra_cull_margin 增大。否则灯光在该网格上可能不可见。

教程

属性

float

omni_attenuation

1.0

float

omni_range

5.0

ShadowMode

omni_shadow_mode

1

float

shadow_normal_bias

1.0 (overrides Light3D)


枚举

enum ShadowMode: 🔗

ShadowMode SHADOW_DUAL_PARABOLOID = 0

将阴影渲染到双抛物面纹理。比 SHADOW_CUBE 更快,但质量较差。

ShadowMode SHADOW_CUBE = 1

将阴影渲染至立方体贴图。比 SHADOW_DUAL_PARABOLOID 更慢,但质量更高。


属性说明

float omni_attenuation = 1.0 🔗

控制全向灯的距离衰减函数。

值为 0.0 将在大部分范围内保持恒定亮度,但会平滑地衰减范围边缘的光线。对于物理上准确的灯光,请使用值 2.0,因为它会产生正确的平方反比衰减。

注意:将衰减设置为 2.0 或更高可能会导致远处的物体接收到的光线最少,即使在范围内也是如此。例如,在 4096 的范围内,100 单位处的物体会衰减 0.0001 倍。默认亮度为 1,光线在该距离处不可见。

注意:使用负值或高于 10.0 的值可能会导致意外结果。


float omni_range = 5.0 🔗

该灯光的半径。请注意,根据使用的 omni_attenuation,有效照明区域可能看起来更小。无论使用 omni_attenuation 为何值,光线永远不会到达该半径之外的任何地方。

注意:omni_range 不受 Node3D.scale(无论是该灯光的缩放还是其父节点的缩放)的影响。


ShadowMode omni_shadow_mode = 1 🔗

ShadowMode