Emitter
The Emitter block is what defines where an effect will be created as well as how many particles should be in the effect and a few other details related to how the entire effect will be generated. This block must be a child item of the VisualEffect block and you may have multiple emitters in a single effect. Note that once a VisualEffect block has been linked to the emitter, the Referenced From section of the Inspector will show a button: EmitterList
. Clicking this will pan the Node Graph to the VisualEffect block that is the parent of the Emitter.
When you add an Emitter block item to the VFX Node Graph, the Inspector window will change to show the editable properties for the block (some of which can be edited within the block itself):
The options available are as follows:
-
EmitInLocalSpace
With the parameter unchecked, particle positions and velocities are expressed in world space. World space is considered as ECEF - "Earth-Centered, Earth-Fixed" where directions and orientations are calculated using the center of the earth as the base location. This means that particle/emitter positions are oriented by world space axes but are used as an offset from the position of the emitter, so[0, 0, 0]
is still where your VFX is spawned, but directions are based on the vector from the center of the earth, where the Y vector would be from the center of the earth to the north pole. It is most likely you will always use helper nodes - like LocalDirection - when using positions with the EmitInLocalSpace parameter unchecked. Note that using world space in your nodes means that the rotation offset for your VFX will be ignored.
With the parameter checked, positions and velocities are expressed in a space local to the VFX instance (by convention[X = left/right, Y = up/down, Z = forward/back]
). Local space takes into account the transformation of the object it is attached to and the potential position and rotation offsets you have defined when spawning your effect or attaching it in a model behavior file.
Note that position and rotation offsets are always expressed in the space of the object the VFX is attached to, and you need to be careful with some nodes as their output may not be what you expect if the emitter is set to emit in local space. Also note that the following nodes will change their output automatically to match this emitter setting:- WindDirection
- GravityVector
- GroundDirection
- GetGroundAttribute (the position parameter)
-
TimeEmission
Setting this value will set the duration for the emitter to function, in seconds. If this element is set to -1, it means that there is no time limit on emission and the emitter will spawn particles indefinitely.
-
Delay
This can be used to add a delay on the emission of particles from the emitter. You supply a value in seconds, and the emitter will not spawn particles until the given time has passed after the effect was initially created. A value of 0 means no delay.
-
MaxDistanceEmission
This value sets sets the maximum distance - in meters - from the camera at which particles will spawn from the effect emitter. Once the camera exceeds this distance from the emitter, particles will stop being created.
-
RateType
The rate of particle emission can be controlled by either time or distance. When "Time" is selected, then particles will spawn at "N per second", and if "Distance" is selected then particles will at "N per meter moved", where N is the Rate value.
-
Rate
This value defines the rate at which particles will be spawned, as either "particles per second" or "particles per meter" depending on the RateType. This means that, for example, if you set this to 6 and the RateType to "Time", a particle will be spawned every 1/6th of a second. Alternatively, if you set this to 6 and the RateType to "Distance", a particle will be spawned every 1/6th of a meter that the emitter moves. The block also permits you to input a value for the rate (see the section on Block Inputs, below). Please note that the rate is for the emitter and will affect all particles, and as such you cannot use any individual particle properties as an input, or as part of the chain of input nodes (for example, using a particle ID as a "seed" for the Random node won't work correctly).
The Emitter also has a further button, ParticleInit(+)
. Clicking this will permit the emitter to accept an Init block as a child. Note that an emitter can only have one Init block attached to it. Once you have linked an Init block with the emitter, the button will change and there will be an additional X
button. This can be used to break the link with the Init block (but this does not remove the Init block, only the link).
Block Inputs
The Emitter block permits one input from a Node to set the following value:
- Rate: This input can be any single scalar value. Note that you cannot use the output from the GetParticleAttribute node, as it requires a particle to get the information from, and the emitter is set before any particles are created.