尽管始终可以将某个特定形状的不同实例与不同的材质相关联,现在可以将不同的 UV 集与不同的实例相关联。在对象的实例上烘焙阴影(例如,照明游戏级别)时,或使用不同的纹理创建单个形状的实例(例如,一堆箱子,其中一些在不同的位置处有孔,等等)时,这非常有用。
如果 UV 集是逐实例的,那么术语 UV 集系列指的就是应用于不同实例的关联 UV 集。在某个给定系列内,可能会将单个 UV 集应用到一个或多个实例。
创建逐实例 UV 贴图
选择形状。
选择创建 UV > 创建空 UV 集(Create UVs > Create Empty UV Set) >
。
可以选择共享该 UV 集(每个实例都有该 UV 集)、“逐共享实例”(Per Instance Shared)(所有选定实例都共享新的 UV 集)或“逐非共享实例”(Per Instance Unshared)(所有选定实例都获得一个唯一的 UV 集)。
根据需要命名 UV 集。
选择形状的另一个实例。
在实例上单击鼠标右键,选择 UV 集,并使所创建的逐实例 UV 集成为选定集。
在“创建 UV”(Create UVs)菜单下选择一种 UV 映射类型(如“平面”(Planar)、“圆柱形”(Cylindrical)或“球形”(Spherical))。确保在映射的选项窗口中已禁用“创建新 UV 集”(Create New UV Set)。
会为共享当前集的名称的选定实例创建一个新 UV 贴图。
将着色器指定给网格的所有实例。
在实例上单击鼠标右键,然后选择“UV 集 > UV 链接…”(UV Sets > UV Linking)。使用“关系编辑器”(Relationship Editor)将任一逐实例集连接到着色器的颜色。
使用硬件纹理在“场景视图”(Scene view)中渲染或显示不同的(逐实例)UV 映射时,现在应该会在实例化对象上显示这些映射。
示例:使用逐实例 UV 集烘焙单个阴影贴图
在下面的示例中,我们会使用逐实例 UV 集将阴影烘焙到单个贴图。此时,可以在场景中删除灯光。为游戏级别在对象上创建纹理贴图时,该工作流很有用。
有关烘焙的更多详细信息,请参见照明/着色 > 批烘焙(mental ray)(Lighting/shading > Batch Bake (mental ray))。
在该简单场景中,有一个用于投射阴影的长圆柱体、一束平行光、一个包含 16 x 16 细分的小平面,以及平面的两个附加实例。
设置场景
创建一个长细条状多边形圆柱体,其底面位于地平面上。
在地平面上创建一个较小的多边形平面,然后从 polyPlane 节点中,将“宽度细分数”(Subdivisions Width)和“高度细分数”(Subdivisions Height)都设定为 16。
选择该多边形平面,然后选择编辑 > 特殊复制(Edit > Duplicate Special) >
。
将“几何体类型”(Geometry Type)设定为“实例”(Instance),并选择“应用”(Apply)两次以创建小多边形平面的两个实例(这两个实例将显示在原始实例的上方)。
一个接一个地定位平面,就像一条人行道一样。
创建平行光(“创建 > 灯光 > 平行光”(Create > Lights > Directional Light)),并在放置它时使其稍微向下指并朝向圆柱体和平面。
在“属性编辑器”(Attribute editor)中,将灯光的“强度”(Intensity)更改为 4.5。
打开“阴影”(Shadows)区域,然后启用“使用深度贴图阴影”(Use Depth Map Shadows)。
将阴影颜色更改为蓝色。
使用 mental ray 渲染器渲染场景。渲染应看起来如下所示:
可能需要调整灯光的方向,然后重新渲染,从而使阴影落在某个不同的位置处的每个多边形实例上,就像在上面的渲染中一样。
现在,我们可以在平面上逐实例创建 UV 集了。
创建逐实例 UV 集
选择三个多边形平面实例,然后在“多边形”(Polygons)菜单集中,选择“创建 UV > 创建空 UV 集(Create UVs > Create Empty UV Set) >
。
在“创建 UV 集选项”(Create UV Set Options)对话框中,创建一个名为 Sidewalk 的 UV 集,并选择“逐非共享实例”(Per Instance Unshared)。然后单击“创建”(Create)。
在其中一个多边形平面实例上单击鼠标右键,并通过选择“UV 集(UV Sets) > Sidewalk (n)”使 Sidewalk 成为选定 UV 集。
选择所有多边形平面实例,并创建 UV,方法是选择创建 UV > 平面映射(Create UVs > Planar Mapping) >
并进行下列选择:
适配投影到(Fit Projection to):边界框(Bounding Box)
投影源(Project from):Y 轴(Y axis)
确保禁用“创建新 UV 集”(Create new UV Set)。
单击“投影”(Project)。
现在已经创建了一个逐实例 UV 集,其 UV 在 UV 空间中不重叠(如有必要,可以使用“UV 纹理编辑器”(UV Texture Editor)来确认这一点并移动 UV)。
现在,我们将阴影烘焙到单个 UV 贴图。
烘焙到逐实例 UV 集
选择三个多边形平面实例。
在“渲染”(Rendering)菜单集中,选择照明/着色 > 批烘焙(mental ray) (Lighting/shading > Batch Bake (mental ray)) >
。
进行下列设定:
要烘焙的对象(Objects to bake):选定(Selected)
烘焙到(Bake to):纹理(Texture)
烘焙阴影(Bake shadows):启用
使用烘焙集覆盖(Use bake set override):启用
颜色模式(Color mode):仅灯光(Only light)
烘焙到一个贴图(Bake to one map):启用
单击“转化并关闭”(Convert and Close)。
在烘焙阴影时,现在必须将烘焙集连接到 UV 贴图。
在其中一个实例上单击鼠标右键,然后选择“UV 集 > UV 链接”(UV Sets > UV Linking)。
在关系编辑器中,将 Sidewalk (0) 贴图链接到 baked_inBake1。
会烘焙阴影并正确链接阴影。如果处于着色模式(热键:6)或高质量渲染模式下,则可以在场景视图中看到这一切。
此时,可以在场景中删除该灯光,因为已将其阴影烘焙到多边形实例上的 UV 纹理。
删除逐实例 UV 集
由于可能会有在实例之间共享的 UV 集系列,因此删除 UV 集的方式会略有不同。
例如,名为 myMap 的逐实例集系列有两个子集。一个应用于多个实例(实例 a、b 和 c),另一个仅应用于实例 d。它是当前 UV 集。如果选择实例 d,然后选择“删除当前 UV 集”(Delete Current UV Set),那么仅会删除实例 d 上的贴图(另一个 UV 贴图由未选定实例使用,不会被删除)。
如果选择实例 a,然后选择“删除当前 UV 集”(Delete Current UV Set),那么不会从实例 a 共享该 UV 集,但该 UV 集仍存在于实例 b 和 c 上。若要完全删除它,可以选择实例 b 和 c,然后选择“删除当前 UV 集”(Delete Current UV Set)。
限制
逐实例 UV 集不支持颜色集或绘制效果。
,