Quick answer: Set Source Component on the SkeletalMesh DI to the live SkelMeshComp. Use SetSkeletalMeshDataInterfaceMesh BP node at runtime.
Effect samples bone positions. In editor preview: works. In game: nothing emits, DI returns zeros.
The Fix
Niagara System:
User Parameter: User.SkelMeshDI (Skeletal Mesh DI)
Default Mesh: PreviewMesh (editor only)
C++ on actor:
NiagaraComponent->SetVariableObject(
FName("User.SkelMeshDI"), MySkelMeshComponent);
// or BP
SetSkeletalMeshDataInterfaceMesh(
NiagaraComponent, "User.SkelMeshDI", MySkelMeshComp)
Runtime binding fixes the editor-vs-runtime mismatch. Default Mesh is purely for design-time preview.
Verifying
Effect emits at bone positions. Without binding: spawns at zero or nothing.
“Bind at runtime. DI live. Bones sampled.”
Related Issues
For Niagara mesh on skel, see mesh on skel. For Niagara user parameter, see user parameter.
Bind runtime. Bones sampled.