Understanding Omniverse™ Flow#
Cell Size#
Cell Size has one of the most significant impacts on both appearance and performance. Keep in mind cutting cell size in half is an 8x increase in cells and as a result simulation time.
Channels#
Flow currently has standard channels. The four density channels are temperature, fuel, burn, smoke, packed in that order. The four velocity channels are velocity_x, velocity_y, velocity_z, divergence, packed in that order. Advection and emitters expose independent parameters for each of those channels.
Couple Rate#
Couple rate is used on Flow emitters. It specifies a rate of correction between an existing grid value and a target emitter value. Higher values like 120 can take the grid instantly to the emitter target values. High couple rates can be useful with fast moving emitters. Lower couple rates are very useful for slow moving emitters. By making the move towards the target value lazy, simulation can actively occur inside the emitter. This typically results in less artifacts and a more natural transition from inside to outside the emitter.
Effect Lifetime#
The damping/fade on advection largely controls effect lifetime. Damping is proportional to the current grid value. Fade is a fixed units / second rate.
Effect Scale#
Vorticity forceScale has a significant impact on perceived scale. Higher forceScale tends to make effects appear larger.
Combustion Modeling#
Default today includes a simple combustion model. Settings like buoyancyPerBurn help create mushroom cloud motion expected from explosions. Parameters like burnPerTemp and fuelPerBurn can also affect how fast combustion occurs. divergencePerBurn also controls expansion due to combustion. Higher values are useful for explosions.
Velocity#
With velocity, more is not always more. This simulation is based on stable fluids, where high velocities don’t necessarily behave as expected, but the simulation does not explode. Coarser cell size will effectively behave better will higher world scale velocities. Support for velocity substepping and overall shorter simulation steps are exposed, that improve high velocity behavior with a performance cost.
Rendering#
Rendering today uses the Flow reference implementation. Future versions will likely lean on native volume support in the RTX renderer. Basic Flow rendering provides a colormap to map temperature to color/alpha for fire/smoke. Also included is self shadowing.
Collision#
Collision support today is very limited. However emitters can be adapted for this purpose. Set allocationScale to 0.0, since collision only needs to be active when the simulation is visibly active. Set temperature/fuel/burn/smoke/divergence couple rates to zero, as we only need to control velocity. Set target velocity to (0, 0, 0). Set physicsVelocityScale to 1.0 for moving objects, to include body velocity. Set coupleRateVelocity to 120 or higher, to drive velocity to body velocity within a single frame. Set applyPostPressure to true, as this guarantees velocity at the end of the frame will match body velocity.