1.0 与 2.0

UE的PivotPainter现在有两版,区别在于2.0版使用贴图来存储信息,而1.0版使用顶点信息包括额外的UV通道。
对于1.0和2.0分别有各自的材质函数:
在这里插入图片描述
Pivot Painter Tool 1.0 Material Functions | Unreal Engine Documentation
Pivot Painter Tool 2.0 Material Functions | Unreal Engine Documentation


而 Houdini 的 PivotPainter节点,自然也有两个模式供选择是哪个版本:
在这里插入图片描述

PivotPainter节点所需要的数据

PivotPainter节点有两个输入端,左边是几何体本身,右边是轴点
在这里插入图片描述
对于 几何体 和 轴点,都需要确保有PivotPainter节点所需要的属性在上面。
Pivot Painter 节点文档

Important pivot attributes are: N and name for PP1. N and hierarchy for PP2.
Important geometry attributes are: uv and name for PP1. uv and hierarchy for PP2.
轴点所需要的属性,对于1.0版是Nname,对于2.0版是Nhierarchy
几何体所需的属性,对于1.0版是uvname,对于2.0版是uvhierarchy

不过,在《学习在Houdini中将PivotPainter(2.0)数据导入给UE》中我注意到,在一些情况下,比如输出 “Slection Order” 时,selectionIndex属性也是需要的。这方面更多的信息可能要查更多的资料,或者直接看PivotPainter节点内部。

1.0 版本的数据

当PivotPainter节点处于1.0模式时,可以看到信息的对应关系:
在这里插入图片描述
这与UE中的材质函数中的逻辑是对应的。可以看PivotPainter_PerObjectData(比如对于PivotPosition,可以看到逻辑上都是uv2的xy合并uv3的x):
在这里插入图片描述


另外还可以看到,与 Per Object 相对的是 Hierarchical
在这里插入图片描述
二者应该是互斥的,因为他们都导出到了uv通道和顶点色中,而且节点中也能看出来:
在这里插入图片描述
关于 Hierarchical 目前我还没有做实验,待以后尝试。

2.0 版本的数据

当节点切换为2.0模式时,便可以选择要导出的贴图有几张,以及每一张的 RGB 和 A 存储的是什么:
在这里插入图片描述
需要注意的是,贴图有 16-bit8-bit 之分,前者将会存储为EXR格式,后者则是常规的TGA格式。

对于RGB有以下选择:
在这里插入图片描述

当RGB选择一个 16-bit 的种类时,A通道的选择如下:
在这里插入图片描述
当RGB选择一个 8-bit 的种类时,A通道的选择如下:
在这里插入图片描述


而在UE中,也有解释其数据对应的函数。

比如ms_PivotPainter2_DecodeAxisVector对向量 减0.5 再乘2,将贴图中0~1的值映射到 -1~1。(类似法线贴图采样时做的计算)
在这里插入图片描述
再比如ms_PivotPainter2_UnpackIntegerAsFloat将作为 int 被存入贴图中的值重新解释为正确的值(其代码有些难懂,应该和浮点数的格式有关)
在这里插入图片描述

概括

也就是说,PivotPainter数据被Houdini的节点导出成对应格式的文件,再由UE中的材质函数解析成正确的数据。而这些数据将会由物体真正的材质使用,在材质中可以利用PivotPainter数据实现比如风力这样的效果。

概括图如下:
在这里插入图片描述

之后学习方向

虽然已经了解了基础的流程。但是当希望实现更复杂的效果时,或者出现某些问题时,可能需要对这个系统进行更深入的学习。方向包括:

  • 明确Houdini节点导出的所有PivotPainter数据的意义。为此,可以当做一个“黑盒”来观察,因为不少数据的意义还是很直接的。但也可以将其作为一个“透明盒”来观察,即深入PivotPainter节点内部。
  • 明确UE中所有PivotPainter材质函数的意义。
  • 深入研究使用PivotPainter的更复杂的材质的内部结构。
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐