Choose your operating system:
Windows
macOS
Linux
UV通道是静态网格体中的一组数据,它将网格体的每个顶点映射到2D空间中的坐标。这些映射定义了在渲染网格体时2D纹理贴图是如何围绕3D几何体进行包裹的。
你通常在专用的建模工具中创建和管理UV映射——创建静态网格体的几何体时也使用相同的工具。然而,编辑器确实提供了使用你的模型的UV通道的可能性,见本页的下文。
UV通道在引擎中有两个主要用途:
材质中的纹理坐标 - 当你创建一个材质来采样纹理映射并将其应用于静态网格体的表面时,你可以使用一个纹理坐标(或 Texcoord)节点来指定UV通道。该材质使用所选UV通道中包含的2D坐标和3D顶点位置之间的映射来确定应该使用纹理的哪些区域来对3D模型中的哪些三角形进行着色。
例如,UV通道0在这个简单的平面静态网格体中(如下图右上角所示)显示了将网格体的两个三角形(A和B)映射到纹理空间的最简单方法。当你使用这个UV通道(由 TexCoord 节点的 坐标索引(Coordinate Index) 属性设置)时,材质将纹理的全部宽度和高度应用到平面上。
另一方面,下图显示了UV通道1,它旋转并偏斜了三角形和UV纹理空间之间的映射。当相同的图像纹理应用于静态网格体时,它更改将纹理的哪些部分应用于静态网格体的哪些部分。
UV映射中的三角形可以重叠。重叠仅仅意味着纹理的相同部分应用于3D静态网格体几何体的多个部分。"UV通道"中的U表示纹理的横轴;V代表纵轴。纹理坐标通常保持在0和1之间,其中(0,0)表示纹理的左下角,(1,1)表示右上角。但这有时不正确。默认情况下,当U或V值超过1或小于0时,材质会"包裹"到纹理的另一边。例如,V值1.25通常被视为0.25。但是,你可以选择将这些值夹在材质中,将它们限制为最小值0和最大值1。
光照贴图: UV通道还用于存储和应用光照贴图。光照贴图是一种特殊的纹理,它为静态网格体存储预先计算好的光照信息。当光卡中的光源的移动性(Mobility)设置为固定(Stationary)或静态(Static),在你为关卡建立照明时,Lightmass工具节省光照贴图纹理的间接照明(和静态光源的直接照明),使用UV通道来确定静态网格体的3D几何体与2D纹理空间之间的映射。
用于光照贴图的UV通道必须遵循一些特殊的规则。因为一个对象的每个部分通常接受不同数量的光照,所以网格体中的任何两个三角形都不能在2D纹理空间中重叠。每个三角形必须在纹理中覆盖自己的区域。此外,所有UV坐标值必须在0到1之间。光照贴图纹理不能像常规纹理映射那样"环绕"。
由于这些原因,光照贴图UV通常从更简单的UV映射生成或 打包。例如,这个柱子的纹理映射UV通道将四个面的几何体映射到纹理的相同重叠区域。当你使用此UV通道将纹理应用到几何体时,每一面都使用相同的纹理部分。
然而,在对象的光图贴图UV中,每一面都需要覆盖自己独特的2D空间:
有关光照贴图UV以及如何生成它们的更多信息,请参阅打开光照贴图的UV和生成光照贴图UV。
引擎中的每个静态网格体最多可以有7个不同的UV通道,因此你可以为不同的材质(或单个材质中的不同纹理采样节点)设置多种不同的纹理包裹方式。
静态网格体编辑器中的UV通道
在静态网格体编辑器UI中,你可以列示、可视化和移除UV通道。
列示UV通道
在静态网格体编辑器中打开任何静态网格体资源时,可以使用工具栏中的 UV 按钮列出当前静态网格体使用的所有UV通道。
可视化UV通道
在列表中选择任意UV通道,将网格体的三角形到2D纹理空间的映射在视口中可视化为覆盖:
在列表顶部选择 无(None) 以隐藏UV覆层。
移除UV通道
在列表中选择通道后,可以将其移除。每个UV通道都将每个顶点的纹理坐标存储为静态网格体的一部分,因此你可以删除不使用的映射来节省一些运行时内存。
删除通道之后,列表中出现的所有其他UV通道都向上移动一位,以填充删除通道后留下的空白。
如果你的静态网格体资源被设置为生成光照贴图UV,并且你所选择的UV通道已经用作关照贴图UV的源通道或目标通道,则不能删除该UV通道。要么禁用 构建设置(Build Settings)> 生成光照贴图UV(Generate Lightmap UVs) 选项,要么更改 构建设置(Build Settings)> 源光照贴图索引(Source Lightmap Index) 和 构建设置(Build Settings)> 目标光照贴图索引(Destination Lightmap Index) 设置,以指向不同的UV通道。
创建UV贴图
材质将纹理作为其通道的源数据时(例如底色、法线贴图、粗糙度等),通常使用模型的UV贴图决定纹理的哪些部分将包裹几何体的哪些部分。因此,若模型不包含UV贴图,或所含UV贴图布局较差,在尝试使用纹理材质时你将时常看到显示问题。例如,若UV贴图具有诸多 接缝(即在网格体几何体上相邻但在UV贴图上不相邻的三角形处),纹理将显示此类接缝的可见关节。若UV贴图将UV空间的区域不均匀指定到网格体三角形,以将网格体大三角形映射到纹理的小区域(或相反),网格体不同部分上的纹理将出现拉伸或扭曲。
为获得最佳艺术效果,应固定在专用建模工具中创建3D对象的UV贴图。但此操作有时不可用。例如,将某些CAD建模应用程序中的数据导入虚幻引擎时,可能无法在源应用程序中创建高质量UV贴图。针对这类情况,你可在虚幻编辑器中创建UV贴图。
虚幻编辑器提供了两种创建静态网格体UV贴图的方法:
项目设置: 要使用下述UV通道生成法,必须安装虚幻引擎项目的 多边形编辑(Polygon Editing) 插件。
选项1:展开网格体几何体
在此方法中,组成静态网格体几何体的三角形将自动展开并平整化。三角形表面区域会自动调整,以保持与附近三角形相邻,与相邻表面间的角度超过设定阈值处将引入接缝。
要将静态网格体展开到新UV贴图:
选择要展开的静态网格体,执行以下任一操作:
在 内容浏览器 中右键点击静态网格体,在快捷菜单中选择 展开UV(Unwrap UV)。
在静态网格体编辑器中打开要生成的静态网格体。然后在静态网格体编辑器的工具栏中,选择 UV > 展开UV(Unwrap UVs)。
若未找到上述菜单选项,请启用项目的 多边形插件(Polygon Editing) 插件。
设置参数以控制展开结果:
设置
说明
通道选择(Channel Selection)
决定展开进程选择保存新UV贴图的通道的方式。
自动光照贴图设置(Automatic Lightmap Setup):将展开的UV贴图保存到此静态网格体设置的通道,以作为光照贴图UV的源,然后利用新UV贴图生成新光照贴图UV。
首个空白通道(First Empty Channel):将展开的UV贴图保存到静态网格体中的首个空白UV通道。
指定通道(Specify Channel):在 UV通道(UVChannel) 设置中指定通道索引。
UV通道(UVChannel)
当 通道选择(Channel Selection) 被设为 指定通道(Specify Channel) 时,使用此设置决定用于保存已展开的UV的UV通道。
角度阈值(Angle Threshold)
决定两个相邻面在展开后保持连接时的最大角度。增大此值会减少单独UV"岛状区"的数量,让更多三角形与相邻的三角形连接,并减少会导致纹理贴图断开的接缝数量。但由于三角形可能需要在2D空间中更积极地调整大小,以保持与相邻三角形的连接,因此这也可能导致展开的纹理更加失真。
点击 继续(Proceed)。
选项2:将网格体几何体投射到UV通道
你可使用投射体积(平面、盒体或球体)将静态网格体的3D几何体投射到2D纹理空间。在此方法中,静态网格体的各面均向外投射到投射体积的面,然后投射体积将展开到2D纹理空间中。
此功能部件当前只负责将3D网格体投射到2D,并不包含在功能齐全的建模和纹理工具中拥有的完整投射编辑功能。
在静态网格体编辑器中打开要生成的静态网格体。
例如,在 内容浏览器(Content Browser) 中双击静态网格体资源。
在静态网格体编辑器的工具栏中选择 UV >生成UV(Generate UVs)。
若未找到此菜单选项,其启用项目的 多边形编辑(Polygon Editing) 插件。
现在你可看到 生成UV(Generate UV) 面板,其中提供了协助控制UV投射结果的功能按钮集。
同时还可在视口中看到静态网格体周围显示的绿色体积,与标准虚幻编辑器操纵器小工具。
若体积和操纵器未第一时间显示,可切换 生成UV(Generate UV) 面板底部的 显示小工具(Show Gizmo) 按钮。
在 投射类型(Projection Type) 设置中,选择最适合静态网格体尺寸的体积。
调整体积的大小、位置和旋转以匹配静态网格体的范围。
可使用视口中的操纵器或 生成UV(Generate UV) 面板中的文本字段进行该调整。同时还可使用 适配(Fit) 按钮自动调节体积以作为良好起点来适应静态网格体几何体范围。
在 目标通道(Target Channel) 设置中,设置用于保存投射UV贴图的通道的索引。
多数材质在通道0中获取纹理坐标。若要生成UV贴图以改进纹理在静态网格体几何体周围的映射方式,你应将此字段设为
0
。点击 应用(Apply) 生成UV贴图,并将其保存到静态网格体中的目标通道。
下表对 生成UV(Generate UV) 面板中的所有设置进行了说明:
设置 |
说明 |
---|---|
投射类型(Projection Type) |
体积,将静态网格体几何体投射到其上。 |
大小(Size) |
投射体积的尺寸。 |
位置(Position) |
相对于静态网格体枢轴点的投射体积位置。 |
旋转(Rotation) |
相对于静态网格体枢轴点的投射体积旋转。 |
UV平铺比例(UV Tiling Scale) |
投射在UV空间中的比例。值越大,纹理空间中的投射越大,将导致纹理细节在网格体表面周围包裹时显得更小。 |
UV偏移(UV Offset) |
控制投射在2D纹理空间中的位置。减小X轴上的值会使投射在UV贴图中向左移动,增大该值会使投射向右移动。减小Y轴上的值会使投射在UV贴图中向上移动,增大该值会使投射向下移动。 |
目标通道(Target Channel) |
用于保存投射的UV通道的索引。此通道不可为静态网格体编辑器用于存储生成的光照贴图UV的通道。若目标通道已有数据,要确认后编辑器才会继续。 |
显示小工具(Show Gizmo) |
在视口中切换渲染投射体积和操作器小工具。 |
应用(Apply) |
根据上述设置生成UV投射,并将结果保存到 目标通道。 |
适配(Fit) |
使投射体积的大小包住静态网格体的整个几何体。 |
编辑器脚本中的UV通道
你还可以使用蓝图中的UV通道和在虚幻编辑器中运行的Python脚本。你可以在静态网格体编辑器中做所有你可以做的事情,另外你还可以添加新的通道并生成新的UV映射。
先决条件:如果还没有安装编辑器脚本工具插件,则需要安装。详情请参阅编写脚本和自动执行编辑器。
选择实现方法:
Python