虚幻引擎5+ Houdini制作模型顶点动画效果流程分享!
CG小苏CG资讯 643 0
实名

通过了实名认证的内容创造者

发布于 2023-4-26 14:25:03

您需要 登录 才可以下载或查看,没有账号?注册

x
              
8c0d69ff8a4a4577c9b9243ef0a714d4.png
          640 作者: @Muteriku
作者网站:https://qiita.com/Muteriku[micxp_wxonkey]wxv_2796278232965808130[/micxp_wxonkey]

.
介绍                                
我将解释 Houdini 中的 Pivot Painter 以及在虚幻引擎中使用通过 Pivot Painter 创建的数据的示例。这是一篇介绍什么是 Pivot Pinater 的文章。这是一篇面向Houdini的文章,我省略了虚幻引擎的详细解释。此外,Pivot Painter 有“1.0”和“2.0”两个版本,但在文章中,解释遵循“2.0”的规范。什么是枢轴画家?











粗略地说,它是一种创建数据 以
“以小的子对象为单位移动对象”的机制。可以用这个做什么
拓宽交互式和程序动画的表达范围
允许您在不消耗 CPU 的情况下移动大量几何体我想在本文中将这部分作为一个具体的例子来介绍。

.
要记住的要点                                
・与增值税不同。我不使用 Pivot Painter 创建动画本身。・这是一种不仅可以在Houdini中使用,而且可以在3dsMax和Blender中使用的机制。・这与长期以来在游戏开发中使用的“将游戏中使用的信息放在模型的顶部”的方法相同。・Pivot Painter 本身并不是一项特殊的技术,因此它已经存在了很长时间。・可用于一般材料。
请参阅文档以获取更准确的信息。・Unreal ver5.1 文档https://docs.unrealengine.com/5.1/en/pivot-painter-tool-in-unreal-engine/・Houdini ver19 文档https://www.sidefx.com/en/docs/ houdini/nodes/sop/labs--unreal_pivotpainter-1.1.html

.
实验室 Unreal Pivot Painter SOP                                

Houdini 中的 Pivot Painter 工具是 Labs Unreal Pivot Painter SOP。 通过使用此 SOP,您可以输出具有存储在网格和纹理中的“参考点(= 枢轴)”信息的数据。




这里对文章中使用的术语进行补充对于“Pivot Painter”,下面的链接是https://www.sidefx.com/en/tutorials/game-tools-pivot-painter/Pivot Painter 是一种 Houdini 数字资产 (HDA),可在模型顶点和附加 UV 通道中存储枢轴和旋转信息。
有。
本文将“Labs Unreal Pivot Painter SOP”称为“Pivot Painter”或“Pivot Painter SOP”。
此外,・通过调用一个作为一个组移动的对象单元,并将一个枢轴设置为“子对象”,我们将把它与单个网格或资产区分开来。
.
关于输入 Pivot Painter SOP 的数据                                
两种类型的数据被输入到 Pivot Painter,如下所示。・左输入:绘图模型(多边形网格) ・右输入:Pivot(简单点数据) 。

.
@hierarchy 属性                                
安装多个枢轴时,哪个多边形网格与哪个枢轴关联?
提供了一个名为@hierarchy 的属性来确定这一点。
必须为网格和枢轴设置。类似于@name@path 的可选名称信息。
它是必不可少的属性,因为它是连接网格和枢轴的标识信息。


.
从 Pivot Painter SOP 输出的文件及其内容                                



右边输入的点的数据作为“pivot information”作为纹理输出,在进行UV设置后输出多边形网格,这样可以根据@hierarchy引用纹理中合适的像素。
在 Pivot Painter SOP 中设置的 UV 将使用第二个 UV。由于这是固定的,让我们为除第二个以外的多纹理等设置 UV。
有纹理的枢轴信息的类型枢轴输出什么信息?您可以在 Pivot Painter SOP 的参数中自行设置。根据Unreal中使用的表达式选择“Pivot position”、“Pivot direction”、“ID number”等。每个项目的内容在下面链接的“Render Options”一栏有说明(有些没看明白。。。)

https://docs.unrealengine.com/5.1/ja/pivot-painter-tool-2.0-maxscript-reference-in-unreal-engine/

.
旋转                                
现在,让我们实际创建数据并查看其在 Enreal Engine(以下简称 UE)中的使用示例。
UE中mesh按材质旋转需要的信息是“旋转中心位置”(枢轴位置)、“旋转轴方向”和“旋转角度”。
将它们连接到“Rotate About Axis”和“Fix Rotate About Axi Normals” ,通过改变顶点位置和旋转顶点法线来表达网格旋转。

“旋转角度”只是一个浮点值,所以不需要在Pivot Painter中准备,而是从Pivot Painter中创建一个数值来改变每个子对象的旋转时间。
我们将根据以上创建数据

.
在 Houdini 中创建数据                                
让我们实际创建前面提到的“三个旋转框”。准备一个枢轴点并使用复制到点在该点上放置一个框。

首先,创建一条包含 3 个点的线,然后使用枚举 sop 为每个点设置 @hierarchy。

之后,如下所示准备网格和枢轴并将它们连接到 Pivot Painter。 该点在 (2) 中的节点处的 @hierarchy 被转移到它们所在的图元。



.
设置 Pivot Painter SOP                                
这里选择你要输出的信息类型 ①“Pivot Position”用于UE中的“旋转中心位置”(使用@P值) ②“Selection Order”是偏移旋转时机的数值(点数字) ③ “XVector” 用于 UE中的“旋转轴的方向”(使用@N的值) 。同样,这些数据使用右侧输入的点的信息。@hierarchy 本身不作为数据输出,而是更改为像素位置和 UV 值。

之后,指定输出目的地并单击“导出”按钮。・输出fbx模型贴图(2张) 。纹理名称根据要输出的数据内容确定。
导入虚幻引擎和纹理设置
导入到 UE 的纹理具有以下设置。
■通用设置・无mipmap・sRGB:关闭・过滤器:最近
■ 16 位图像设置・压缩设置:HDR
■ 8bit 图像设置/压缩设置:VectorDisplacementmap
纹理分辨率将是Pivots数量中的像素数量,因此几乎没有因压缩设置而导致的内存压力。本例中的纹理分辨率将是非常小的 3 x 1。

.
创建着色器图                                
整个shader graph 点就是被橙色包围的部分。使用专用材质函数转换(解码)来自纹理的枢轴信息。



在网络的下部区域,使用正弦从时间创建一个“旋转角度”。为了偏移时间,将②的信息添加到Time。
将以上信息与上面提到的“Rotate About Axis”和“Fix Rotate About Axi Normals”连接起来,连接到材质上。“旋转角度”连接到旋转角度。之后,如果将它连接到“材质结果节点”,如图所示,子对象应围绕各自的轴旋转。


.
变化 1                                
同一技术的另一种变体。我只是将 Houdini 中的轴心点设为圆而不是线。Pivot Painter 的输出设置和着色器没有改变。*材料参数值相应调整




.
变化 2                                
同一技术的另一种变体。这一次,从 Torus 开始,网络已经更新,但没有做任何复杂的事情。Pivot Painter 的输出设置和着色器没有改变。*相应地调整材料参数值 @hierarcay 设置是 通过将 使用 Assemble SOP(橙色)创建的 Primitive 的 @name转换为具有 Attribute Promote 的点的 @hierarchay(紫色)来设置的。



使用纹理来自 Pivot Painter 的数据可用于具有常见 PBR 纹理的常规材质。这是将它与法线贴图和自发光一起使用的示例。作为一个警告点.

使用法线贴图时记得结合旋转的顶点法线用于多纹理的 UV 为第二个以外的 UV 做准备

.
移动                                



在UE中按材质移动网格所需的信息是
“移动方向”
和“移动量”

只需将“运动方向”x“运动量”连接到材质的世界位置偏移。


从 Pivot Painter 输出数据输出 XVector 和选择顺序。网络不复杂,省略。如果已知移动方向仅为垂直方向,则不需要 X 向量输出。不要忘记设置@hierarchy。Selection Order 用于转移运动时间的目的,就像旋转时一样。


.
规模+互动                                


在 UE 中按材质缩放网格所需的信息 是“枢轴位置” 。比例由顶点与“枢轴位置”的接近程度表示。
当子对象的所有顶点都在“枢轴位置”时,缩放将为 0。使用的网格数据和纹理与用于旋转的示例相同。

按脚本播放动画按物体高度播放动画另一个物体的骨骼角度动画播放开门动画播放可以想到各种触发器和驱动程序。
层次结构的使用
层级结构我还没来得及详细验证,所以浅浅的解释一下。可以通过在@hierarchy 中添加“/”(斜杠)来表示层次结构。在这个例子中,通过使用子对象的层数(层数)作为遮罩,可以执行不同的运动,例如“移动”或“旋转”。这可能是使用层次结构的最简单方法。上图中,橙色箭头为一级子对象, 绿色箭头为二级子对象。通过在Pivot Painter SOP中指定“Normalized 0-1 HIerarchy Position”, “自身的层数”/“对象拥有的最大层数”, 即归一化的0-1浮点值存储在质地。由于数据只是归一化值,不需要虚幻引擎解码,乘以对象拥有的最大层次数即可使用。





考虑父子层次的动画也是可以的,但是这里不涉及,因为是比较深入的内容,没有分析。
UE的“Samples by Function”中有Pivot Painter示例场景,请查看。

如何使用 Pivot Painter一个著名的例子是“一棵树在风中摇曳”的表达,但似乎还有其他有趣的表达可以做出来,主要是人造物体的动画。由于可以通过脚本等进行交互,因此在 UI 和 HUD 等游戏中的使用范围似乎很广。此外,从 Unreal Engine 5.1 开始,动态优化多边形数量的“Nanite”可用于 Pivot Painter 的变形模型。您将能够表达详细的动画,同时抑制 CPU 和 GPU 成本。
故障排除当它没有按预期移动时,这是一个确认点。・检查您要从 Pivot Painter SOP 输出的数据・检查您是否使用了正确的纹理(纹理名称根据输出数据的内容而变化)・检查纹理过滤器、压缩等是否设置正确检查 sRGB 如果不关闭,轴的方向会发生偏移。
另请参阅此链接的“故障排除”部分https://docs.unrealengine.com/5.1/ja/pivot-ainter-tool-2.0-in-unreal-engine/
.
最后                                
这是对 Pivot Painter 的介绍性解释。UE这边被截短了,但最终还是长篇大论。感谢您阅读到最后。






END



声明:本文章中所有的图片和视频都归原作者所有,仅供大家参考学习和交流,不作商业用途,侵删。如果你喜欢这篇文章,欢迎转发!谢谢!


更多学习和交流可扫描下方二维码哦!


评分

参与人数 3元素币 +15 活跃度 +7 展开 理由
浮世绘 + 2 + 2 看封面进来的
simon2014 + 7 + 2 为了元素币,拼了!
jinMenShan... + 6 + 3 甚好,甚好

查看全部评分

授人以鱼不如授人以渔!B站和微信公众号关注: CG小苏  每日分享最前沿视频教程和技术文章白嫖资源!
使用道具 <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表