UV 映射与展开:3D模型纹理贴图基础
什么是 UV 映射
UV 映射(UV Mapping)是将 3D 模型表面的顶点映射到 2D 纹理坐标系的过程。UV 坐标(通常称为 U 和 V,对应纹理的水平和垂直方向)指定了纹理图像上的位置,使纹理能正确包裹在 3D 模型上。UV 映射是纹理贴图的基础,对于材质表现至关重要。
UV 展开
UV 展开(UV Unwrapping)是将 3D 网格的三角形面片展开到 2D 平面,生成 UV 布局的过程。理想的 UV 展开应尽量减少拉伸、重叠和接缝,保证纹理在模型上均匀分布。
展开方法
- **自动展开**:软件根据算法自动生成 UV,如 Blender 的 Smart UV Project、Unfold3D 等。
- **手动展开**:艺术家手动切割接缝,使用松弛、展开工具调整 UV,获得最佳布局。
- **投影展开**:从特定视角投影模型到平面,如平面、圆柱、球面投影。
在游戏资产中,通常需要手动优化 UV 布局,以提高纹理密度和减少接缝。
UV 映射的注意事项
- **接缝**:UV 边界处纹理可能不连续,需将接缝放置在隐蔽处(如模型内侧、背面)。
- **拉伸**:UV 面片与 3D 面片比例不一致导致纹理拉伸,需要均匀展开。
- **重叠**:多个面片使用相同 UV 区域(如对称模型),可以节省纹理空间,但需注意法线贴图等。
- **纹理密度**:保持模型各部分像素密度一致,避免某些区域模糊。
- **UV 通道**:模型可以有多个 UV 通道,用于不同贴图(如光照贴图使用第二套 UV)。
在游戏引擎中的使用
在 Unity 和 Unreal 中,导入模型时自动读取 UV 坐标。光照贴图需要第二套 UV(UV1),要求 UV 不重叠且在 0-1 范围内。引擎提供 UV 检查工具(如 Unreal 的 UV 密度视图)。
常见问题
UV 坐标范围是多少?
UV 坐标通常范围在 [0,1] 之间,对应纹理左下角到右上角。超出范围会导致纹理重复(取决于 Wrap 模式)或钳制。
为什么光照贴图需要第二套 UV?
因为第一套 UV 可能有重叠和拉伸,不适合烘焙光照。第二套 UV 需要唯一且非重叠,以确保光照贴图正确。
UV 展开中的岛是什么意思?
岛是 UV 展开中一组连续的面片,它们共享 UV 空间。每个岛之间有空隙,以避免纹理渗色。
如何检测 UV 拉伸?
在 3D 软件中,可以显示 UV 棋盘格或使用拉伸可视化工具。引擎中也有类似视图。
UV 贴图和纹理坐标有什么关系?
UV 贴图是顶点属性,存储每个顶点的 UV 坐标,光栅化时插值得到片元 UV,用于纹理采样。
常见问题
UV坐标范围是多少?
UV坐标通常在[0,1]之间,对应纹理左下角到右上角。超出范围会导致重复或钳制。
为什么光照贴图需要第二套UV?
第一套UV可能有重叠和拉伸,第二套UV需要唯一且非重叠,以确保光照贴图正确。
UV展开中的岛是什么意思?
岛是UV展开中一组连续的面片,它们共享UV空间,岛之间有空隙避免纹理渗色。
如何检测UV拉伸?
在3D软件中显示UV棋盘格或使用拉伸可视化工具,引擎中也有类似视图。
UV贴图和纹理坐标有什么关系?
UV贴图是顶点属性,存储顶点UV坐标,光栅化时插值得到片元UV用于纹理采样。