LocalSpace Transforms in material graph do not work

TransformPointFromLocalToAbsoluteWorld(0,0,0) should return the absolute position of the origin of the component, not different values whether a vertex interpolator is used or whether nanite is enabled or not.

So, does the local transform differ for vertices and for pixels? so using local data in materials is a bit complex.

[Attachment Removed]

Steps to Reproduce
Look at cubes: the first and second column should report the same value since all actors and components have the same origin. This is not true: they do not use nanite.

The third and forth report the same value: they use nanite.

[Attachment Removed]

Hey Marco! Looking at the provided materials I think the safest bet is to use Instance and Particle Space rather than local space. Once you get into material land the renderer is only getting passed Actor (not component) and Object (centroid of the primitive) values for space and transform. The renderer has no idea the transform component belongs to and that’s probably why the Local space isn’t giving you what you want for, especially the HISM/VS case you provided. Instance and Particle Space (added in UE5.0) does a LOT of the work you need without needing to use an interpolator. Give it a shot and let me know if that solves it in your use case.

[Attachment Removed]

Thanks. Sometimes LocalSpace is the space I want to use (let’s just say the center of an instance particles), so I can’t really use different spaces.

I can find ActorPosition node but nothing about its transform. It is a bit strange that the renderer knows ActorPosition (so the Position of the root component) and not the transform of the its own component to which the draw call is strictly related.

If LocalSpace is not properly supported, wouldn’t it be better to just not show it?

[Attachment Removed]

So sorry, I meant to clarify that Local is the Actor’s space.

[Attachment Removed]