BakedLightmap

Inherits: VisualInstance < CullInstance < Spatial < Node < Object

场景的预渲染间接光照贴图。

描述

烘焙光照贴图是向场景添加间接(或烘焙)光照的替代工作流程。与 GIProbe 方法不同,烘焙光照贴图在低端 PC 和移动设备上运行良好,因为它们在运行时几乎不消耗资源。

程序化生成: 烘焙光照贴图的功能只在编辑器中可用。也就是说,BakedLightmap 不适合程序化生成、用户搭建的关卡。想要支持程序化生成或者用户搭建关卡,请使用 GIProbe

注意: 由于光照贴图的工作原理,大多数属性只有在光照贴图再次烘焙后才会看到效果。

教程

属性

bool

atlas_generate

true

int

atlas_max_size

4096

float

bias

0.005

float

bounce_indirect_energy

1.0

int

bounces

3

float

capture_cell_size

0.5

bool

capture_enabled

true

float

capture_propagation

1.0

BakeQuality

capture_quality

1

float

default_texels_per_unit

16.0

Color

environment_custom_color

float

environment_custom_energy

Sky

environment_custom_sky

Vector3

environment_custom_sky_rotation_degrees

Color

environment_min_light

Color( 0, 0, 0, 1 )

EnvironmentMode

environment_mode

0

Vector3

extents

Vector3( 10, 10, 10 )

String

image_path

BakedLightmapData

light_data

BakeQuality

quality

1

bool

use_color

true

bool

use_denoiser

true

bool

use_hdr

true

方法

BakeError

bake ( Node from_node=null, String data_save_path=”” )

枚举

enum BakeQuality:

  • BAKE_QUALITY_LOW = 0 —- 最低烘焙质量模式。计算速度最快。

  • BAKE_QUALITY_MEDIUM = 1 —- 默认烘焙质量模式。

  • BAKE_QUALITY_HIGH = 2 —- 更高的烘焙质量模式。需要更长的时间来计算。

  • BAKE_QUALITY_ULTRA = 3 —- 最高的烘烤质量模式。需要最长的时间来计算。


enum BakeError:

  • BAKE_ERROR_OK = 0 —- 烘焙成功。

  • BAKE_ERROR_NO_SAVE_PATH = 1 —- 如果没有找到合适的保存路径,则返回。这可能发生在没有指定image_path或者保存位置无效的情况下。

  • BAKE_ERROR_NO_MESHES = 2 —- 当前未使用.

  • BAKE_ERROR_CANT_CREATE_IMAGE = 3 —- 当烘焙器不能将每个网格的纹理保存到文件时返回。

  • BAKE_ERROR_LIGHTMAP_SIZE = 4 —- 生成的光照贴图尺寸过大。

  • BAKE_ERROR_INVALID_MESH = 5 —- 有些网格包含[0,1]范围以外的UV2值。

  • BAKE_ERROR_USER_ABORTED = 6 —- 如果用户取消了烘烤,则返回。

  • BAKE_ERROR_NO_LIGHTMAPPER = 7 —- 如果不能创建光照贴图器,则返回。除非你使用的是自定义的光照贴图器,否则请将此报告为bug。

  • BAKE_ERROR_NO_ROOT = 8 —- 没有根节点可以开始烘焙。要么提供from_node参数,要么将此节点附加到一个被用作根节点的父节点。


enum EnvironmentMode:

  • ENVIRONMENT_MODE_DISABLED = 0 —- 烘焙过程中不使用任何环境。

  • ENVIRONMENT_MODE_SCENE = 1 —- 烘焙环境会自动从当前场景中获取。

  • ENVIRONMENT_MODE_CUSTOM_SKY = 2 —- 在烘焙过程中使用自定义天空作为环境。

  • ENVIRONMENT_MODE_CUSTOM_COLOR = 3 —- 烘焙过程中使用自定义纯色作为环境。

属性说明

  • bool atlas_generate

Default

true

Setter

set_generate_atlas(value)

Getter

is_generate_atlas_enabled()

启用后,光照贴图会将所有网格的纹理合并为一个大的分层纹理。 GLES2 不支持。


  • int atlas_max_size

Default

4096

Setter

set_max_atlas_size(value)

Getter

get_max_atlas_size()

每个光照贴图层的最大尺寸,仅在启用 atlas_generate 时使用。


Default

0.005

Setter

set_bias(value)

Getter

get_bias()

在烘焙过程中使用光线投射偏置来避免浮点数精度问题。


  • float bounce_indirect_energy

Default

1.0

Setter

set_bounce_indirect_energy(value)

Getter

get_bounce_indirect_energy()

每次反弹的能量乘数。较高的值将使间接照明更亮。 1.0 的值表示与物理相一致的行为,但在使用少量反弹时,可以使用更高的值使间接照明传播更明显。这可用于通过降低bounces的数量然后增加 bounce_indirect_energy 来加快烘焙时间。与 BakedLightmapData.energy 不同,此属性不会影响灯光节点、自发光材质和环境发出的直接光照。

注意: bounce_indirect_energy 仅在bounces 设置为大于或等于1的值时有效。


Default

3

Setter

set_bounces(value)

Getter

get_bounces()

烘焙过程中考虑的光线反射次数。参阅 bounce_indirect_energy


Default

0.5

Setter

set_capture_cell_size(value)

Getter

get_capture_cell_size()

用于实时捕获动态对象信息的网格大小。


  • bool capture_enabled

Default

true

Setter

set_capture_enabled(value)

Getter

get_capture_enabled()

启用后,将计算包含场景照明信息的八叉树。然后此八叉树将用于照亮场景中的动态对象。


  • float capture_propagation

Default

1.0

Setter

set_capture_propagation(value)

Getter

get_capture_propagation()

偏置值,用于减少捕获的八叉树中的光传播量。


Default

1

Setter

set_capture_quality(value)

Getter

get_capture_quality()

捕获数据的烘焙质量。


  • float default_texels_per_unit

Default

16.0

Setter

set_default_texels_per_unit(value)

Getter

get_default_texels_per_unit()

如果烘焙后的网格没有UV2的尺寸提示,这个值将被用来粗略计算出合适的光照贴图尺寸。


  • Color environment_custom_color

Setter

set_environment_custom_color(value)

Getter

get_environment_custom_color()

environment_mode 设置为 ENVIRONMENT_MODE_CUSTOM_COLOR 时的环境颜色。


  • float environment_custom_energy

Setter

set_environment_custom_energy(value)

Getter

get_environment_custom_energy()

environment_mode 设置为 ENVIRONMENT_MODE_CUSTOM_COLORENVIRONMENT_MODE_CUSTOM_SKY 时的能量比例系数。


  • Sky environment_custom_sky

Setter

set_environment_custom_sky(value)

Getter

get_environment_custom_sky()

environment_mode 设置为 ENVIRONMENT_MODE_CUSTOM_SKY 时要使用的 Sky 资源。


  • Vector3 environment_custom_sky_rotation_degrees

Setter

set_environment_custom_sky_rotation_degrees(value)

Getter

get_environment_custom_sky_rotation_degrees()

烘焙自定义天空的旋转。


  • Color environment_min_light

Default

Color( 0, 0, 0, 1 )

Setter

set_environment_min_light(value)

Getter

get_environment_min_light()

所有光照贴图纹理元素的最小环境光。这不考虑场景几何体的任何遮挡,它只是确保所有光照贴图纹理元素上的光量最小。可用于阴影颜色的艺术控制。


Default

0

Setter

set_environment_mode(value)

Getter

get_environment_mode()

决定烘焙时使用哪个环境。


Default

Vector3( 10, 10, 10 )

Setter

set_extents(value)

Getter

get_extents()

烘焙光照贴图的大小。只有该区域内的网格才会包含在烘焙光照贴图中,也用作动态光照捕获区域的边界。


Setter

set_image_path(value)

Getter

get_image_path()

已废弃,在以前的版本中,它决定了光照贴图的保存位置。


Setter

set_light_data(value)

Getter

get_light_data()

计算出的光照数据。


Default

1

Setter

set_bake_quality(value)

Getter

get_bake_quality()

决定在不正确的光照烘烤中每一个纹理元素的采样量。可以在项目设置中配置每个质量级别的采样量。


Default

true

Setter

set_use_color(value)

Getter

is_using_color()

在光照贴图纹理中存储全色值。禁用时,光照贴图纹理将存储单个亮度通道。如果场景仅包含白光或者您不介意在间接照明中丢失颜色信息,则可以禁用以减少磁盘使用量。


Default

true

Setter

set_use_denoiser(value)

Getter

is_using_denoiser()

启用后,将使用光照贴图降噪器来减少基于Monte Carlo的全局照明固有的噪声。


Default

true

Setter

set_use_hdr(value)

Getter

is_using_hdr()

如果 true,则以高动态范围格式 (EXR) 存储光照贴图纹理。如果 false,则将光照贴图纹理存储在低动态范围的 PNG 图像中。这可以设置为 false 以减少磁盘占用,但超过 1.0 的光照值将被限制,你可能会看到因精度降低而导致的条纹。

注意:use_hdr 设置为 true 即使使用 GLES2 后端或 ProjectSettings.rendering/quality/depth/hdrfalse,也会降低光照贴图条纹

方法说明

烘焙光照贴图,从给定的from_node根节点扫描,并将产生的BakedLightmapData保存在data_save_path中。如果没有提供根节点,此节点的父节点将作为根节点。如果没有提供保存路径,将尝试匹配当前light_data的路径。