Alembic animation in timeline has low fps, how to improve?

Hello Unity forum,

I have received an alembic file from a 3D artist which is basically a thin large panel (think a large cube) that shatters procedurally. Imagine a large mirror shattering in a lot of pieces.

I believe the mesh is fractured in real time inside the alembic animation and at the most it has 122173 vertices (when fully shattered) and 105653 triangles in the first submesh and 5476 triangles in the second submesh.

I am able to load the file add the animation from the alembic stream player into a timeline.

The issue I have is that during the fragmentation the frames per second go down to 30-25 on a machine with an RTX 3080 and a modern 12 core AMD CPU.

The profiler shows that the majoority of the time is spent in PlayerLoop during AlembicStreamPlayer.LateUpdate() during the fps drops.

Is there anything I can do to mitigate this issue and improve performance?

Many thanks
Michele

Hey,

Unfortunately, the alembic format is not a very performant format mostly because it constantly stream, and the geometry is constantly getting post processed: polygons converted to triangles, vertices split, etc.

If the geometry does not have varying topology, I suggest strongly to use VAT: Texture Animation: Applying Morphing and Vertex Animation Techniques | by Luiz Otavio Vasconcelos | Wildlife Studios Tech Blog | Medium

There is public code to convert single animated alembic meshes into VATs and the ShaderGraph that play them.

Hope this helps.

1 Like

Hello @vladala and thank you so much for your help! Fascinating technique which I hope I’ll be able to understand at some point!

We do have varying topology unfortunately as the geometry breaks into more pieces as we progress along the timeline.

There are some similar fix for HDRP?