如何解决在 Niagara 中获取骨架网格体顶点位置
我在 Niagara 的模拟阶段有一个自定义 HLSL 节点。该节点的输入变量之一是 Skeletal Mesh 类型,我想通过顶点的索引获得该骨架网格上给定顶点的位置和法线。
换句话说,我想做与 GetSkinnedVertexDataWS 节点等效的操作,但在 HLSL 中。这可能吗?
我找不到关于它的任何文档。我试过这个代码
bool myBool;
float3 VertexPosition;
ParticleMesh.GetSkinnedVertexDataWS<Attribute="Position">(i,myBool,VertexPosition);
float3 VertexNormal;
ParticleMesh.GetSkinnedVertexDataWS<Attribute="Normal">(i,VertexNormal);
其中 'i' 是我想要的顶点的索引(来自循环),但我收到错误:
"'GetSkinnedVertexDataWS_SystemParticleMesh_AttributePosition':无法将输出参数从 'float3' 转换为 'bool' SPH_Emitter,粒子 GPU 计算脚本"。
我也尝试了一些变体,但无济于事。
编辑:
通过“\UE_4.26\Engine\Plugins\FX\Niagara\Shaders\Private”中的USH文件,特别是查看“NiagaraDataInterfaceSkeletalMesh.ush”,似乎调用应该是 GetSkinnedVertexWS 不是 GetSkinnedVertexDataWS。
但是,当我进行此更改时,我现在得到的错误是
/Engine/Generated/NiagaraEmitterInstance.ush(1563,3-14): Err0r X3004:未声明的标识符“ParticleMesh”SPH_Emitter,粒子GPU计算脚本,
这对我来说毫无意义。 ParticleMesh 是绝对声明的 - 正如我所说,它是自定义 HLSL 节点的输入。
当它提到“NiagaraEmitterInstance.ush”时,我也不知道错误指的是什么。有一个“NiagaraEmitterInstanceShader.usf”,但没有 USH 文件。
这整个周末都浪费了,进度为零。几乎没有文档也无济于事。我必须打开和关闭发射器上的任意参数以在 0.2 秒内显示 Niagara Log 中的错误,敲击打印屏幕键并将屏幕截图粘贴到 Photoshop 中只是为了检查错误日志,这也无济于事是时候做出改变了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。