Avoid Modifier

This modifier will change particle direction to avoid other objects in the scene.

In this version splines, including X-Particles Trail objects, have been added to the list of objects which can be avoided.

Interface

This is the modifier's interface:

For the 'Groups Affected', 'Mapping', and 'Falloff' tabs, and for the buttons at the bottom of the interface, please see the 'Common interface elements' page.

Enabled

Uncheck this switch to disable the modifier.

Mode

Independent [default setting]

In this mode, particles will be affected if they come into the field of effect of the modifier. X-Particle Actions have no effect on the modifier in this mode.

Action-Controlled

In this mode, the modifier will only act on a particle when told to do so by an Action. Until that point, the particle will not be affected, but once activated for a particular particle, the modifier will continue to influence it as long as it is in the field of effect of the modifier. The modifier's effect on a particle can be halted by means of another Action, if desired.

Detection Distance

This is the distance in scene units at which the particle will detect that there is an object to be avoided. The shorter this distance, the closer the particle will get to the object before starting to turn to avoid the object. If you set this too low (e.g. less than the distance the particle will travel in one frame), the particle may fail to avoid the object altogether.

Variation

Applies some random variation to the 'Detection Distance' so that the particles don't all start to avoid the object at the same time.

Object Shell

This applies a scaling factor to each object so as to create an 'invisible shell' around the object. This shell is what the particle will actually avoid. The default is 1, which sets the shell to be the same size as the object, meaning that the particles will only just avoid the object. Set to a higher number, the particle will avoid the object by a wider margin.

Default Thickness

This setting has two uses. If the object is a spline, this is the 'thickness' given to the spline. A spline has zero thickness, so there is nothing to collide with; in that case, the spline has to be given an assumed thickness (imagine a virtual cylinder around the spline) to provide a collision object.

If the object is an X-Particles Trail object, as opposed to a conventional spine, its thickness comes from the 'Thickness and Color' tab of the Trail object. That tab can do three things:

  • the default is that the thickness is not set, in which case it is given a default value of 0.5 scene units and this 'Default Thickness' setting is ignored
  • the thickness is specifically set, in which case this setting is again ignored
  • or the 'No Thickness or Color Data' switch is checked, in which case no thickness data at all is provided by the Trail object and this setting provides the thickness value

But it has another use. If a particle is trying to avoid its own Trail object, the problem is that the trail has the virtual 'cylinder' around it. This means that if you test for intersections from the particle position, it will hit the cylinder around itself and register an instant hit, which is clearly incorrect. If it tries to change direction at that point, it won't be able to because the 'cylinder' completely surrounds it, so it fails to determine a suitable new direction and simply stops. The only way around this is to advance the starting position along its direction of travel until the starting position is 'outside' the virtual cylinder.

But how far should it be advanced? An arbitrary value won't work, since the trail thickness could be set to any value. Instead the 'Default Thickness' value is used. This will advance the start position of the ray by that distance along the direction of travel,

In this case we strongly recommend that, if you are using this modifier to avoid a particle's own trail, that you check the switch 'No Thickness or Color Data' in the Trail object. This will then ignore all thickness data from the Trail object and use only the value in this setting.

On Detection

This menu enables you to choose what the particle will do when it detects a possible collision with an object from the 'Objects' list. There are four possible options:

Change Direction

The particle will change direction to avoid the object.

Freeze

The particle will freeze. It can be unfrozen again using an Action or the Negate modifier.

Die

The particle will be killed. Unlike freezing, this cannot be reversed later.

Trigger Actions

The particle will trigger any actions in the 'Actions' list.

For convenience, when you add a 'Trigger Actions' layer, a new action will be created and added to the 'Actions' list.

Using this menu will add the selected option to the 'Layers' list. You can add more than one entry to the Layers list if required.

Layers

This is the list of options that will be carried out when a potential collision with an object from the 'Objects' list. It can contain more than one entry. For example, this list will first change the particle direction then trigger any actions in the 'Actions' list:

You can remove options by right-clicking an entry and selecting 'Remove' or 'Remove All'. You can also disable any entry temporarily by unchecking the checkbox at the left of the entry, like this, where the 'Change Direction' entry is disabled:

Note that you can only have one entry of the same type.

The order of these entries is not relevant, and in fact, you cannot change the order. They are always carried out in this order, if present in the list:

  1. direction changes
  2. particle freezes
  3. actions are triggered
  4. particle dies

Objects

Drag the objects you want the particle to avoid into this list. You can add any kind of polygon object, or an object that would be a polygon object if it was made editable (e.g. object primitives, C4D generator objects, the Mograph cloner, etc.) or a spline object, including an X-Particles Trail object.

Objects without polygons and which are not splines (e.g. cameras, lights, etc.) will have no effect.

Actions

This is a list of actions which will be triggered when a potential collision with an object from the 'Objects' list is detected.

These actions will ONLY be triggered if the 'Layers' list contains a 'Trigger Actions' entry.

Add Action

Click this button to create a new button and add it to the 'Actions' list. When you click this button, if there is not already a 'Trigger Actions' layer in the list, one will be created. This is simply for convenience, since presumably if you create an action you want it to be triggered.