渲染组件
遮挡区域

立方体贴图

__立方体贴图__是六个正方形纹理的集合, 这些纹理代表环境中的反射。六个正方形组成一个包围着对象的虚构立方体的各面; 每个面代表沿世界轴方向(向上、向下、向左、向右、 向前和向后)的视图。

立方体贴图常用于捕获对象的反射或“周围环境”;例如 天空盒环境反射通常使用立方体贴图。

立方体贴图的天空盒和反射
立方体贴图的天空盒和反射

从纹理创建立方体贴图

Preferred way of creating cubemaps is importing them from specially laid out textures. Select Cubemap texture import type and Unity should do the rest. Several commonly used cubemap layouts are supported (and in most cases detected automatically).

立方体贴图纹理导入类型
立方体贴图纹理导入类型

支持垂直和水平交叉布局以及立方体贴图面的列和行:

另一种常见布局是 LatLong(纬度/经度,有时称为圆柱形)。全景图像 常采用此布局:

还可以找到 SphereMap(球形环境贴图)图像:

默认情况下,Unity 会查看导入纹理的宽高比以确定上述布局中最合适的 布局。导入时,会生成一个立方体贴图,可将其用于天空盒和反射:

Glossy Reflection 选项可用于立方体贴图纹理,而这些纹理将由 反射探针使用。该模式以特殊方式(镜面卷积)处理 立方体贴图 Mip 级别,然后可用于模拟不同平滑度表面的反射:

在变化平滑度表面上用于反射探针的立方体贴图
在变化平滑度表面上用于反射探针的立方体贴图

旧版立方体贴图资源

Unity 还支持从六个单独的纹理创建立方体贴图。 从菜单中选择 __Assets > Create > Legacy > Cubemap__, 然后将六个纹理拖入检视面板中的空字段内。

Legacy Cubemap Inspector
Legacy Cubemap Inspector
属性: 功能:
Right..Back 字段 相应立方体贴图面的纹理。
Face Size 每个立方体贴图面的宽度和高度(以像素为单位)。纹理将自动缩放以适应此大小。
Mipmap 是否应该创建 Mipmap?
Linear 立方体贴图是否应该使用线性颜色?
Readable 立方体贴图是否应当允许脚本访问像素数据?

请注意,最好使用立方体贴图纹理导入类型来创建立方体贴图(见上文), 这样就可以压缩立方体贴图纹理数据;可进行边缘修正和光泽反射卷积; 并支持 HDR 立方体贴图。

其他技巧

另一种有用的技巧是使用脚本从 Unity 场景的内容生成立方体贴图。 Camera.RenderToCubemap 函数可从场景中的 任何所需位置记录六个面图像;该函数的脚本参考页面上的代码示例 添加了一条菜单命令来简化此任务。

渲染组件
遮挡区域