观察与梳理Houdini的虚幻引擎PivotPainter工具
1.0 与 2.0UE的PivotPainter现在有两版,区别在于2.0版使用贴图来存储信息,而1.0版使用顶点信息包括额外的UV通道。对于1.0和2.0分别有各自的材质函数:Pivot Painter Tool 1.0 Material Functions | Unreal Engine DocumentationPivot Painter Tool 2.0 Material Function
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版是N
和name
,对于2.0版是N
和hierarchy
几何体所需的属性,对于1.0版是uv
和name
,对于2.0版是uv
和hierarchy
不过,在《学习在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-bit
和 8-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的更复杂的材质的内部结构。
更多推荐
所有评论(0)