Emitters are the mechanism to create activity in a Flow grid. The shape of an emitter is currently established using PhysX collision shapes. Parameters for the emitter are set using a Flow emitter component.
To create a basic sphere emitter, drag a sphere into the level. Select that sphere, and in the details pane, click the Blueprint/Add Script button to create a blueprint that includes a sphere component.
Once the blueprint has been named, an editor window for the blueprint will open. In the Components pane, click Add Component and select Flow Emitter. Clicking on the new Flow Emitter component will show available parameters in the details pane.
In the blueprint editor, select the StaticMeshComponent (Inherited). In the details pane, go the collision section. Set the Collision Presets to Custom..., and set the Flow channel to Overlap in the Collision Response.
Drag this new emitter blueprint into the level, inside the extents of a Flow grid.
The emitter velocity, density, temperature, and fuel settings are all target values that the user would like grid cells to move towards. The rate at which the emitter moves a grid cell towards the target value is controlled by the product of the couple rate and per channel masks. Higher couple rates move towards the target values in a shorter amount of time. This property is useful for moving objects. Lower couple rates can be very useful for stationary objects, since the weaker influence on the simulation allows simulation to happen naturally instead the emitter.
Due to the couple rate properties, in practice, good results are achieved by increasing couple rate via UE4 blueprints as function of velocity. Doing this in blueprints adds a bit more authoring, but allows the user to tune behavior. It resolves the ambiguity of whether or not an emitter should emit more or less when moving.
An important concept with emitters is understanding what setting, for example, temperature to zero means. In the temperature case, if the couple rate is nonzero and temperature mask is nonzero, then the emitter is configured to drive temperature in the grid cells to zero. This may not be the intended behavior. If the intention was to not modify the temperature, then the temperature mask should be set to zero. Alternatively, the couple rate could be set to zero, but this has the effect of disabling the emitter.
Emitters also influence grid block allocation. Allocation scale controls how much of the emitter bounding box should force allocate grid blocks. An allocation scale of 0.0 disables emitter allocation, which is useful for collision shapes, where the grid only needs to be active when visible fluid is present. A nonzero allocation scale on at least one emitter is required to get any activity in the grid, since grid self-allocation uses an active block to control the active block’s own allocation and the allocation of neighboring blocks.
Multiple frames are required to make a given block resident/active. This creates a need to predict allocation needs several frames into the future to avoid possible artifacts. Increasing allocation scale is a non-directional option to achieve this. Allocation predict is the directional option. It allocates in the direction of the emitter velocity, making it ideal for prediction along trajectories.