Share

scatter_points

Generates a points object whose points are distributed across a geometry. For example, this is useful for instancing things like plants and rocks on a landscape. In addition, this compound outputs the corresponding point positions as well as the geo locations in case you want to sample other properties on the geometry.

Inputs

geometry

The geometry on which to generate points. Mesh, strands, and volumes are supported.

density_weights

Weights per point of the input geometry to control the distribution of generated points.

  • A weight of 0 or less means that no points are generated nearby.
  • A weight in the range 0—1 means that fewer than the normal number of points are generated nearby.
  • A weight of 1 or more means that the normal number of points are generated nearby.

If nothing is connected, the default weight is 1 for all points. This is an interpreted auto port that accepts the following types:

  • A single float uses the same weight for all points.
  • An array<float> uses the corresponding array element as the weight for each point. The array may be resized to match the number of points, if necessary.
  • An array<bool> is interpreted as values of 0 (false) or 1 (true) per point.
  • A string uses the values of the property with that name as the weights. The property must exist on the geometry and consist of a float value per point.
  • A ScalarField uses the field's value at each point's position as the weight.
  • An array<long> specifies the indices of the points that have a weight of 1. All other points are considered to have a weight of 0.

Scatter Settings

scatter_mode

The mode to use for scattering:

  • Random gives a uniform pseudo-random distribution. This is the closest to truly random, but exhibits clumps and bare patches that may be unwanted for some purposes.
  • BlueNoise gives a "blue noise" distribution. This is also referred to as a "quasi-random" or "low discrepancy" distribution. It provides a more even distribution, with points more equally spaced.
  • BlueNoiseMaximal gives a similar distribution to BlueNoise. This gives the most evenly-spaced distribution, but is the slowest to compute.

amount_mode

Controls the interpretation of the amount parameter:

  • Radius generates locations that are spaced at least 2 × amount units apart. If spheres with this radius are placed on the resulting points, none of the spheres would intersect. Points may be further apart, but never closer than twice this radius.
  • number generates the amount number of locations.
  • density generates amount locations per unit of surface area, strand length, or volume.

amount

Controls the number of points generated (may be affected by amount_mode).

seed

The seed for the random number generator.

max_number

The maximum number of points to generate. This can be useful to avoid accidentally generating extremely large numbers of locations while adjusting settings. If this is negative, it is ignored.

Culling

density_weights_mode

Controls the interpretation of the density_weights parameter:

  • Random randomly deletes points.
  • DistanceBased deletes points that are too close to other points.

cull_overlapping

Removes points that are closer than 2 x overlapping_radius units to other points.

overlapping_radius

Controls the distance between points cull_overlapping is enabled.

Properties

transfer_properties

A space-separated list of geo properties from the input geometry that are sampled and transferred to the output points. Only float, float2, float3, and float4 types are supported.

set_emit_location

Sets a property called point_emit_location on the output points.

Orientation

set_orientations_from_geometry

Create orientations based on the tangent and normals of the input geometry.

normal_mode

The normal to use as the Y axis: point_normal or face_vertex_normal.

tangent_mode

How the surface tangent is determined:

  • Connectivity computes the tangent based on the edge flow of the underlying mesh topology.
  • UV computes the tangent based on the mesh's point_UV0 property.

prioritize_normal

Controls what happens when the normals and tangents are not orthogonal. When prioritize_normal is true, the Y axis of the resulting orientation is exactly aligned with the normal. When it is false, priority is given to aligning the X and Z axes with the tangent plane.

normal_override, tangent_override

An interpreted auto port that lets you supply values to use for the normal and tangent respectively, instead of basing them on the underlying geometry. You can do any of the following:

  • Connect a single float3 to use the same value for all points.
  • Connect an array<float3> to use the corresponding value in the array for each point.
  • Connect a VectorField to use the value of the field at each point's position.

Outputs

points

A points object of the resulting points scattered on geometry.

positions

The positions of the resulting points.

geo_locations

The locations on geometry of the resulting points. This can be used as input for sample_property to sample point_normal or other properties on the input geometry.

Was this information helpful?