
学习在Houdini中将PivotPainter(1.0)数据导入给UE
什么是PivotPainter?思考,如果想实现树木的枝干由于风力影响而交错挥动的效果,并且风力的一些数据是可调整的,那么该怎么做呢?如果不知道 “PivotPainter” 的概念,较为自然的想法是使用骨骼。使用骨骼是可行的。但是对于类似植被的物体,会有大量的枝干,而每个枝干都会需要一根骨骼,这导致了大量的骨骼。其性能会相对较差。而PivotPainter的想法是将类似的信息存到顶点UV或者贴图
什么是PivotPainter?
思考,如果想实现树木的枝干由于风力影响而交错挥动的效果,并且风力的一些数据是可调整的,那么该怎么做呢?
如果不知道 “PivotPainter” 的概念,较为自然的想法是使用骨骼。
使用骨骼是可行的。但是对于类似植被的物体,会有大量的枝干,而每个枝干都会需要一根骨骼,这导致了大量的骨骼。其性能会相对较差。
而PivotPainter的想法是将类似的信息存到顶点UV或者贴图上,这样每个顶点都知道自己所属几何部分的轴心即pivot位置在哪。随后,在shader中,每个顶点做各自的计算。由于这个计算是在GPU中并行执行的,所以速度会相对较快。
不过我想,这并不意味着PivotPainter可以取代骨骼。骨骼的计算可以和游戏逻辑相关联,可以通过动画机等的方式进行精确的控制,因此用于角色来说很合适。而PivotPainter计算在shader中,可以并行处理很多顶点,这样速度更快,但是无法对特定部分进行复杂逻辑的控制,它经常用一些算法来对整体进行有规律的控制,并通过随机噪声等方式来让各个部分的运动有差异,因此用于植被来说很合适。
UE的PivotPainter现在有两版,区别在于2.0版使用贴图来存储信息,而1.0版使用顶点信息包括额外的UV通道。
对于1.0和2.0分别有各自的材质函数:
可以通过这些材质函数来获得从3DSMax或Houdini等导入的PivotPainter信息。
Pivot Painter Tool 1.0 Material Functions | Unreal Engine Documentation
Pivot Painter Tool 2.0 Material Functions | Unreal Engine Documentation
下面将结合官方教程 Pivot Painter | Version 1 and 2 | SideFX对Houdini的PivotPainter工具进行学习。本篇将只学习导出Pivot Painter的1.0版数据。
在Houdini中导出数据
Houdini的PivotPainter工具节点来源于 SideFX Labs。
它需要两个输入,其一为几何体本身,另外一个是pivot点。
我的测试节点如下,外形就是将圆锥复制到了网格上:
需要注意的是,正如 Pivot Painter 节点文档 中所说,几何体和pivot点上都需要有对应的属性:
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.
pivot点所需要的属性,对于1.0版是N
和name
,对于2.0版是N
和hierarchy
几何体所需的属性,对于1.0版是uv
和name
,对于2.0版是uv
和hierarchy
因此,在上面的测试节点中:
- 我在圆锥几何体节点后跟了UVFlatten节点以此来创建一个简单的uv。
- 在作为pivot点的网格节点后,连上了PointWrange做些操作:
以此创建法线的属性和name属性,name属性让它是点序号。@N = set(0,1,0); @name = itoa(@ptnum);
- CopyToPoints节点将圆锥复制到网格点的同时,也会将name属性拷贝过去。
最后,设置一下PivotPainter节点的参数,将版本设置为1.0版。然后设置输出的文件和路径,最后点Export就可以输出fbx文件了。
导入给UE4
在UE4中导入fbx,有一些设置需要注意,比如需要将顶点色的导入设置改为Replace
:
接下来,该使用UE提供的材质函数来做些效果了。
但也可以使用 ContentExamples 中的测试材质。打开其中了PivotPainter地图可以看到很多测试材质:
最简单的,让顶点基于自己的pivot缩放:
稍微复杂点的,基于自己的pivot旋转,并根据自己离pivot的距离进行变化:
更多推荐
所有评论(0)