I need to churn about 8 million particles for 4500 frames. How many seconds per frame would you wager a stoke field would take to process that many particles? Also can a stoke vectorfield be parented (to a camera in this instance)? PFlow’s forces are letting me down in a huge way.
I decided to run a quick test emitting 8 million particles off the surface of a Sphere on frame 0, and then simulating them for 10 frames to get an idea of the performance. Note that this was a 6 years old i7 QuadCore with 12 GB of RAM, nothing fancy.
I used a simple Wind Force with Turbulence, the type of field used can have an effect on the performance - e.g. FumeFX would be slower as we would have to also read the FXD data as part of the process.
Here is the Log for these 10 frames of 8 million particles:
--Asynchronous Saving During Simulation Using 4 Threads On 8 Cores.
--Save Channel Map:
--Position float32[3]
--Velocity float16[3]
--ID int64[1]
--Age float16[1]
--LifeSpan float16[1]
--Generate Time: 7.203 sec.
--Advect Time: 66.212 sec.
--Update Time: 0.0 sec.
--Delete Time: 0.0 sec.
--Overhead Time: 4.364 sec.
--TOTAL Stoke Time: 77.779 sec.
--Flushing Cache Using 7 Threads On 8 Cores.
--ASYNC DISK CACHE FINISHED SAVING IN 16.383 SECONDS.
What this means is that 4 threads were used to save PRT files to disk. I had a 4 GB cache set up, but only about half of it was actually used in this case. All 8 cores were potentially used for simulation. Once the simulation finished (7 seconds to generate 8 million particles, 66 seconds to advect them over 10 frames, 4 seconds of overhead, about 78 seconds in total), the rest of the cache was flushed using 7 threads (7 PRT files written in parallel) in order to finalize the output on disk. That took 16 additional seconds.
I am confident your machine is better than mine, but assuming it is the same, using this simple setup would take 450x longer, or about 8 hours and 15 minutes.
The custom Stoke fields are generally in world space. However, it would be possible to set up a Magma that transforms data into a different space.
What kind of forces are you using?
I ended up plowing it through Max’s native forces, specifically blurwind and a gaggle of vortexes working against each other to create a sort of turbulent but also somewhat advection-y movement. Total time for 4500 frames was around 18 hours to a DiskCache so not that much worse.
I would like to play with this after this project though to use a real advection driven field from stoke/Fume to drive the animation instead of the max fields.
I also did create a very clever solution to re-renders and sim-changes and that was to do a local position ‘looping’ Modulus function in Box3. That way I simulated it in one position statically and was able to “fly through it” infinitely in every direction.