Read Chaos Geometry collection pieces' position from Niagara during or after simulation?

Hi,

I have been exploring the nodes “Read Geometry collection” and “Set Geometry collection Transform” in Niagara.

I’ve tried using “Read geometry collection” on particle update and then setting my particle position based on the read of the GC. But I’ve realized it just seems to read the original rest transform. Simulating the chaos sim, the particles won’t move to the new location of the simmed GC. Shown in attached video.

[Image Removed]

I was wondering is there another way to read a GC pieces’ transform as it sims, to attach particles for example to the pieces? The event notifies of GC’s are great for spawning particles when an event happens. But simply attaching a particle to a moving GC would be a fantastic addition.

I’ve played around with “Set Geometry Collection Transform” and in that case you can update the transform of the pieces, which is pretty cool. I was looking at combining these two nodes as well, reading the GC at a given point in time and then moving over the chaos sim to be manipulated by Niagara using the Set Geometry collection Transform. But that currently doesn’t seem to be possible because I can’t read the GC’s position after it started simming even when the pieces have come to rest again after simulating.

Many thanks,

Niels

Steps to Reproduce

  • Create a Geometry collection ready for simulation
  • Create a Niagara system that uses Read Geometry collection node on particle update
  • Attach Niagara system to Geometry collection

-> Particles stay in place

Hi,

Apologies for the delay, I tried looking into this but as it stands it may be a feature request that I can pass up to Epic if the following information is irrelevant to your needs.

There’s some posts surrounding this topic where one user mentioned you could do something like map the fractures during an on break or on crumble event as they first spawn to track with each piece and then you could feed that data into the Niagara system.

Information regarding crumbling: https://forums.unrealengine.com/t/what-is-a-chaos-crumbling-event/2272545/2

It does look like there’s an item index for geometry collection events for example: https://forums.unrealengine.com/t/chaos-destruction-access-individual-fragments/240372/6

Grabbing these vectors, I think they can be used to set the particle position.

Regards

Hey!

Yeah, it’s one of the limitations of the current system. For now, Niagara only reads and writes the rest transforms. Once the geometry collection component starts to simulate, the data is copied over to Chaos for the actual physics simulation and it takes over. So from that point on Niagara can neither read or write the actual GC data, as it would need to copy the data to/from the Chaos sim.

Regards,

Michael

Hi John, thanks for your reply.

I took some time exploring these topics. Getting a child component of a Geometry collection doesn’t seem to return anything. It show up with “accessed none”.

Mapping the bones to an array does work for the events, but that’s only usable on the moment of the event as far as I can tell. So I can access the location that way during the break or crumble event but not after or before that.

Since there is no way to access the children directly I can’t continuously ( or at any moment other than the available events) request the bones location which is what I was trying to do.

It does seem like this is a new feature request, would be great if you could pass it up. Especially accessing it from Niagara would be fantastic.

Many thanks,

Niels

I went ahead and escalated this to Epic, thank you for your patience!