Please enable JavaScript to view this site.

Clarisse 5.0 Reference Guide

The Scatterer is a really powerful scene object allowing you to scatter scene objects from input Particles and input scene objects. Scatterers also support scattering of Combiners and scatterers so that it's possible to create entire worlds! Furthermore, it is possible to have very fine access to instances properties using the texture Instance Color in order to add variation in instanced materials. Please refer to Instance Color section for more information.

 

Jungle created using scatterers, combiners and a few geometries.

Jungle created using scatterers, combiners and a few geometries.

 

Attribute

Description

Geometry Support

Sets the geometry the scatterer will use as particles.

Decimation Seed

Set the seed of the random generator used to compute instance placements and transformations.

Decimate Value

Set the decimation threshold used to decimate particles used to scatter geometry instances.

Scatter Input Mode

Set the mode defining how geometries are placed on each particle based on the input geometry list.

Scatter Input

Set the texture used to place geometries on particles.

Geometry

List of scene objects being scattered on particles. When multiple items are set in the list, they will be randomly picked. Note that groups can also be used to specify the list of scene objects.

Geometry Id Attribute

Set the name of the attribute that will be read to define an id to each geometry of the geometry list. This Id is then used with Scatter Input to place corresponding geometry on each particle.

Variance Seed

Set the seed of the random generator used to transform instances.

Scatter Position

Position offset of all scattered item. The position offset of the scattered item is relative to the particle it is scattered on.

Scatter Position Variance

Position offset variance between scattered items.

Scatter Rotation

Rotation of all scattered item.

Scatter Rotation Variance

Rotation variance between scattered items.

Scatter Rotation Variance Step

Rotation step variance. Rotation values will be a multiple of the input step.

Scatter Scale

Scale of all scattered item.

Scatter Scale Variance

Scale variance between scattered items.

Uniform Scale Variance

Sets if the scale variance is applied uniformly through the items (conserve proportions)

Geometry Support

The scatterer extracts instance positions from the input geometry particle connected to the Geometry Support attribute. Geometry Support can be any geometry that defines points/particles (Particles, Polymesh...)

Scattering Geometries

Using the Geometries list attribute, you can set the list of scene objects that are going to be to be instantiated by the scatterer. Please note that the Geometries attribute accept groups in which case the items defined by the group are as if they were added in the list. The way the scatterer instantiate items is based on the Scatter Input Mode attribute.

Scatter Input Mode

This attribute allows you to define how items are instantiated by the scatterer. There are different modes available.

Mode

Description

Random

Geometries are scattered randomly (default).

Luminance

The Scatter Input luminance value is used to scatter a specific geometry from the list. Basically the scatterer divides the input luminance according to the number of geometries. The geometry located in the luminance interval will be the one scattered.

ID

The ID coming from the Scatter Input value is used to select the geometry with the corresponding ID. This ID is generally defined by a custom attribute on the geometry. When the input ID, generally coming from a texture plugged to Scatter Input, matches the ID defined in the custom attribute of geometry, the geometry is instanced on the current particle. Note: the scatterer need to be able read the custom attribute of the geometries to do the comparison. This is why you must set Geometry Id Attribute to let know the scatterer which attribute it should look up for when comparing IDs coming from the Scatter Input Value and the geometry. It is possible to directly put an ID for each items you add in the Geometries list attribute.

Random Mode

When in Random, the scatterer randomly instantiates a scene object from the list over each point defined by the Geometry Support. The probability of each item can be set using the probability field next to the item in the Geometries attribute list.

Random Distribution

Random Distribution

Probability

You can set the probability of presence of each item being scattered in the Geometries list of the scatterer. By default, each item has the same probability to appear. If you have two items in the list, setting the probability value of one item to 200% will double its chance to be scattered by the scatterer. Please note that the probability value of items is normalized so the sum of probability is equal to 100%. In other words, if you have 3 items set to 100% each, the final probability of each item will be equal to 33.33 %.

 

A sphere and a box scattered with equal probabilities

A sphere and a box scattered with equal probabilities

Here the probability of the sphere as been reduced to 10%

Here the probability of the sphere as been reduced to 10%

Luminance Mode

Instead of randomly instantiating scene objects from the Geometries list, the scatterer can use a luminance texture as input to select which item is instanced on a specific point. Just set Scatter Input Mode to Luminance and connect a luminance texture to Scatter Input. Each item of the Geometries list will be mapped to a color range of a size equal to 1 divided by the number of geometries in the list so that items matching the color range evaluated for a specified point are instantiated.

 

Let's imagine we have 2 geometries a cube and a sphere. Since the cube is the first geometry of the list, it defines a luminance range of [0, 0.5[. The sphere on the other hand defines the luminance range of [0.5, 1.0]. When the Scatter Input texture luminance is lower than 0.5, the cube is instantiated while it is the sphere when it is equal or above 0.5.

Luminance Distribution with a circle texture

Luminance Distribution with a circle texture

Geometry ID

When in ID mode, you can control the distribution of the instances. In other words, you can control which geometry is going to be placed at each particle. To do this you just have to plug a texture to Scatter Input that will define an ID for each particle. This texture is generally a texture map or an extract property node reading a specific property stored in the point cloud.

 

Scatterer using Geometry ID to scatter 4 geometries

Scatterer using Geometry ID to scatter 4 geometries

 

To make this work you also must give an attribute name (usually a custom attribute) to let scatterer know which attribute of the geometry defines the id. This ID is used by the scatterer when comparing both IDs coming from the Scatter Input Value and the geometry to select which geometry it must use on a specific particle.

Note

You can directly set IDs for each of the items you add to the Geometries list of the Scatterer.

 

Tip

If you add a group with items in the scatterer the scatterer will pick randomly any item in the group based on the ID. This is very useful if you create a group made of rocks for example. This way each time the particle should receive a rock (based of its ID) the scatterer will pick randomly one item in the group that matches the ID.

Decimation

It is possible to decimate the input particles used to scatter instances directly in the Scatterer. The advantages of doing decimation by scatterers are numerous. First, it allows to share a same point cloud over multiple scatterers. Secondly it avoids the reshuffling of the instancing distribution that occurs when decimating particles outside the scatterer since it is based on particle creation order. When decimating in the scatterer, the scatter keeps track of the particle ids so it can properly prevent the reshuffling of the instancing distribution.

 

No Decimation

No Decimation

Decimation on the scatterer the distribution is identical.

Decimation on the scatterer the distribution is identical.

Decimation on the particles the distribution is different.

Decimation on the particles the distribution is different.

Collision Detection

It is possible to enable collision detection to avoid instance interpenetration. This results to more realistic distribution but introduces some computational costs inherent to the collision detection computations. To enable collision detection, simply set Collision Mode to Use Bounding Box or Use Ellipsoid.

Mode

Description

Off

No collision detection is performed (Default).

Use Bounding Box

Computes the final bounding box of each scattered instances (with their final transformation matrix) and use their bounding boxes to compute the collision detection. This is the fastest mode. However, the approximation can result in bounding boxes that are too large.

Use Ellipsoid

Computes the ellipsoid contained within the final bounding box of the geometry. These ellipsoids are then used to compute the collision detection. This mode is slower that the bounding box mode. However, this mode tends to provide more pleasing results in general on real cases (forest etc...). Please note that this mode is not conservative as the underlying geometry may potentially result to ellipsoid boundary overflow. This means that instances may still collide with each other in the end.

 

No collision detection.

No collision detection.

Collision detection set to Bounding Box.

Collision detection set to Bounding Box.

Collision detection set to Ellipsoid.

Collision detection set to Ellipsoid.

 

Tip

It is possible to control globally the scale of objects used for collision detection using Collision Scale Multiplier. Collision Scale Multiplier scales for each axis the internal object used for collision for a given instance.

 

Note

If the collision detection computation is getting too slow (likely due to the number of instances), it is possible to abort the computation by using the progress view and aborting the current progress bar. In that case, the Collision Mode gets interrupted and set automatically to Off.

Collision Detection Order

By default, Collision Detection Order is set to Random. This means that the scatterer chooses randomly an instance and then performs collision detection with instances that are already in place (understand here instances that didn't collide with existing instances). This mode has a drawback as it tends to result into distributions displaying more small objects than big ones. To avoid this kind of distribution, we provide an alternative mode: Use Geometry List. While in this mode, the scatterer will favor picking instances matching the order as defined in the Geometries list. This way the more important instances should be placed first and the lesser last.

 

Collision detection mode set to Random (default)

Collision detection mode set to Random (default)

Using Use Geometry List (defined in this order cylinder, box then sphere) we can now clearly see more cylinders.

Using Use Geometry List (defined in this order cylinder, box then sphere) we can now clearly see more cylinders.

Custom Collision Object

By default, Collision Detection is performed using the bounding box of the scene object set in the Geometries list. In same cases it's better to use an alternate scene object instead. For example this can be very useful to avoid popping when geometries are animated or to provide a better bounding volume approximation for geometries such as trees.

 

When collision is enabled because of the tree's bbox grass can't be scattered around the trunk

When collision is enabled because of the tree's bbox grass can't be scattered around the trunk

 

In these cases, it is more favorable to perform the collision detection on the leaves instead of the whole tree which can results in a too large bounding box. In that case, the user can provide a bounding box surrounding branches and leaves so that there can be some grass blade or rock on the ground under the tree's leaves and branches.

 

The large bounding box of the tree prevents smaller geometries scattered close to its trunk

The large bounding box of the tree prevents smaller geometries scattered close to its trunk

Proving an alternate bounding box surrounding the trunk allows small items to be scattered around the tree

Proving an alternate bounding box surrounding the trunk allows small items to be scattered around the tree

 

To set an alternative bounding geometry, just set the attribute Collision Object to the desired scene object in the Geometries list of the scatterer.

 

With the alternate collision detection the distribution is way more natural

With the alternate collision detection the distribution is way more natural

 

Per-instance Time Variance

It is possible to drive the evaluation time of each instance of the scatterer. This simple yet very powerful feature allows you to easily create simple animated crowd or simulate gust of winds in a forest for example. Using Scatter Time Offset attribute, you can offset the animation of instances while Scatter Time Offset Variance adds a positive or negative random offset to the instance evaluation time. The offset applied to the instance evaluation time is bound to the value of Scatter Time Offset Variance. For example, if you set a Scatter Time Offset Variance of 0.5 the offset of time of each instance will be a random value between [-0.5, 0.5].

 

Scatterer scattering a single animated frog

Scatterer scattering a single animated frog

Scatter Time Offset, Variance applied to the scatterer.

Scatter Time Offset, Variance applied to the scatterer.

 

Please be aware that changing the time of each instance to a unique one can lead to both massive memory usage and slow downs. Indeed, each time an instance is different, specific animation data (+velocity data) is pulled from the asset and geometric de-duplication can't be as efficient as when dealing with static assets or assets sharing the same animation. To resolve this issue, we introduced Scatter Time Variance Samples which limits the number geometry samples used by the scatterer. The way this works is pretty simple as it defined the number of sample on the time interval defined by Scatter Time Offset and Scatter Time Offset Variance.

Important

When Scatter Time Offset is bound to a texture then it is up to you to use a quantize node to reduce the number of time samples. In that case both Scatter Time Offset Variance and Scatter Time Variance Samples are simply ignored because instance evaluation time is completely driven by the texture bound to Scatter Time Offset .

Limitations

Per instance Time Variance doesn't work on:

  • Scatterers with animated support geometry
  • Animated geometric sequences (geometry driven by variables or sequence-based such as Open VDB)
  • Geometry driven by a Clarisse deformer (animated displacement deformer)
  • Time is not propagated to the materials/textures during rendering

Use Support Normals

When you connect a point cloud as Geometry Support, the scatterer can retrieve the normals of the underlying geometry on which the particles have been generated. Using Use Support Normal attribute you can align instances on the normals of the underlying geometry.

 

Use Support Normals set to 0%

Use Support Normals set to 0%

Use Support Normals set to 100%

Use Support Normals set to 100%

Instance Transformation Variance

It is possible to control the transformation of the instances generated by the scatterer. There are two set of attributes to consider:

  • transformation attributes which control the transformation of the instances using a specified value
  • transformation variance attributes which add variation to each instance using a specified range.

Variance Seed

The Variance Seed attribute controls the seed of the random generator used by the scatterer when generating transformation variance on each instance.

 

Variance Seed set to 0

Variance Seed set to 0

Variance Seed set to 55. Note how the transformation of the intances has changed.

Variance Seed set to 55. Note how the transformation of the intances has changed.

Scatter Position

Instances are placed where Scatter Position allows you to offset the position of scattered geometries. Each scattered geometry will be offset by the specified Scatter Position value. Scatter Position Variance adds randomness to the offset so that each scattered instance has a random offset comprised between 0 and the specified value. Both attributes can be textured. In that case, the final value is multiplied by the texture value evaluated at the sample point (R for X, G for Y, B for Z).

 

No Scatter Position

No Scatter Position

Scatter Position Variance set to (1, 1, 1)

Scatter Position Variance set to (1, 1, 1)

Scatter Rotation

Scatter Rotation allows you to rotate scattered geometries. Each scattered geometry will be rotated by the specified Scatter Rotation value. Scatter Rotation Variance adds randomness to the rotation on each scattered instance. Each instance will have a random rotation comprised between 0 and the specified value. Scatter Rotation Variance Step constraints the rotation to be a multiple of the specified value. For example, you would set 90 degrees if you were to scatter buildings. All those attributes can be textured. In that case, the final value is multiplied by the texture value evaluated at the sample point (R for X, G for Y, B for Z).

 

Rotation Variance of (0, 360, 0)

Rotation Variance of (0, 360, 0)

Now adding a Rotation Variance Set of (0, 90, 0)

Now adding a Rotation Variance Set of (0, 90, 0)

Scatter Scale

Scatter Scale allows you to control the scale of scattered geometries. Each scattered geometry will be scaled by the specified Scatter Scale value. Scatter Scale Variance adds randomness to the scale on each scattered instance. Each instance will have a random scale comprised between 0 and the specified value. All those attributes can be textured. In that case, the final value is multiplied by the texture value evaluated at the sample point (R for X, G for Y, B for Z).

Uniform Scale Variance

By enabling this attribute, only random value is generated for all axis. If the variance is value is identical in all 3 axis the scattered scene objects will conserve original proportions.

 

Uniform Scale Variance

Uniform Scale Variance

Uniform Scale Variance set to Off

Uniform Scale Variance set to Off

Scatter Normal

Scatter Normal allows to reorient the axes-frame in which scattered objects transformations are applied. Scatter Normal attribute can be textured and in that case, the final value is multiplied by the texture value evaluated at the sample point (R for X, G for Y, B for Z).

 

Scatter Normal to default value (0,1,0)

Scatter Normal to default value (0,1,0)

Scatter Normal set to (0,0,1)

Scatter Normal set to (0,0,1)

Baking Scatterers

It is possible to bake scatterer using a script that can be found in the Scattering tab of Clarisse script shelf. Baking a scatterer can be very useful to optimize the generation of the scatterer that can get long specially when collision detection is enabled or simply to creatively edit the scatterer using the Particle and Property Paint tools.

 

Bake Scatterer script highlighted in red

Bake Scatterer script highlighted in red

 

Tip

If you are familiar with scripting, we highly recommend you to have a look at the script source. To access to the script source you just have to drag and drop the shelf icon directly to the Script Editor.

 

To bake a scatterer simply select a scatterer and click on the Bake Scatterer shelf icon. When launched bakes the input scatterer information into an editable particle container embedded in the resulting scatterer. This particle container defines all the needed properties to recreate a new scatterer identical to its source. However, don't be surprised if you don't find the usual scatterer attributes in the resulting scatterer as most of the scatterer related attributes are hidden on purpose. Indeed the idea is to hide the setup complexity to the user. Please note that the resulting scatterer is still directly linked to the original scene object used to the source scatterer.

 

Once the baked scatterer has been created you can select its particle container (using the Browser for example) to edit its property or add/delete particles to add/remove instances. The script generates 3 properties:

  • baked_ids which defines which scene object should be attached to each particle
  • baked_rotation which defines the actual rotation (Euler angle in degrees) of each instance
  • baked_scaling which defines the scale value of each instances.

 

These properties are bound to the scatterer using 3 hidden embedded extract property node to Scatter Input, Scatter Rotation, Scatter Scale driving the scatterer instances.

 

Baked scatterer from and input scatterer with collision detection

Baked scatterer from and input scatterer with collision detection

Removing instances by selecting the internal particle cloud and using the Paint Particle Tool

Removing instances by selecting the internal particle cloud and using the Paint Particle Tool

 

Note

When you add new particles to the particle container remember to also paint the scale property. By default the baked_scaling property for the new particles will be set to 0 0 0. This means that all new painted instances will be invisible.

 

New particles using the Paint Particle. The scale must be set to 1 1 1 with the Property Paint otherwise new instances are invisible

New particles using the Paint Particle. The scale must be set to 1 1 1 with the Property Paint otherwise new instances are invisible

 

Limitations

Animated support geometry (point cloud) is not baked. Only the current frame is baked. Point cloud properties are not transferred to the baked particle container which can cause issues if Extract Property textures are used in the materials assigned to the scatterer.

Scattered Item Visibility

By default, a scatterer overrides the visibility of the items it scatters. For example, if an item in a scatterer has Unseen by Camera set to Yes this it will still be visible to the camera in the scatterer. You can change this behavior by changing the attribute Sub Items Rendering Mode from Override to Use Sub Items Settings. Here is the list of attributes Sub Items Rendering Mode affects:

Attributes

Unseen By Renderer

Unseen By Camera

Unseen By Rays

Unseen By Reflections

Unseen By Refractions

Unseen By Gi

Unseen By Sss

Cast Shadows

Receive Shadows

Lights

Matte Object

Matte Color

Matte Alpha

 

Isotropix

Copyright (C) 2009-2021 Isotropix. All rights reserved.