Utilities / Fields
Attribute Run
Group mask increments whenever the attribute or the Group ID changes
Fill in gaps in a set of continuous boolean True values, up to a specific size
Inputs
| Name | Type | Description |
|---|---|---|
| Name | String |
The Named Attribute to read from the geometry before applying the Integer Run node |
| Group ID | Int |
The Group ID to use for the Integer Run node |
Outputs
| Name | Type | Description |
|---|---|---|
| Is Different | Bool |
The current point’s Named Attribute value is different from the previous |
| Group ID | Int |
The new Group ID, increasing whenever the attribute or the Group ID values change |
API Reference: nodes.geometry.AttributeRun
Boolean Any
True for a whole Group ID if any value is True
Inputs
| Name | Type | Description |
|---|---|---|
| Boolean | Bool |
|
| Group ID | Int |
Outputs
| Name | Type | Description |
|---|---|---|
| Boolean | Bool |
API Reference: nodes.geometry.BooleanAny
Boolean First
Only the first True in each Group ID remains True, all others become False
For each Group ID, every value becomes False except the first True value
Inputs
| Name | Type | Description |
|---|---|---|
| Boolean | Bool |
The Boolean field to test |
| Group ID | Int |
Each Group ID to find the first True element for |
Outputs
| Name | Type | Description |
|---|---|---|
| Is First | Bool |
True for the first true element in each Group ID |
API Reference: nodes.geometry.BooleanFirst
Boolean Last
Index of last time the Boolean is true for each Group ID (not including the current point).
Accumulating on the Point domain for each Group ID, returns the Index where the Boolean was last previously True, excluding the currently evaluating point
Inputs
| Name | Type | Description |
|---|---|---|
| Boolean | Bool |
Value to test for True when tracking Index locations |
Outputs
| Name | Type | Description |
|---|---|---|
| Index of Last | Int |
Accumulating in the point domain, this is the index where the Boolean was last True. For a point where the Boolean is True, the index will be of the previous time this was true, but the next point will then reference this point |
API Reference: nodes.geometry.BooleanLast
Boolean Run Fill
Moving down the points, fill in False values that are equal to or less than the Fill Size
Fill in gaps in a set of continuous boolean True values, up to a specific size
Inputs
| Name | Type | Description |
|---|---|---|
| Boolean | Bool |
The Boolean field to potentially fill gaps of False with |
| Fill Size | Int |
A run of False values equal to or less than this size will become True |
Outputs
| Name | Type | Description |
|---|---|---|
| Boolean | Bool |
The Boolean array with gaps potentially filled |
API Reference: nodes.geometry.BooleanRunFill
Boolean Run Trim
Mask a run of boolean values. Potentially trim the start or ending values and specifying a minimum length under which they are considered false
Inputs
| Name | Type | Description |
|---|---|---|
| Boolean | Bool |
The Boolean field to check for continuous runs of True values |
| Start | Int |
The first n values of a run of True values are made to be False |
| End | Int |
Ther last n values of a run of True values become False |
| Size | Int |
A run of True values becomes False if shorter than this minimum length |
Outputs
| Name | Type | Description |
|---|---|---|
| Boolean | Bool |
The Boolean field that has been trimmed |
API Reference: nodes.geometry.BooleanRunTrim
Fallback Color
Use the Color attribute specified by name. If the attribute doesn’t exist, use the Fallback value instead
Inputs
| Name | Type | Description |
|---|---|---|
| Name | String |
Name of the attribute to attempt to read from the geometry |
| Fallback | Color |
Value to use instead if the named attribute doesn’t exist on the geometry |
Outputs
| Name | Type | Description |
|---|---|---|
| Color | Color |
The named attribute read from the geometry if it exists, or the fallback value if it doesn’t |
API Reference: nodes.geometry.FallbackColor
Field Remap
Maps the range of values of the attribute on from the target atoms, to the range from min to max
Sample a field from the mesh and remap from the minimum to the maximum to the specified values
Inputs
| Name | Type | Description |
|---|---|---|
| Field | Float |
The field to summarise and remap |
| Value Min | Float |
The new minimum value of the field |
| Value Max | Float |
The new maximum value of the field |
| Group ID | Int |
An index used to group values together for multiple separate operations |
Outputs
| Name | Type | Description |
|---|---|---|
| Value | Float |
The remapped values between the new min and max |
API Reference: nodes.geometry.FieldRemap
Geometry Field Remap
Maps the range of values of the attribute on from the target atoms, to the range from min to max
Inputs
| Name | Type | Description |
|---|---|---|
| Geometry | Geometry |
Geometry to get the statistics from |
| Field | Float |
The field to summarise and remap |
| Value Min | Float |
The new minimum value of the field |
| Value Max | Float |
The new maximum value of the field |
Outputs
| Name | Type | Description |
|---|---|---|
| Value | Float |
The remapped values between the new min and max |
API Reference: nodes.geometry.GeometryFieldRemap
Group Info
Indices of points within each Group ID
Inputs
| Name | Type | Description |
|---|---|---|
| Group ID | Int |
Outputs
| Name | Type | Description |
|---|---|---|
| Size | Int |
|
| Index in Group | Int |
|
| Index of First | Int |
|
| Index of Last | Int |
API Reference: nodes.geometry.GroupInfo
Group Parameter
Inputs
| Name | Type | Description |
|---|---|---|
| Group ID | Int |
The identifier specifying groupings of the points |
Outputs
| Name | Type | Description |
|---|---|---|
| Is First | Bool |
If the point is the first point in the Group ID |
| Is Last | Bool |
If the point is the last item in the Group ID |
| Group Size | Int |
|
| Relative Index | Int |
The relative index of the point within the Group ID. Starts at 0 for the first point counting up to Group Size - 1 |
API Reference: nodes.geometry.GroupParameter
Group Pick
Get the item of the True in each Group ID, but only if there is a single True in each group
For each group, return the index of the point for which the Selection is true. Only valid if there is a single true in the group. If not lvalid, returns -1
Inputs
| Name | Type | Description |
|---|---|---|
| Pick | Bool |
Selection for the point to pick for the Group ID. Will only be valid for a single Pick for each Group ID |
| Group ID | Int |
Field definining the Group ID to pick from for the points |
Outputs
| Name | Type | Description |
|---|---|---|
| Is Valid | Bool |
Valid for the point only if there is 1 single True for the Pick field in the point’s group in the Group ID |
| Index | Int |
Index of picked item. Returns -1 if not a valid pick |
API Reference: nodes.geometry.GroupPick
Group Pick First
Get the Index of the first True item for each Group ID
Similar to Group Pick, but will always return Index of first true element, even if there are multiple true values. If nothing is true then will return -1
Inputs
| Name | Type | Description |
|---|---|---|
| Pick | Bool |
Index of the first True item in this field will be returned |
| Group ID | Int |
The first True item for each Group ID will be returned |
Outputs
| Name | Type | Description |
|---|---|---|
| Is Valid | Bool |
Valid if as least 1 True for the Group ID |
| Index | Int |
Index of first picked item, returns -1 if nothing picked |
API Reference: nodes.geometry.GroupPickFirst
Group Pick Index
Inputs
| Name | Type | Description |
|---|---|---|
| Relative Index | Int |
|
| Group ID | Int |
Outputs
| Name | Type | Description |
|---|---|---|
| Is Valid | Bool |
If the requested Index in Group is valid for this Group ID |
| Index | Int |
The Index of the requested point, within the overall geometry |
API Reference: nodes.geometry.GroupPickIndex
Group Pick Vector
For each group, return the Position of the point at which the selection is true. If there is more than one true for the group the pick is not valid and (0, 0, 0) is returned
Inputs
| Name | Type | Description |
|---|---|---|
| Pick | Bool |
Selection for the point to pick for the Group ID. Will only be valid for a single Pick for each Group ID |
| Group ID | Int |
Field definining the Group ID to pick from for the points |
| Position | Vector |
Vector field to pick vlaue for, defaults to Position |
Outputs
| Name | Type | Description |
|---|---|---|
| Is Valid | Bool |
Whether the pick for the point’s Group ID is valid |
| Index | Int |
Picked Index for the Group, -1 if not valid |
| Vector | Vector |
Picked vector for the group, (0, 0, 0) if not valid |
API Reference: nodes.geometry.GroupPickVector
Index Mix Color
Sample and interpolate the Color value between the floor and ceiling of the given Index, by the fractional amount
Inputs
| Name | Type | Description |
|---|---|---|
| Color | Color |
The field to interpolate based on the input Index |
| Index | Float |
The floor and ceiling of this Index value is taken and used for sampling, the fraction of this value is then used to mix between the sampled values |
Outputs
| Name | Type | Description |
|---|---|---|
| Color | Color |
The mixed value of the field, first evaluating the field at the From and To Indices then mixing between them based on the fraction of the input Index |
| From | Int |
The mixed value of the field, first evaluating the field at the From and To Indices then mixing between them based on the fraction of the input Index |
| To | Int |
The mixed value of the field, first evaluating the field at the From and To Indices then mixing between them based on the fraction of the input Index |
API Reference: nodes.geometry.IndexMixColor
Integer Run
A unique value for each grouping of a value. Accumulating along the field, the output Group Mask increments by 1 whenever the value or Group ID changes
Group mask output increments whenever the input value or the Group ID changes
Inputs
| Name | Type | Description |
|---|---|---|
| Value | Int |
The field to check for changes in value |
| Group ID | Int |
Does not restart counting for each Group ID, but does increment by 1 when the Group ID changes |
Outputs
| Name | Type | Description |
|---|---|---|
| Is Different | Bool |
The current value is different from the previous |
| Group ID | Int |
The new Group ID, which increases by 1 whenever the Value or Group ID values change |
API Reference: nodes.geometry.IntegerRun
Normalize Field
Inputs
| Name | Type | Description |
|---|---|---|
| Field | Float |
|
| Group ID | Int |
An index used to group values together for multiple separate operations |
Outputs
| Name | Type | Description |
|---|---|---|
| Result | Float |
API Reference: nodes.geometry.NormalizeField
Offset Boolean
Evaluate a Boolean at an index that is offset by the specified amount
Inputs
| Name | Type | Description |
|---|---|---|
| Boolean | Bool |
The field to evaluate at the given Index + Offset on the point domain |
| Index | Int |
The Index at which to evaluate this offset from |
| Offset | Int |
The offset to apply to the Index before evaluating the input field |
Outputs
| Name | Type | Description |
|---|---|---|
| Boolean | Bool |
The field evaluated at the offset Index value |
API Reference: nodes.geometry.OffsetBoolean
Offset Color
Read the Color attribute at an index that is offset by the specified amount
Inputs
| Name | Type | Description |
|---|---|---|
| Color | Color |
|
| Index | Int |
The Index at which to evaluate this offset from |
| Offset | Int |
The offset to apply to the Index before evaluating the input field |
Outputs
| Name | Type | Description |
|---|---|---|
| Color | Color |
The field evaluated at the offset Index value |
API Reference: nodes.geometry.OffsetColor
Offset Color Attribute
Inputs
| Name | Type | Description |
|---|---|---|
| Index | Int |
The Index at which to evaluate this offset from |
| Offset | Int |
The offset to apply to the Index before evaluating the input field |
Outputs
| Name | Type | Description |
|---|---|---|
| Color | Color |
The field evaluated at the offset Index value |
API Reference: nodes.geometry.OffsetColorAttribute
Offset Float
Evaluate a Float value at an index that is offset by the specified amount
Inputs
| Name | Type | Description |
|---|---|---|
| Value | Float |
The field to evaluate at the given Index + Offset on the point domain |
| Index | Int |
The Index at which to evaluate this offset from |
| Offset | Int |
The offset to apply to the Index before evaluating the input field |
Outputs
| Name | Type | Description |
|---|---|---|
| Value | Float |
The field evaluated at the offset Index value |
API Reference: nodes.geometry.OffsetFloat
Offset Index
Add an integer offset to the point’s Index
Inputs
| Name | Type | Description |
|---|---|---|
| Index | Int |
The Index at which to evaluate this offset from |
| Offset | Int |
The Offset to apply to the Index of the point |
Outputs
| Name | Type | Description |
|---|---|---|
| Index | Int |
The Index + Offset |
API Reference: nodes.geometry.OffsetIndex
Offset Integer
Evaluate an Integer at an index that is offset by the specified amount
Inputs
| Name | Type | Description |
|---|---|---|
| Integer | Int |
The field to evaluate at the given Index + Offset on the point domain |
| Index | Int |
The Index at which to evaluate this offset from |
| Offset | Int |
The offset to apply to the Index before evaluating the input field |
Outputs
| Name | Type | Description |
|---|---|---|
| Integer | Int |
The field evaluated at the offset Index value |
API Reference: nodes.geometry.OffsetInteger
Offset Matrix
Evaluate a 4X4 Matrix at an index that is offset by the specified amount
Inputs
| Name | Type | Description |
|---|---|---|
| Matrix | Matrix |
The field to evaluate at the given Index + Offset on the point domain |
| Index | Int |
The Index at which to evaluate this offset from |
| Offset | Int |
The offset to apply to the Index before evaluating the input field |
Outputs
| Name | Type | Description |
|---|---|---|
| Matrix | Matrix |
The field evaluated at the offset Index value |
API Reference: nodes.geometry.OffsetMatrix
Offset Rotation
Evaluate a Rotation at an index that is offset by the specified amount
Inputs
| Name | Type | Description |
|---|---|---|
| Rotation | Rotation |
The field to evaluate at the given Index + Offset on the point domain |
| Index | Int |
The Index at which to evaluate this offset from |
| Offset | Int |
The offset to apply to the Index before evaluating the input field |
Outputs
| Name | Type | Description |
|---|---|---|
| Rotation | Rotation |
The field evaluated at the offset Index value |
API Reference: nodes.geometry.OffsetRotation
Offset Vector
Evaluate a Vector at an index that is offset by the specified amount
Inputs
| Name | Type | Description |
|---|---|---|
| Vector | Vector |
The field to evaluate at the given Index + Offset on the point domain |
| Index | Int |
The Index at which to evaluate this offset from |
| Offset | Int |
The offset to apply to the Index before evaluating the input field |
Outputs
| Name | Type | Description |
|---|---|---|
| Value | Vector |
The field evaluated at the offset Index value |
API Reference: nodes.geometry.OffsetVector
Relative Index
Get information about the points in a Group ID such as size and the start and end Indices
Based on the Group ID input, return the size of the group and the indices of the first and last items of the group
Inputs
| Name | Type | Description |
|---|---|---|
| Group ID | Int |
Define the groups to get information about |
Outputs
| Name | Type | Description |
|---|---|---|
| Group Size | Int |
The number of points in each Group ID |
| Relative Index | Int |
The relative index of each point within each Group ID, starting from 0 |
| First Index | Int |
The Index of the first point in each Group ID |
| Last Index | Int |
The Index of the last point in each Group ID |
API Reference: nodes.geometry.RelativeIndex
Sample Mixed Color
Sample the Color attribute, mixed between the floor and ceiling of the given Index
Inputs
| Name | Type | Description |
|---|---|---|
| Geometry | Geometry |
The geometry to sample the values from |
| Color | Color |
The field to mix and evaluate on the sample geometry |
| Index | Float |
The index to sample the value from. The fractional component of the index is used to mix between values using Index Mix ... nodes |
Outputs
| Name | Type | Description |
|---|---|---|
| Color | Color |
The evaluated and mixed field, sampled from the sample geometry at the given Index |
API Reference: nodes.geometry.SampleMixedColor
Starfile Instances
Instance an object onto the given starfile points
Inputs
| Name | Type | Description |
|---|---|---|
| Points | Geometry |
|
| Point Selection | Menu |
Select points to be instanced base don their image_id or a boolean selection field. |
| Selection | Bool |
Becomes the output value if it is chosen by the menu input |
| Image | Int |
The ID of the image that should be shown |
| Menu | Menu |
|
| Instance | Object |
The object that should be placed at each instance |
| Material | Material |
Material to apply to the resulting geometry |
Outputs
| Name | Type | Description |
|---|---|---|
| Instances | Geometry |
API Reference: nodes.geometry.StarfileInstances
Sub Group Info
Indices of points within each Sub Group ID, within each Group ID
Inputs
| Name | Type | Description |
|---|---|---|
| Sub Group ID | Int |
|
| Group ID | Int |
Outputs
| Name | Type | Description |
|---|---|---|
| Size | Int |
Size of each comptued Group ID |
| Group ID | Int |
A unique Group ID that increases whenever Sub Group ID or Group ID change |
| Index of First | Int |
The absolute Index of the first point in each computed Group ID |
| Index of Last | Int |
The absolute Index of the last point in each computed Group ID |
| Index in Group ID | Int |
Index within each computed Group ID, starting at 0 |
| Sub Group ID | Int |
|
| Sub Group Total | Int |
API Reference: nodes.geometry.SubGroupInfo