PRT Loader Retime

I suspect this is going to end up with an answer that has to do with PFlow, but I’ll pose it anyway.

I have a PFlow system that has a ton of different spawns happening based on intertwined particles events. I need to retime it in and out of bullet time. So, I cache out to a PRT sequence, load it back in with a PRT Loader and then use the graph to get my retime. I take the particle system and Frost it into a mesh. And then XMesh that to a cache.

The retime works as planned, but because the spawned particles are been essentially birthed out of nowhere, I’m getting popping in the mesh when those particles come into existence. And they are happening on the whole frames (I think). So those don’t seem to get staggered in the retime process

Any thoughts on how to finesse those pops?

~tsp
TireWaterTest.mov (8.56 MB)

This has come up before, and basically we would need to stagger the “birth” of retimed particles based on their Age. We have logged it, but we have not done any work on it yet. Also we would like to interpolate the Age channel itself so retimed particles would show an advancing Age value on sub-frames.

That being said, if your PRT contains an Age channel, you could possibly detect newly-born particles (with Age around 0.0). It would be possible to set the Selection channel of such particles to a value between 1.0 and 0.0 within the first original frame interval and use a Krakatoa Delete by Soft-Selection+ID to gradually delete less and less of the selected particles to emulate a gradual appearing of newly born particles within the stretched first frame.

In a test I creared, I spawned 10 particles per 1.0 of travel from a standard PFlow. Of course, once I retimed it to play back 10 frames over 100 frames, I started seeing the popping of whole 10 particle bunches around each base particle.

So I added a Krakatoa Magma and set it to do the following:
We output a Selection of 1.0-(Age*FrameRate), clamped between 0.0 and 1.0.
So a particle with Age 0.0 produces a Selection of 1.0, a particle with age of one frame (1/24) produces a Selection of 0.0, and older particles get clamped to 0.0 anyway.
When a Krakatoa Delete is added on top to delete by ID and Selection, it will delete all new born particles, and gradually undelete them as they approach the end of the first frame’s interval:


In the following animation, the left system is the PRT Loader without any modifications, while the right one has the Magma and the Krakatoa Delete and deletes new born particles with a gradual reveal within the first frame of the original sequence:
kmx2_graduallyrevealretimedspawnedparticles.mov (2.68 MB)

Sweet Bobo! I’ll definitely give this a shot.

~tsp

Hey Bobo,

I THINK I’ve setup the Magma correctly, but I’m getting this error:

ERR: meshing_dlg_proc::DlgProc: particle_file_istream_factory: The input file “C:\TEMP\PRT\particles_tirewater0160.prt” does not exist.
ERR:
ERR: BuildMesh: Magma Could not match inputs to valid combination:
ERR: ID: 2
ERR:
ERR:
ERR: BuildMesh: Magma Could not match inputs to valid combination:
ERR: ID: 2
ERR:
ERR:
ERR: BuildMesh: Magma Could not match inputs to valid combination:
ERR: ID: 2
ERR:
ERR:

Node ID 2 is the Multiply node. I did save out age data to the PRT. And my input script is “framerate” (no quotes)

Also, I don’t know where Krakatoa is looking for this: “C:\TEMP\PRT\particles_tirewater0160.prt” The actual loader is looking for a sequence on the network.

Any thoughts?

Is there some Frost involved?
There is some BuildMesh involved according to the log…

Can you post a screenshot of your flow?