使用逐实例 UV 集

 
 
 

尽管始终可以将某个特定形状的不同实例与不同的材质相关联,现在可以将不同的 UV 集与不同的实例相关联。在对象的实例上烘焙阴影(例如,照明游戏级别)时,或使用不同的纹理创建单个形状的实例(例如,一堆箱子,其中一些在不同的位置处有孔,等等)时,这非常有用。

如果 UV 集是逐实例的,那么术语 UV 集系列指的就是应用于不同实例的关联 UV 集。在某个给定系列内,可能会将单个 UV 集应用到一个或多个实例。

创建逐实例 UV 贴图

  1. 选择形状。
  2. 选择创建 UV > 创建空 UV 集(Create UVs > Create Empty UV Set) >

    可以选择共享该 UV 集(每个实例都有该 UV 集)、“逐共享实例”(Per Instance Shared)(所有选定实例都共享新的 UV 集)或“逐非共享实例”(Per Instance Unshared)(所有选定实例都获得一个唯一的 UV 集)。

  3. 根据需要命名 UV 集。
  4. 选择形状的另一个实例。
  5. 在实例上单击鼠标右键,选择 UV 集,并使所创建的逐实例 UV 集成为选定集。
  6. “创建 UV”(Create UVs)菜单下选择一种 UV 映射类型(如“平面”(Planar)“圆柱形”(Cylindrical)“球形”(Spherical))。确保在映射的选项窗口中已禁用“创建新 UV 集”(Create New UV Set)

    会为共享当前集的名称的选定实例创建一个新 UV 贴图。

  7. 将着色器指定给网格的所有实例。
  8. 在实例上单击鼠标右键,然后选择“UV 集 > UV 链接…”(UV Sets > UV Linking)。使用“关系编辑器”(Relationship Editor)将任一逐实例集连接到着色器的颜色。

使用硬件纹理在“场景视图”(Scene view)中渲染或显示不同的(逐实例)UV 映射时,现在应该会在实例化对象上显示这些映射。

示例:使用逐实例 UV 集烘焙单个阴影贴图

在下面的示例中,我们会使用逐实例 UV 集将阴影烘焙到单个贴图。此时,可以在场景中删除灯光。为游戏级别在对象上创建纹理贴图时,该工作流很有用。

有关烘焙的更多详细信息,请参见照明/着色 > 批烘焙(mental ray)(Lighting/shading > Batch Bake (mental ray))

在该简单场景中,有一个用于投射阴影的长圆柱体、一束平行光、一个包含 16 x 16 细分的小平面,以及平面的两个附加实例。

设置场景

  1. 创建一个长细条状多边形圆柱体,其底面位于地平面上。
  2. 在地平面上创建一个较小的多边形平面,然后从 polyPlane 节点中,将“宽度细分数”(Subdivisions Width)“高度细分数”(Subdivisions Height)都设定为 16。
  3. 选择该多边形平面,然后选择编辑 > 特殊复制(Edit > Duplicate Special) >
  4. “几何体类型”(Geometry Type)设定为“实例”(Instance),并选择“应用”(Apply)两次以创建小多边形平面的两个实例(这两个实例将显示在原始实例的上方)。
  5. 一个接一个地定位平面,就像一条人行道一样。
  6. 创建平行光(“创建 > 灯光 > 平行光”(Create > Lights > Directional Light)),并在放置它时使其稍微向下指并朝向圆柱体和平面。
  7. “属性编辑器”(Attribute editor)中,将灯光的“强度”(Intensity)更改为 4.5。
  8. 打开“阴影”(Shadows)区域,然后启用“使用深度贴图阴影”(Use Depth Map Shadows)
  9. 将阴影颜色更改为蓝色。
  10. 使用 mental ray 渲染器渲染场景。渲染应看起来如下所示:

可能需要调整灯光的方向,然后重新渲染,从而使阴影落在某个不同的位置处的每个多边形实例上,就像在上面的渲染中一样。

现在,我们可以在平面上逐实例创建 UV 集了。

创建逐实例 UV 集

  1. 选择三个多边形平面实例,然后在“多边形”(Polygons)菜单集中,选择“创建 UV > 创建空 UV 集(Create UVs > Create Empty UV Set) > ”。
  2. “创建 UV 集选项”(Create UV Set Options)对话框中,创建一个名为 Sidewalk 的 UV 集,并选择“逐非共享实例”(Per Instance Unshared)。然后单击“创建”(Create)
  3. 在其中一个多边形平面实例上单击鼠标右键,并通过选择“UV 集(UV Sets) > Sidewalk (n)”使 Sidewalk 成为选定 UV 集。
  4. 选择所有多边形平面实例,并创建 UV,方法是选择创建 UV > 平面映射(Create UVs > Planar Mapping) > 并进行下列选择:
    • 适配投影到(Fit Projection to)边界框(Bounding Box)
    • 投影源(Project from)Y 轴(Y axis)

    确保禁用“创建新 UV 集”(Create new UV Set)

  5. 单击“投影”(Project)

现在已经创建了一个逐实例 UV 集,其 UV 在 UV 空间中不重叠(如有必要,可以使用“UV 纹理编辑器”(UV Texture Editor)来确认这一点并移动 UV)。

现在,我们将阴影烘焙到单个 UV 贴图。

烘焙到逐实例 UV 集

  1. 选择三个多边形平面实例。
  2. “渲染”(Rendering)菜单集中,选择照明/着色 > 批烘焙(mental ray) (Lighting/shading > Batch Bake (mental ray)) >
  3. 进行下列设定:
    • 要烘焙的对象(Objects to bake)选定(Selected)
    • 烘焙到(Bake to)纹理(Texture)
    • 烘焙阴影(Bake shadows):启用
    • 使用烘焙集覆盖(Use bake set override):启用
    • 颜色模式(Color mode)仅灯光(Only light)
    • 烘焙到一个贴图(Bake to one map):启用
  4. 单击“转化并关闭”(Convert and Close)

    在烘焙阴影时,现在必须将烘焙集连接到 UV 贴图。

  5. 在其中一个实例上单击鼠标右键,然后选择“UV 集 > UV 链接”(UV Sets > UV Linking)
  6. 在关系编辑器中,将 Sidewalk (0) 贴图链接到 baked_inBake1。

    会烘焙阴影并正确链接阴影。如果处于着色模式(热键:6)或高质量渲染模式下,则可以在场景视图中看到这一切。

  7. 此时,可以在场景中删除该灯光,因为已将其阴影烘焙到多边形实例上的 UV 纹理。

删除逐实例 UV 集

由于可能会有在实例之间共享的 UV 集系列,因此删除 UV 集的方式会略有不同。

例如,名为 myMap 的逐实例集系列有两个子集。一个应用于多个实例(实例 abc),另一个仅应用于实例 d。它是当前 UV 集。如果选择实例 d,然后选择“删除当前 UV 集”(Delete Current UV Set),那么仅会删除实例 d 上的贴图(另一个 UV 贴图由未选定实例使用,不会被删除)。

如果选择实例 a,然后选择“删除当前 UV 集”(Delete Current UV Set),那么不会从实例 a 共享该 UV 集,但该 UV 集仍存在于实例 bc 上。若要完全删除它,可以选择实例 bc,然后选择“删除当前 UV 集”(Delete Current UV Set)

限制

逐实例 UV 集不支持颜色集或绘制效果。