起初是工作中有一个需求,要对一个蒙皮的指定部分挂载持续性存在的粒子,且需要位置与顶点关联。
我第一时间想到的是去使用新建的module挂GetVertexData节点去读取Triangle信息,但是这个节点并不能对Vertex数据进行筛选。也不是不能筛选,是需要传入一个Vertex的IndexID以确定获得哪个Vertex的数据。但是这个IndexID是未知的,需要先对Index进行筛选。
后面发现还有一个Get Filtered Vertex Data,但是其传入参数其实跟限制无关,依旧是传入一个ID

到这里发现不对了。搜遍了节点没发现有能用于筛选的节点。然后才意识到可能这个限制在传入Niagara之前就应该已经决定了。
看了一眼传入的Skeletal Mesh的面板,一开始被带偏了,以为是Filtered Bones和Filtered Sockets的配置,搜了一圈没看到什么教程

然后搜这个Sampling Regions才翻到一篇官方论坛的询问和一篇日文教程……怎么连个官方使用文档都没得

总结了一下就是分以下步骤
- 先找到要用的Skeletal Mesh资产
- 在AssetDetails面板的 Sampling模块有一个Regions数组,通过配置数组定义region
- 数组中每个项为一个Region,通过设置Bone Filters和Material Filters两个子数组定义这个region的区间,这里BoneFilters还提供了Include or Exclude 的筛选项,可以截取骨骼段
- 配置完成后保存Skeletal Mesh,进Niagara
- 在Niagara的Skeletal Mesh的传入项中配置需要读的Region到Sampling Regions中

- 使用SkeletalMeshLocation模块读取信息

- 在Skeletal Mesh Location模块配置传入为目标Skeletal Mesh,并且将SamplingType选SamplingMode带有Sampling Regions的Type和Mode

然后就没有然后了,节点里再用GetTriangleData或者GetVertexData,正常传入ID就是对的。其他部分已经被剔除完了
- 作者:Reguluz
- 链接:https://reguluz.site/article/21665fbc-2b71-8054-b26c-eb090c3dcc4d
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章