Q100170: Katana 处理纹理

关注

概括

纹理由着色器库和工作室管道以各种不同的方式处理, Katana提供了一个灵活的框架来分配纹理,遵循一些常见的约定。

3Delight 、RenderMan 和 Arnold 渲染器一起使用的一些选项的摘要。另请参阅随附的示例场景,其中演示了此处解释的两种方法。

 

更多信息

使用材质属性声明纹理

为每个对象赋予自己的纹理的最简单方法是为每个对象创建一个材质,并在着色器中将纹理明确声明为字符串参数。然后为每个对象分配相关材料。

这种方法是最费力的,尤其是在处理包含大量对象的场景时,并且在必须更改材料时缺乏灵活性。

通常许多对象可以共享相同的材质,但需要分配不同的纹理。在这种情况下,可以设置场景,以便每个对象拾取自己的纹理:

 

使用对象属性声明纹理

要渲染的对象可以通过任意属性指向相关的纹理文件,而不是在材质上设置纹理。

 

创建示例场景

以下是有关如何使用对象属性声明纹理的说明。此示例使用3Delight渲染器:

  1. 从 Help > I want a pony菜单添加一个 CameraCreate、一个 NetworkMaterialCreate 和两个 Pony 节点。请务必更改每个 Pony 节点上的 name 参数,以确保它们是唯一的。
  2. 在每个 Pony 的下游创建和 AttributeSet 节点,并将路径设置为相应上游 Pony 的场景图位置。

    mceclip1.png

  3. 编辑每个 AttributeSet 节点并将每个 attributeName 参数更改为“geometry.arbitrary.basecolor.value”并将类型参数更改为“string”。

    mceclip4.png

  4. 将每个 AttributeSet 的 stringValue 设置为指向一个唯一的纹理文件。你可以在 $KATANA_ROOT/demos/tx_files/ Katana包含的示例文件

    mceclip5.png

  5. 跳转到 NetworkMaterialCreate 节点(快捷键: Ctrl+MMBCtrl+Enter选中时)并创建一个 dlPrincipled 和一个 dlTexture 着色节点。
  6. 编辑dlTexture节点并将Texture File参数设置为'{attr:geometry.arbitrary.basecolor.value}';这从先前设置的属性中读取文件路径。

    mceclip6.png

  7. 将dlTexture的outputColor端口连接到dlPrincipled节点的Base>Color端口的输入端,跳出NetworkMaterialCreate(快捷键: Ctrl+Backspace )。

    mceclip7.png

  8. 选择除 Pony 节点之外的所有节点,然后按“M”在下游创建一个合并节点。

    mceclip8.png

  9. 在 Merge 下方创建并连接 MaterialAssign 节点,添加值为“/root/world/geo//*”的自定义 CEL 引用,并将 materialAssign 参数设置为“/root/materials/NetworkMaterial”。这会将材质应用到场景图中“地理”位置下方的所有位置。

    mceclip9.png

  10. 最后,在 MaterialAssign 下游创建一个 GafferThree 节点,并从 Add 3Delight菜单中添加环境光。

渲染时,您现在将看到从单一材质应用于小马的两种不同纹理。

mceclip10.png

附件

我们很遗憾听到

请告诉我们