{{description>Generate and organize Spot sets along a Path or Volume with the Volume Spots module. Group objects, apply randomization, and define start and end placements.}}
====== Volume Spots ======
This component is used in example scene(s) such as:
22_CGClonePrefabs, 28_AsteroidBelt, 29_CGDeformMesh_BarbedWire.
Generates a collection of [[..:datatypes#Spots|Spots]] by distributing [[..:datatypes#Bounds|Bounds]] along a [[..:datatypes#Path|Path]] or [[..:datatypes#Volume|Volume]]. Each spot defines where one item from the [[..:datatypes#Bounds|Bounds]] array should be placed. Feed the output into [[.:createmesh|Create Mesh]] or [[.:creategameobject|Create GameObject]] to instantiate the actual objects.
Items are organized into groups. A group is a set of items that are placed together as a unit. For example, a fence section made of three meshes: a start post, middle panels, and an end post. Groups can repeat along the path, either in order or randomly (with optional weighting).
===== Slots =====
==== Inputs ====
^ Name ^ Type ^ Description ^
| Path or Volume | [[..:datatypes#Path|Path]] or [[..:datatypes#Volume|Volume]] | The curve along which spots are distributed |
| Bounds[] | Array of [[..:datatypes#Bounds|Bounds]] | The bounding boxes of the objects to place |
==== Outputs ====
^ Name ^ Type ^ Description ^
| Spots | [[..:datatypes#Spots|Spots]] | The generated placement spots |
===== Settings =====
==== General ====
Controls placement range and cross-volume positioning.
=== Volume Path ===
== Range ==
The portion of the path or volume along which spots are placed.
=== Volume Cross ===
== Use Volume's Surface ==
When the input is a [[..:datatypes#Volume|Volume]], choose whether to place spots on the path center or on the volume's surface.
== Cross Base ==
Shifts the cross-section origin by a constant value. On a volume, the initial base is defined in [[.:shapeextrusion#shift|Shape Extrusion → Shift]].
== Cross Base Variation ==
Shifts the cross-section origin by a value that varies along the path's length. The curve's X axis is [[documentation:glossary#relative_distance|Relative Distance]] (0 = start of range, 1 = end). On a volume, the initial base is defined in [[.:shapeextrusion#shift|Shape Extrusion → Shift]].
=== Advanced ===
== Simulate ==
Run a dry run to preview placement counts without creating spots.
==== Groups ====
Manage the list of groups. Add, remove, rename, and reorder groups here.
=== Repeating Groups ===
The range of groups that will repeat along the volume. Groups outside this range are placed only once (as fixed start/end groups).
Non repeating groups are highlighted with a blue background in the Inspector.
=== Repeating Order ===
How repeating groups are selected:
* **In Order** - groups cycle in sequence
* **Random** - groups are picked randomly, weighted by their individual weight values
=== Fits The End ===
//(Only when non-repeating end groups exist)//
When enabled, the last non-repeating group is placed exactly at the end of the range. When disabled, it is placed at the first available spot, which may leave a gap at the end.
==== Group Settings ====
Settings for each individual group.
=== Randomize Items ===
When enabled, items within the group are selected randomly.
=== Items # ===
//(Requires Randomize Items)//
The indices of the items available for random selection.
=== Keep Together ===
When enabled, the entire group is skipped if there is not enough space to fit all its items.
=== Space Before ===
Extra space to add before the group.
=== Space After ===
Extra space to add after the group.
=== Cross Base ===
Shifts the cross-section origin for this group specifically.
=== Ignore Module Cross Base ===
When enabled, this group ignores the Cross Base settings from the General tab.
=== Translation ===
== Relative Translation ==
When enabled, translation is applied in world space rather than the path's local space.
== Translation X / Y / Z ==
Position offset applied to each spot in this group.
=== Rotation ===
== Rotation Mode ==
How spot rotation axes are defined relative to the path:
* **Full** - uses direction and orientation
* **Direction** - uses direction only
* **Horizontal** - uses direction projected onto the XZ plane
* **Independent** - ignores path data entirely
== Rotation X / Y / Z ==
Rotation offset applied to each spot in this group.
=== Scale ===
== Uniform Scaling ==
When enabled, scale is applied equally on all axes.
== Scale X / Y / Z ==
Scale applied to each spot in this group.