BakedLightmap
Inherits: VisualInstance < CullInstance < Spatial < Node < Object
场景的预渲染间接光照贴图。
描述
烘焙光照贴图是向场景添加间接(或烘焙)光照的替代工作流程。与 GIProbe 方法不同,烘焙光照贴图在低端 PC 和移动设备上运行良好,因为它们在运行时几乎不消耗资源。
程序化生成: 烘焙光照贴图的功能只在编辑器中可用。也就是说,BakedLightmap
不适合程序化生成、用户搭建的关卡。想要支持程序化生成或者用户搭建关卡,请使用 GIProbe。
注意: 由于光照贴图的工作原理,大多数属性只有在光照贴图再次烘焙后才会看到效果。
教程
属性
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
方法
枚举
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 |
|
Setter | set_generate_atlas(value) |
Getter | is_generate_atlas_enabled() |
启用后,光照贴图会将所有网格的纹理合并为一个大的分层纹理。 GLES2 不支持。
- int atlas_max_size
Default |
|
Setter | set_max_atlas_size(value) |
Getter | get_max_atlas_size() |
每个光照贴图层的最大尺寸,仅在启用 atlas_generate 时使用。
- float bias
Default |
|
Setter | set_bias(value) |
Getter | get_bias() |
在烘焙过程中使用光线投射偏置来避免浮点数精度问题。
- float bounce_indirect_energy
Default |
|
Setter | set_bounce_indirect_energy(value) |
Getter | get_bounce_indirect_energy() |
每次反弹的能量乘数。较高的值将使间接照明更亮。 1.0
的值表示与物理相一致的行为,但在使用少量反弹时,可以使用更高的值使间接照明传播更明显。这可用于通过降低bounces的数量然后增加 bounce_indirect_energy 来加快烘焙时间。与 BakedLightmapData.energy 不同,此属性不会影响灯光节点、自发光材质和环境发出的直接光照。
注意: bounce_indirect_energy 仅在bounces 设置为大于或等于1
的值时有效。
- int bounces
Default |
|
Setter | set_bounces(value) |
Getter | get_bounces() |
烘焙过程中考虑的光线反射次数。参阅 bounce_indirect_energy。
- float capture_cell_size
Default |
|
Setter | set_capture_cell_size(value) |
Getter | get_capture_cell_size() |
用于实时捕获动态对象信息的网格大小。
- bool capture_enabled
Default |
|
Setter | set_capture_enabled(value) |
Getter | get_capture_enabled() |
启用后,将计算包含场景照明信息的八叉树。然后此八叉树将用于照亮场景中的动态对象。
- float capture_propagation
Default |
|
Setter | set_capture_propagation(value) |
Getter | get_capture_propagation() |
偏置值,用于减少捕获的八叉树中的光传播量。
- BakeQuality capture_quality
Default |
|
Setter | set_capture_quality(value) |
Getter | get_capture_quality() |
捕获数据的烘焙质量。
- float default_texels_per_unit
Default |
|
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_COLOR 或 ENVIRONMENT_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 |
|
Setter | set_environment_min_light(value) |
Getter | get_environment_min_light() |
所有光照贴图纹理元素的最小环境光。这不考虑场景几何体的任何遮挡,它只是确保所有光照贴图纹理元素上的光量最小。可用于阴影颜色的艺术控制。
- EnvironmentMode environment_mode
Default |
|
Setter | set_environment_mode(value) |
Getter | get_environment_mode() |
决定烘焙时使用哪个环境。
- Vector3 extents
Default |
|
Setter | set_extents(value) |
Getter | get_extents() |
烘焙光照贴图的大小。只有该区域内的网格才会包含在烘焙光照贴图中,也用作动态光照捕获区域的边界。
- String image_path
Setter | set_image_path(value) |
Getter | get_image_path() |
已废弃,在以前的版本中,它决定了光照贴图的保存位置。
- BakedLightmapData light_data
Setter | set_light_data(value) |
Getter | get_light_data() |
计算出的光照数据。
- BakeQuality quality
Default |
|
Setter | set_bake_quality(value) |
Getter | get_bake_quality() |
决定在不正确的光照烘烤中每一个纹理元素的采样量。可以在项目设置中配置每个质量级别的采样量。
- bool use_color
Default |
|
Setter | set_use_color(value) |
Getter | is_using_color() |
在光照贴图纹理中存储全色值。禁用时,光照贴图纹理将存储单个亮度通道。如果场景仅包含白光或者您不介意在间接照明中丢失颜色信息,则可以禁用以减少磁盘使用量。
- bool use_denoiser
Default |
|
Setter | set_use_denoiser(value) |
Getter | is_using_denoiser() |
启用后,将使用光照贴图降噪器来减少基于Monte Carlo的全局照明固有的噪声。
- bool use_hdr
Default |
|
Setter | set_use_hdr(value) |
Getter | is_using_hdr() |
如果 true
,则以高动态范围格式 (EXR) 存储光照贴图纹理。如果 false
,则将光照贴图纹理存储在低动态范围的 PNG 图像中。这可以设置为 false
以减少磁盘占用,但超过 1.0 的光照值将被限制,你可能会看到因精度降低而导致的条纹。
注意: 将 use_hdr 设置为 true
即使使用 GLES2 后端或 ProjectSettings.rendering/quality/depth/hdr 为 false,也会降低光照贴图条纹
。
方法说明
烘焙光照贴图,从给定的from_node
根节点扫描,并将产生的BakedLightmapData保存在data_save_path
中。如果没有提供根节点,此节点的父节点将作为根节点。如果没有提供保存路径,将尝试匹配当前light_data的路径。