100 floating spheres. Best way to create dynamically?

Hi there,
I have 100 floating spheres (not really spheres but I can’t say what they are), which are around 250 triangles/170 verts, that are created dynamically and are floating there, gently bobbing up and down with unique movements.
In VR (Vive), all of the things I’ve tried kill frame rate. There may be no way to do this without greatly affecting the frame rate, but I wanted to see if I could get some ideas.

Here’s what I’ve already tried:

  1. Created a BP based on the static mesh, which also contains the floating logic (a simple timeline) and spawned this BP from another BP that generated the initial positions and controls the overall sphere count.
    That was pretty gnarly. Horrible framerate.

  2. Instanced geometry. Decent framerate, but I can’t figure out how to get them to individually float around. They spawn and give me a good frame rate, but they aren’t moving. I don’t see a way to convert an instance mobility from static to movable. This has promise if I can get the motion.

  3. Mesh particle emitter – I spawn a particle emitter for each sphere and they float around nicely but I still get a significant hit to the frame rate. Maybe I can try to get the distribution I want using the emitter by creating 100 meshes with proper offsets (maybe an emitter per row in the particle system?)

Anyway, I’ll keep plugging way to see if I can get this going but wanted to pick some brains (gross).


OK, the particle emitter method seems to be the best. I emit 100 instances of the static mesh via particles and it renders with no noticeable frame loss.