Is there any way to have a ribbon’s position be the same as a static mesh’s socket’s position if the static mesh is from another emitter in the system? Or is there a way to at least get the static mesh’s rotation and move the ribbon up the static mesh a given amount of units no matter what the rotation is?
I know I could generate a location event with a particle, manually track the static mesh movement, and then receive it in a ribbon emitter. I’m just wanting to find out if there are any other alternatives.
Not entirely sure what you are trying to achieve because it still sounds rather vague, only if you can provide some more visual references, but if you want better substitute of Location Event, try Particle Attribute Reader which is much cheaper and supports GPU compute sim (particularly helpful for UE 5.1 onward for supporting GPU ribbon).
I can’t share visual references, but I’ll do my best to explain it better.
Here’s what exists: An emitter that is rendering a static mesh in a system.
Here’s what the goal is: Adding another emitter that can render a ribbon that follows that static mesh in the middle no matter the static mesh rotation.
Here’s what the problem is: The position of the static mesh is located at the bottom of the previously mentioned static mesh. As of now the ribbon follows the bottom of the static mesh if it moves around, and it also changes its orientation to match the static mesh orientation. I cannot just increase one vector and match the rotational movement of the middle of the static mesh. I need a way to move the ribbon along with the middle of the static mesh, and I cannot find a solution.
I tried my best to imagine your situation, but at least some simple sketch to depict what you have in mind would be a great help. Still I have come up with this example Niagara System. I did it in UE 5.1, but it is totally CPU so technically it should also work in UE 4.26.
In this example, I am orbiting the axis mesh around the central sphere frame. The cyan ribbon simply follows the center of the axis. The red ribbon is offset by the axis MeshOrientation (quaternion).
That looks very similar to what might work for what I want. Is it as simple as putting the offset as the MeshOrientation? Would I still need to offset it more so that it can not be at the SM position, which is at the bottom of the SM?
Here’s a super rough, quick sketch.
Red is where the position of the ribbon is now, and green is where I want it to be.
As it stands now the ribbon doesn’t move at all when I rotate it since it rotates on its bottom, which is where the position of the SM is.
Because Ribbon emitter generally uses World simulation space, that means the actor’s rotation (quaternion) as well as scale are ignored. To get around this you need to at least rotate the parent position by the actor rotation. This can be achieved by using the “rotate vector by quaternion” dynamic input, so “vector” input is the parent position you get from the parent emitter either via Event or PAR, “quaternion” input is Engine.Rotation.