I noticed that in a standard physics loop with fluids:
Phy Update 1
Phy Update 0
Sync
The fluids are rendered a position one frame behind the current frame, this becomes apparent when the camera moves, i.e. if you move toward the fluids the particles become visible, if you move away they vanish. This can be fixed by placing the 'Sync' before the physics update calls, but doing so stops anything that isn't a fluid, i.e. a rigid body from doing anything.
I also noticed the fluid emitters stop after a while, why is this? I see no obviously named command that specifies how long an emitter should spray particles for and then stop, by default it should continuously spew as many particles as is required(lifetime*emit rate) forever.
Furthermore, the non-emitter fluids as shown in the 'Fluids' example are highly limited, changing the
'phy set fluid particle buffer cap' value has no effect on how many particles spawn in the fluid ball, I tried adding these fluids in my example app and had some issues. Such as using this:
phy delete fluid fluidID
phy make fluid fluidID
phy set fluid position fluidID, 0, 50, 30
phy set fluid viscosity fluidID, 50
phy set fluid damping fluidID, 0.5
phy set fluid particle buffer cap fluidID,5000
phy build fluid fluidID
I bound this to a key, so in theory... when this is called the fluid of fluidID is removed and recreated, almost like resetting the fluid ball. This works great for the first 9 times, but on the 10th it says the fluidID object couldn't be found. I'd guess that each fluid ball has 500 particles, and the amount of them spawned is never reset when they are deleted so having a buffer cap of 5000 means it will break on the 10th reset? In that example the whole simulation is reset, so I guess this issue is avoided but doing that is just unacceptable for a simulation that has more than 1 fluid and 10 barrels.
Also as mentioned above about the fluid visibility, it would be most useful if we have commands to specify the fluid simulation/physics radius, the visible fluid radius, the minimum density for a single particle(currently a single particle is very faint and requires many layers of them to really see anything, at which point your app is running at -5FPS), the added density for each extra fluid particle maybe? As if you set the minimum density quite high then 2 layers will be almost opaque. Or just give us full access to their visibility, I'm not sure what method they are using to render exactly but visually they just look like spheres with specular lighting and some falloff based on their normal to the camera, it doesn't really look like water at all most of the time. If we had full access to their visibility we could make our own shader based metaballs or something.