meta data for this page
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
branch_generator [2022/04/12 11:21] – croft | branch_generator [2023/04/24 19:20] (current) – steph.jorgensen | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Branch | + | ====== Branch |
{{: | {{: | ||
- | The Branch generator creates 3D branch geometry. | + | The Branch generator creates 3D branch geometry. It’s used for trunks, boughs, branches, twigs, roots, etc. The following sections detail each of the Branch generator' |
===== Generation ===== | ===== Generation ===== | ||
- | The Generation properties are described in full detail under [[generation_properties|Generation | + | Refer to [[generation_properties|Generation |
===== Forces ===== | ===== Forces ===== | ||
Line 11: | Line 11: | ||
==== Forces ==== | ==== Forces ==== | ||
- | Each [[kcforces|force]] in the scene has an entry here. Check the box next to the name to enable the force for this generator. | + | Each force in the scene has an entry here. Check the box next to the name to enable the force for this generator. The value set here is multiplied by the strength of the force before being applied to the branch. The profile curve controls how much force is applied along the branch. |
- | >**Note:** Click on the force name to edit the force' | + | **Note:** Click on the force name to edit the force' |
- | == Allow == | + | === Allow === |
When enabled, all forces that are checked will act on the generator. | When enabled, all forces that are checked will act on the generator. | ||
==== Align ==== | ==== Align ==== | ||
- | In addition to influencing the branch' | + | In addition to influencing the branch' |
- | >**Note:** Only forces enabled on this generator will influence alignment. | + | **Note:** Only forces enabled on this generator will influence alignment. |
- | == Style == | + | === Style === |
- | Choose the style of the alignment operations | + | Choose the style of the alignment operations: |
- | ^None | No alignment will take place. | | + | ^ **Property** ^ **Description**^ |
- | ^Individual | Each node is aligned without regard for the behavior of any of its siblings. | | + | | **None** | No alignment will take place. | |
- | ^Group | A single alignment is computed for all siblings. | | + | | **Individual** | Each node is aligned without regard for the behavior of any of its siblings. | |
+ | | **Group** | A single alignment is computed for all siblings. | | ||
- | == Amount == | + | === Amount |
- | The alignment strength of each enable | + | The alignment strength of each enabled |
- | + | ||
- | ===== Geometry Force Crawling ===== | + | |
- | The properties in this group control the behavior of branches when they collide with a geometry force that uses the " | + | |
- | + | ||
- | == Max iterations == | + | |
- | When a mesh collision is detected, this property determines how many attempts are made to continue on without going through the mesh. More iterations mean a better chance of finding a route at the expense of slower computation times. | + | |
- | + | ||
- | == Max bend angle == | + | |
- | Specifies the maximum amount a spine can bend to try to get around the mesh. | + | |
- | + | ||
- | == Tolerance == | + | |
- | Use this property to set how tolerant of collisions the algorithm should be. Larger values mean more of the branch will intersect with the mesh. Adding some tolerance often helps the look of things like vines clumping together. | + | |
- | + | ||
- | == Look ahead == | + | |
- | The spine of the branch is computed/ | + | |
- | + | ||
- | == Hit backfaces == | + | |
- | When checked, collisions with back-facing polygons on meshes will count as a hit. When disabled, branches will pass through back-facing geometry. | + | |
- | + | ||
- | ==== Follow ==== | + | |
- | When a branch contacts a mesh it has the opportunity to follow along its surface. | + | |
- | + | ||
- | == Strength == | + | |
- | How much the branch will follow the surface. | + | |
- | + | ||
- | == Angle == | + | |
- | This property sets the clockwise angle from the default follow direction. | + | |
- | + | ||
- | > | + | |
- | + | ||
- | === Bounce === | + | |
- | The properties in this group provide a mechanism for making a branch that is following a surface occasionally leave it and return. | + | |
- | + | ||
- | == Chance == | + | |
- | Increase this property to increase how often a bounce may happen. | + | |
- | + | ||
- | == Strength == | + | |
- | This property controls how much the branch can bounce. | + | |
- | + | ||
- | == Recovery == | + | |
- | This property controls how fast a branch will recover from a bounce. | + | |
- | + | ||
- | == Variation == | + | |
- | Use this property to add variation to each bounce and recovery. | + | |
- | + | ||
- | === Noise === | + | |
- | Use noise to make the following behavior vary across the surface. | + | |
- | + | ||
- | == Amount == | + | |
- | This property controls how much the branch will vary from the following angle. | + | |
- | + | ||
- | == Turbulence == | + | |
- | This property controls how chaotic the deviation from the following angle will be. | + | |
- | + | ||
- | == Seed == | + | |
- | Change this value to randomize only the following noise behavior while leaving the rest of the branch unchanged. | + | |
- | + | ||
- | ==== Results ==== | + | |
- | When a branch is set to collide with a geometry force, it will either fail or succeed in that effort. | + | |
- | + | ||
- | == Failed == | + | |
- | Choose what to do when a branch is colliding with a geometry force but no solution can be found given the current settings from these options: | + | |
- | + | ||
- | ^Keep it | The branch remains. | + | |
- | ^Prune it | Chop the branch off at the point of the error. | + | |
- | ^Stop it | Stop the branch at the point of the error. | + | |
- | ^Destroy it | The branch is removed from the model. | | + | |
- | + | ||
- | == Succeeded == | + | |
- | Choose what to do with the branches that worked from these options: | + | |
- | + | ||
- | ^Keep all | The branches will be kept and included in the model. | | + | |
- | ^Keep hits | Only those branches that hit an enabled geometry force will be kept. | | + | |
- | ^Keep misses | Only those branches that missed all enabled geometry forces will be kept. | | + | |
- | ^Reject all mesh escapees | Only branches that remained fully contained within an enabled geometry force will be kept. | | + | |
- | + | ||
- | ===== Hand Drawn ===== | + | |
- | + | ||
- | ==Convert to hand drawn== | + | |
- | Pressing this button will convert a procedural branch into a hand-drawn branch. During the process, some properties, such as "Allow forces," | + | |
- | + | ||
- | > | + | |
===== Random Seeds ===== | ===== Random Seeds ===== | ||
- | Properties that have [[toolvariance_editor|variance]] are given random | + | Refer to [[random-seeds-properties|Random |
- | + | ||
- | == Randomize All == | + | |
- | Randomizes the value for all seeds used to compute this generator. | + | |
===== Segments ===== | ===== Segments ===== | ||
- | == Accuracy == | + | ==== Accuracy |
Sets the exact number of points in the high-resolution spine that is computed as the frame of the branch. | Sets the exact number of points in the high-resolution spine that is computed as the frame of the branch. | ||
- | >**Note:** Changing accuracy may drastically affect the shape of your spines. Set this value to the maximum desired fidelity early to avoid design losses. Higher values result in slower computes. | + | **Note:** Changing accuracy may drastically affect the shape of your spines. Set this value to the maximum desired fidelity early to avoid design losses. Higher values result in slower computes. |
- | == Influence == | + | ==== Influence |
- | This value scales | + | Scales |
+ | |||
+ | ====Scalar==== | ||
+ | Increase or decrease the number of polygons on the mesh. | ||
==== Length ==== | ==== Length ==== | ||
- | Sets the number of segments used along the length of the branch. | + | Sets the number of segments used along the length of the branch. The final number of segments is the sum of the **Absolute** and **+ Relative** values. |
- | == Style == | + | === Style === |
- | Choose how length segment distributions are computed | + | Choose how length segment distributions are computed. |
- | ^Default | Segment locations are computed very accurately | | + | ^ **Property** ^ **Description** ^ |
- | ^Legacy | Segment locations are computed in the manner of version 8 for backward compatibility | | + | | **Default** | Segment locations are computed very accurately. | |
+ | | **Legacy** | Segment locations are computed in the manner of version 8 for backward compatibility. | | ||
- | == Absolute == | + | === Absolute |
- | Sets the minimum number of length segments used. Each branch will have at least this many segments, regardless of length (use this sparingly or for specific uses like the trunk). | + | Sets the minimum number of length segments used. Each branch will have at least this many segments, regardless of length (use this sparingly or for specific uses like the trunk). |
- | == + Relative == | + | === + Relative |
- | The number of segments is computed based on the branch length and this value. | + | The number of segments is computed based on the branch length and this value. This number is added to the **Absolute** segments for the final number of length segments used. |
- | == Relative basis == | + | === Relative basis === |
- | Choose how relative segments | + | Choose how relative |
- | ^Length only | The length of the branch alone is the basis for how many segments are added for the "+ Relative" | + | ^ **Property** ^ **Description** ^ |
- | ^Length/Radius | + | | **Length only** | The length of the branch alone is the basis for how many segments are added for the **+ Relative** amount. | |
+ | | **Length/radius | ||
+ | |**Parent’s length segments**|The length of the parent is the basis for how many segments are added for the **+ Relative** amount. | | ||
- | == Weld Scalar | + | === Weld scalar === |
Adjusts the number of segments composing the fused part of welded branches. | Adjusts the number of segments composing the fused part of welded branches. | ||
- | == Optimization == | + | === Optimization |
- | Segments are removed adaptively | + | Adaptively removes segments |
==== Radial ==== | ==== Radial ==== | ||
- | Sets the number of segments composing the radial cross-section of branches. | + | Sets the number of segments composing the radial cross-section of branches. The final number of segments is the sum of the **Absolute** and **+ Relative** values. |
- | == Absolute == | + | === Absolute |
- | Sets the minimum number of radial segments used. Each branch will have at least this many segments, regardless of the radius (use this sparingly or for specific uses like the trunk). | + | Sets the minimum number of radial segments used. Each branch will have at least this many segments, regardless of the radius (use this sparingly or for specific uses like the trunk). |
- | == + Relative == | + | === + Relative |
- | The number of segments is computed based on the branch radius and this value. | + | The number of segments is computed based on the branch radius and this value. This number is added to the **Absolute** segments for the final number of radial segments used. |
- | ==== Resolution ==== | + | ===Relative basis=== |
- | The properties in this group scale the number of segments | + | Choose how **+ Relative** radial |
- | == Length == | + | ^ **Property** ^ **Description** ^ |
- | Scales the number | + | |**Radius**|The radius |
+ | |**Parent’s radial segments**|The radius of the parent is the basis for how many segments are added for the **+ Relative** amount. | | ||
- | == Radial == | ||
- | Scales the number of radial segments for each [[kcvfxresolution|Resolution]]. | ||
- | > | + | ===== Features ===== |
+ | Feature vertices | ||
- | ==== Features ==== | + | **Note:** The addition of any feature |
- | Feature | + | |
- | > | + | ==== Mesh ==== |
+ | These properties control whether and from which LODs the feature vertices | ||
- | === Mesh === | + | === Enabled |
- | These properties control whether and from which LODs the feature vertices are taken. | + | Adds feature vertices to the branch from the material' |
- | == Enabled | + | === Keep chance === |
- | Feature vertices from the material' | + | This property represents |
- | == Keep chance | + | === Vertex % === |
- | This property represents the probability that a feature mesh will be used each time a valid place to put it is encountered (1.0 = always use it, 0.0 = never use it). | + | Controls how many of each feature mesh's vertices are used. Use this property in conjunction with its parent curve to thin out feature vertices in areas where they have little impact to save on vertex and polygon counts. |
- | == Vertex % == | + | === LOD offset |
- | Use this property to control how many of each feature mesh's vertices are used. Use this property in conjunction with its parent curve to thin out feature vertices in areas where they have little impact to save on vertex and polygon counts. | + | Specifies |
- | + | ||
- | == LOD offset == | + | |
- | This property specifies | + | |
=== Stitching === | === Stitching === | ||
- | The properties in this group pad areas around small feature vertex clusters to preserver | + | The properties in this group pad areas around small feature vertex clusters to preserve |
== Style == | == Style == | ||
Choose how vertices are added in from the following options: | Choose how vertices are added in from the following options: | ||
- | ^No new segments | No new vertices are added. | + | ^ **Property** ^ **Description** ^ |
- | ^Preserve cross section | Vertices are added to "fill out" | + | | **No new segments** | No new vertices are added. This style is most appropriate on high-polygon |
+ | | **Preserve cross section** | Vertices are added to fill out the areas around feature vertex clusters. Use this style to make sure that branches | ||
== Scale U == | == Scale U == | ||
- | The automatically computed number of padding vertices | + | The automatically computed number of padding vertices across the branch is multiplied by this number. Values less than 1.0 reduce the polygon count at the expense of potential shape irregularity. |
== Scale V == | == Scale V == | ||
- | The automatically computed number of padding vertices | + | The automatically computed number of padding vertices along the branch is multiplied by this number. Values less than 1.0 reduce the polygon count at the expense of potential shape irregularity. |
- | === Freehand === | + | ==== Freehand |
The properties in this section control the creation of new vertices based on freehand vertex painting. | The properties in this section control the creation of new vertices based on freehand vertex painting. | ||
- | == Density == | + | === Density |
- | Increase this value to add more vertices in painted areas. | + | Increase this value to add more vertices in painted areas. Decrease it to lower the vertex count. |
- | == Seed == | + | === Seed === |
Change this value to change how the painted vertices are distributed. | Change this value to change how the painted vertices are distributed. | ||
+ | |||
+ | ==== Resolution ==== | ||
+ | The properties in this group scale the number of segments based on the selected [[kcvfxresolution|resolution]] (High, Medium, Low, or Draft). | ||
+ | |||
+ | **Note:** Resolution curves are applicable only to the VFX line of SpeedTree products. | ||
+ | |||
+ | === Length === | ||
+ | Scales the number of length segments for each resolution. | ||
+ | |||
+ | === Radial === | ||
+ | Scales the number of radial segments for each resolution. | ||
+ | |||
+ | ==== Features ==== | ||
+ | Scales the number of feature vertices for each resolution. | ||
===== Spine ===== | ===== Spine ===== | ||
Line 228: | Line 162: | ||
These properties set the length of the branch. | These properties set the length of the branch. | ||
- | == Absolute == | + | === Absolute |
Sets the minimum length of the branch. | Sets the minimum length of the branch. | ||
- | == + % of parent == | + | === + % of parent |
- | A length equal to this value multiplied by the length of the parent is added to the "Absolute" | + | A length equal to this value multiplied by the length of the parent is added to the **Absolute** value above to set the length of the branch. |
- | == + % of radius == | + | === + % of radius |
- | A length equal to this value multiplied by the radius of this branch is added to the "Absolute" | + | A length equal to this value multiplied by the radius of this branch is added to the **Absolute** and **+ % of parent** values above to set the length of the branch. |
- | >**Note:** Favor "+ % of parent" | + | **Note:** Favor **+ % of parent** and **+ % of radius** wherever possible. Doing so makes randomization more effective and allows for easier reuse of generators within and between models. |
- | == Match one V tile == | + | === Match one V tile === |
Sets the length to exactly match the length of one V tile based on the material' | Sets the length to exactly match the length of one V tile based on the material' | ||
> | > | ||
- | == Stop Shape Control | + | === Stop shape control === |
- | When enabled and [[toolshapecontrol|Shape Control]] is being used, this property stops Shape Control from being computed on this Generator | + | When enabled and [[toolshapecontrol|Shape Control]] is being used, this property stops Shape Control from being computed on this generator |
- | == Shape scale == | + | === Shape scale === |
- | This property scales | + | Scales |
==== Orientation ==== | ==== Orientation ==== | ||
The properties in this group control the initial orientation of the branch. | The properties in this group control the initial orientation of the branch. | ||
- | == Start angle == | + | === Start angle === |
The amount of angle offset from the parent node's growth direction at the point where each node occurs, where 0.0 is equal to the parent' | The amount of angle offset from the parent node's growth direction at the point where each node occurs, where 0.0 is equal to the parent' | ||
- | == Start roll == | + | === Start roll === |
- | Use this property to rotate the direction the "Start angle" | + | Use this property to rotate the direction the **Start angle** is applied. A value of 0.0 means that the start angle is applied along the parent branch. Negative values rotate the branch clockwise. Positive values rotate the branch counterclockwise. |
- | == Alignment == | + | === Alignment |
- | Computes an interpolation between a random | + | Computes an interpolation between a random up direction and absolute (world) up. This property rotates the branch in an attempt to make the " |
- | == Roll == | + | === Roll === |
- | Uniform rotation of each branch. | + | Uniformly rotates |
- | == Unify == | + | === Unify === |
- | Forces branch nodes on opposite sides of their parent to be oriented in the same direction. | + | Forces branch nodes on opposite sides of their parent to be oriented in the same direction. Rotation adjustments like **Roll** and **Frond Roll** keep opposite nodes synchronized when this option is enabled. This option is especially useful when modeling long, narrow fronds on a stem (e.g., ferns). |
- | == Weld start == | + | === Weld start === |
- | Enable this option when using "Spine only" branches to make the branch start on the surface of the parent' | + | Enable this option when using "Spine only" branches to make the branch start on the surface of the parent' |
==== Shape ==== | ==== Shape ==== | ||
The properties in this group (along with [[kcforces|Forces]]) control the shape of the branch as it grows. | The properties in this group (along with [[kcforces|Forces]]) control the shape of the branch as it grows. | ||
- | == Gravity == | + | === Gravity |
- | Positive values pull branches down, negative values push branches up (in world space). | + | Positive values pull branches down, negative values push branches up (in world space). Gravity is equivalent to a downward pointing direction force. |
- | == Ancestor == | + | === Ancestor |
- | Positive values cause the branch to grow in the direction of its parent. | + | Positive values cause the branch to grow in the direction of its parent. Negative values push it away. For example, if **Ancestor** is set to a positive value, then all the branches created by this generator will grow towards the direction of the parent spine, like a bud. If set to a negative value, then all the spines will grow away from the spine, basically unraveling. |
- | For example, if " | + | === Straightness === |
+ | Sets the amount of straightness or noise removal applied to the branch after **Noise** has been computed. However, this property | ||
- | == Straightness | + | === Twist === |
- | Sets the amount of straightness or noise removal applied to the branch after " | + | Twists the branch along its central axis. The curls are applied in the order they appear on the Property Bar. |
- | + | ||
- | == Twist == | + | |
- | Twists the branch along its central axis. The curls are applied in the order they appear on the Property Bar. | + | |
=== Parent Curl === | === Parent Curl === | ||
Line 307: | Line 239: | ||
== Segment Length: Absolute == | == Segment Length: Absolute == | ||
- | Sets the minimum number of zigzags. | + | Sets the minimum number of zigzags. Use the profile curve to scale the length of each zigzag along the branch. |
== Segment Length: + Relative == | == Segment Length: + Relative == | ||
Line 315: | Line 247: | ||
The properties in this group remove branches based on their orientation. | The properties in this group remove branches based on their orientation. | ||
- | == Interior == | + | === Interior |
Removes branches that grow toward the interior of the model. | Removes branches that grow toward the interior of the model. | ||
- | == Up == | + | === Up === |
Removes branches that point up. | Removes branches that point up. | ||
- | == Down == | + | === Down === |
Removes branches that point down. | Removes branches that point down. | ||
- | == General == | + | === General |
Removes branches at random. | Removes branches at random. | ||
- | == Ground == | + | === Ground |
Removes any branch that intersects the ground plane. | Removes any branch that intersects the ground plane. | ||
Line 333: | Line 265: | ||
The properties in this group allow you to trace out a deformation path for the spine. | The properties in this group allow you to trace out a deformation path for the spine. | ||
- | == Amount== | + | === Amount=== |
- | Use this property to control | + | Controls |
- | == Twist == | + | === Twist === |
- | This property twists | + | Twists |
- | == Length == | + | === Length |
- | The length over which exactly one tile of the deformation shape is applied. | + | The length over which exactly one tile of the deformation shape is applied. If this length is shorter than the branch, the deformation will tile. |
- | == Offset == | + | === Offset |
- | Use this property to shift where the deformation is applied. You can use variance on this property to apply the same deformation shape to many branches without an obvious repeating pattern. | + | Shifts |
==== Noise ==== | ==== Noise ==== | ||
- | Sets the amount of randomness applied to each angle along the spine length. Noise adds bends and deformation to the branch spine. The difference in Early and Late Noise is based on when the noise is factored in the computation. | + | Sets the amount of randomness applied to each angle along the spine length. Noise adds bends and deformation to the branch spine. The difference in **Early** and **Late** noise is based on when the noise is factored in the computation. |
=== Early === | === Early === | ||
- | Early noise is computed while the spine is being shaped. It is important to note that with early noise, randomization may result in wildly different shapes. | + | Early noise is computed while the spine is being shaped. It is important to note that with early noise, randomization may result in wildly different shapes. |
== Amount == | == Amount == | ||
Line 360: | Line 292: | ||
Controls the point on the spine that needs to be exceeded for the noise to come into effect. | Controls the point on the spine that needs to be exceeded for the noise to come into effect. | ||
- | >**Note:** Altering the profile curves affects where the noise starts and ends. | + | **Note:** Altering the profile curves affects where the noise starts and ends. |
=== Late === | === Late === | ||
Line 374: | Line 306: | ||
Straightens the noise that was applied to the spine. Setting the value to 1.0 will completely straighten the branch spine. | Straightens the noise that was applied to the spine. Setting the value to 1.0 will completely straighten the branch spine. | ||
- | >**Note:** Late noise is the best way to add an organic look to your model while keeping it under control. | + | **Note:** **Late** noise is the best way to add an organic look to your model while keeping it under control. |
- | == Seed == | + | === Seed === |
- | This seed is used to control the noise pattern. | + | This seed is used to control the noise pattern. Change this value to change the noise without randomizing any other part of the model. |
==== Jink ==== | ==== Jink ==== | ||
- | The properties in this section straighten out sections of the branch | + | The properties in this section straighten out sections of the branch to simulate a branch' |
- | == Amount == | + | === Amount |
- | This property controls | + | Controls |
- | == Absolute == | + | === Absolute |
Sets the minimum number of straight segments. | Sets the minimum number of straight segments. | ||
- | == + Relative == | + | === + Relative |
Adds additional straight segments based on the branch' | Adds additional straight segments based on the branch' | ||
- | == Uniformity == | + | === Uniformity |
Controls how similar in length each straight segment is. | Controls how similar in length each straight segment is. | ||
- | == Seed == | + | === Seed === |
Change this value to randomize only the jink calculations while keeping the rest of the branch the same. | Change this value to randomize only the jink calculations while keeping the rest of the branch the same. | ||
- | >**Note:** Changing the seed has no effect when "Uniformity" | + | **Note:** Changing the seed has no effect when **Uniformity** is set to 1.0. |
==== Break ==== | ==== Break ==== | ||
The properties in this group control if, where, and how often branches will break. | The properties in this group control if, where, and how often branches will break. | ||
- | == Chance == | + | === Chance |
- | Sets the likelihood that any node will “break,” resulting in an open branch at the break spot. [[cap_generator|Cap]] generators can be added as children to close off the break. | + | Sets the likelihood that any node will break, resulting in an open branch at the break spot. [[cap_generator|Cap]] generators can be added as children to close off the break. |
- | == Spot == | + | === Spot === |
- | The percentage of the way along any spine where the branch will “break.” | + | The percentage of the way along any spine where the branch will break. |
- | == Seed == | + | === Seed === |
Change this value to recompute where breaks happen. | Change this value to recompute where breaks happen. | ||
Line 414: | Line 346: | ||
The properties in this group implement the [[toolshapecontrol|Shape Control]] technique. | The properties in this group implement the [[toolshapecontrol|Shape Control]] technique. | ||
- | == Style == | + | ==== Style ==== |
- | Determines the method used for controlling the shape of this generator' | + | Determines the method used for controlling the shape of this generator' |
- | ^None | Choosing none will keep the Shape Control Properties | + | ^ **Property** ^ **Description** ^ |
- | ^Sphere | Branches are constrained to a circular shape. | | + | | **None** | Choosing none will keep the **Shape control** properties |
- | ^Mesh | Branches are constrained to the mesh that is imported. | | + | | **Sphere** | Branches are constrained to a circular shape. | |
+ | | **Enabled geometry forces** | ||
- | == Position == | + | ==== Position |
Determines placement of the spheres along the spine. A value of 0.0 is at the base of the spine, and a value of 1.0 is at the tip of the spine. Going over the value of 1.0 pushes the sphere placement off the spine. | Determines placement of the spheres along the spine. A value of 0.0 is at the base of the spine, and a value of 1.0 is at the tip of the spine. Going over the value of 1.0 pushes the sphere placement off the spine. | ||
- | ==Distribution style== | + | ====Distribution style==== |
- | Selects what type of generators influence the length of branches under shape control | + | Selects what type of generators influence the length of branches under shape control. |
- | ^Branches only | Only branch generators factor into the shape control algorithm. | | + | ^ **Property** ^ **Description** ^ |
- | ^All descendants | Every generator that is a descendant of the generator initiating shape control | + | | **Branches only** | Only branch generators factor into the shape control algorithm. | |
+ | | **All descendants** | Every generator that is a descendant of the generator initiating shape control | ||
- | == Distribution == | + | ==== Distribution |
Distribution lets you push and pull the relative lengths from one end of the sphere to the other. For example, sliding distribution to the right will create longer lengths in the first set of branches and shorter ones in the last set. | Distribution lets you push and pull the relative lengths from one end of the sphere to the other. For example, sliding distribution to the right will create longer lengths in the first set of branches and shorter ones in the last set. | ||
- | === Size === | + | ==== Size ==== |
- | == Absolute == | + | === Absolute |
- | The exact size of the spheres used for "Shape Control" | + | The exact size of the spheres used for shape control. |
- | == + % of Size == | + | === + % of size === |
Using the amount set, this property re-computes the size of the spheres based on the length of the spine, so a spine that is longer will have a larger sphere. | Using the amount set, this property re-computes the size of the spheres based on the length of the spine, so a spine that is longer will have a larger sphere. | ||
- | >**Note:** You can see how these properties affect the model by enabling | + | **Note:** You can see how these properties affect the model by enabling |
===== Skin ===== | ===== Skin ===== | ||
The properties in this group control how the mesh around the spine is generated. | The properties in this group control how the mesh around the spine is generated. | ||
- | == Type == | + | ==== Type ==== |
- | This property sets the style of the skin from the following options: | + | Sets the style of the skin. |
- | ^Polygons | The branch is composed of triangles or quads. No hole is cut into the parent.| | + | ^ **Property** ^ **Description** ^ |
- | ^SubD Surface | + | | **Polygons** | The branch is composed of triangles or quads. No hole is cut into the parent.| |
- | ^SubD Surface | + | | **SubD surface |
- | ^Spine Only|No mesh is applied to the spine. | + | | **SubD surface |
+ | | **Spine only** | ||
- | ==Visibility== | + | ====Visibility==== |
- | Branches with Visibility values greater than 0.5 have geometry. | + | Branches with **Visibility** values greater than 0.5 have geometry. Those with less than 0.5 do not. Use this property to judiciously hide branches to save on polygonal complexity. |
==== Radius ==== | ==== Radius ==== | ||
These properties control the radius of the extruded branch skin. | These properties control the radius of the extruded branch skin. | ||
- | == Absolute == | + | === Absolute |
Sets the minimum value of the radius. | Sets the minimum value of the radius. | ||
- | == + % of Parent | + | === + % of parent === |
- | Radial size is determined based on a percentage of their parent' | + | Radial size is determined based on a percentage of the parent' |
- | == Clamp to Parent | + | === Clamp to parent === |
When enabled, the child radius cannot exceed the radius of the parent. | When enabled, the child radius cannot exceed the radius of the parent. | ||
- | == Length | + | === Length |
Occasionally, | Occasionally, | ||
- | == Length | + | === Length |
- | Removes any branches where the length of the branch divided by its radius exceeds this value. | + | Removes any branches where the length of the branch divided by its radius exceeds this value. Use this to automatically eliminate |
- | + | ||
- | > | + | |
- | == Light Seam Reduction | + | ==== Light seam reduction ==== |
Sets the amount to bend the normals toward the spine' | Sets the amount to bend the normals toward the spine' | ||
- | >**Note:** Normal bending increases exponentially near the base of the branch since light seams occur where branches intersect. | + | **Note:** Normal bending increases exponentially near the base of the branch since light seams occur where branches intersect. |
- | == Roll == | + | ==== Roll ==== |
Rotates the skin of the branch around the center spine without changing the underlying shape. | Rotates the skin of the branch around the center spine without changing the underlying shape. | ||
- | == Smooth == | + | ==== Smooth |
- | Vertices | + | Push out vertices |
==== Welding ==== | ==== Welding ==== | ||
Controls the junction between branches and their parents. | Controls the junction between branches and their parents. | ||
- | == Enabled == | + | === Enabled |
When checked, branches will be pushed out and fused to their parent, creating a seamless union between the two. | When checked, branches will be pushed out and fused to their parent, creating a seamless union between the two. | ||
- | ==Keep | + | ===Keep=== |
- | When checked, branches that failed | + | Sets where to keep welds on the model. |
- | ==Force ray casts== | + | **Hint:** Use the curve relative |
- | When checked, welding uses ray casts to attach | + | |
- | == Offset == | + | ===Keep failed=== |
- | Controls how far out the branch is pushed off the surface before welding back to the parent. | + | When checked, branches that failed to weld are still computed. Use this to help find and correct failed welds in critical regions (failed welds in fine detail areas are often okay). |
+ | |||
+ | ===Force ray casts=== | ||
+ | When checked, welding uses ray casts to attach to the parent rather than internal procedural data. This often results in more failed welds but can produce better results when welding to heavily deformed parents (e.g., squashed and deformed branches). | ||
+ | |||
+ | === Offset | ||
+ | Controls how far out the branch is pushed off the surface before welding back to the parent. It's essentially the length of the weld region. | ||
===Spread=== | ===Spread=== | ||
Line 509: | Line 447: | ||
Sets the base amount of the spread. | Sets the base amount of the spread. | ||
- | == Upper Scale == | + | == Upper scale == |
- | Sets the amount to spread the top weld segments of the child branch on the parent branch, creating a "web" | + | Sets the amount to spread the top weld segments of the child branch on the parent branch, creating a web where the branches meet. |
- | == Lower Scale == | + | == Lower scale == |
- | Sets the amount to spread the bottom weld segments of the child branch on the parent branch, creating a "web" | + | Sets the amount to spread the bottom weld segments of the child branch on the parent branch, creating a web where the branches meet. |
=== Blend === | === Blend === | ||
Line 520: | Line 458: | ||
== Texture == | == Texture == | ||
Sets the amount to extend or pull the blended texture region up the child branch, elongating or squashing the texture mapping. | Sets the amount to extend or pull the blended texture region up the child branch, elongating or squashing the texture mapping. | ||
+ | |||
+ | == Texture scale == | ||
+ | Resizes the texture map in the blended region. | ||
== Contrast == | == Contrast == | ||
Line 525: | Line 466: | ||
== Noise == | == Noise == | ||
- | Sets the amount of the noise (wave frequency) | + | Sets the amount of the noise (wave frequency) to encircle the branch radius between the two blended textures so there is not a uniform blend line. |
== Lighting == | == Lighting == | ||
Alters the Normal alignment of the branch skin in the weld region. | Alters the Normal alignment of the branch skin in the weld region. | ||
- | > **Note:** A curve set to 'Min' | + | **Note:** A curve set to **Min** means that the normals are rotated to follow the direction of the spine. A curve set to **Max** means all the normals are rotated to point out based on its position on the spine. |
==== Subdivision ==== | ==== Subdivision ==== | ||
- | These properties control the junction with the parent for branches whose skin type is set to either of the "SubD" | + | These properties control the junction with the parent for branches whose **Skin** > **Type** |
- | == Relax Scale == | + | === Relax scale === |
Averages out the vertices at the junction in order to remove artifacts. | Averages out the vertices at the junction in order to remove artifacts. | ||
- | == Smooth == | + | === Smooth |
Controls how far away the child' | Controls how far away the child' | ||
- | == Texture | + | === Texture |
Determines the denseness of the texture applied around the intersections. | Determines the denseness of the texture applied around the intersections. | ||
- | == Upper spread == | + | === Upper spread |
Extends the upper junction point higher on the parent. Junctions will always occur at the closest ring on the parent to this setting. | Extends the upper junction point higher on the parent. Junctions will always occur at the closest ring on the parent to this setting. | ||
- | == Lower spread == | + | === Lower spread |
Extends the lower junction point lower on the parent. Junctions will always occur at the closest ring on the parent to this setting. | Extends the lower junction point lower on the parent. Junctions will always occur at the closest ring on the parent to this setting. | ||
==== Squash ==== | ==== Squash ==== | ||
- | These properties are used to make the branch cross-section | + | These properties are used to make the branch cross-section more elliptical rather than circular. |
- | == Amount == | + | === Amount |
Reduces the scale of one side of the branch radius in order to get a flatter shape. | Reduces the scale of one side of the branch radius in order to get a flatter shape. | ||
- | == Rotate == | + | === Rotate |
Rotates where the flattened area is located on the branch. | Rotates where the flattened area is located on the branch. | ||
==== Splits ==== | ==== Splits ==== | ||
- | It is possible to [[atsplits|split]] the trunk into two open ends ready for extension branches. | + | It is possible to [[atsplits|split]] the trunk into two open ends ready for extension branches. These properties control the likelihood and nature of branch splits. |
- | == Chance == | + | === Chance |
- | Sets the likelihood that the extended parent will split, or divide, into two branches. | + | Sets the likelihood that the extended parent will split, or divide, into two branches. A value of 0.0 means there will be no chance of splitting, a value of 1.0 means it will split if it can. |
- | >**Note:** There must be at least two U texture tiles in order for a split to happen. | + | **Note:** There must be at least two U texture tiles in order for a split to happen. |
- | == Balance == | + | === Balance |
- | Controls the balance of the radius size between the two split branches. | + | Controls the balance of the radius size between the two split branches. At 0.5, both spines will be the same radius. |
- | == Seed == | + | === Seed === |
Controls the random values used to create the splits. | Controls the random values used to create the splits. | ||
Line 577: | Line 518: | ||
== Side 1 == | == Side 1 == | ||
- | Controls the angle of one of the split branches away from the center of the tree. | + | Controls the angle of one side of the split branches away from the center of the tree. |
== Side 2 == | == Side 2 == | ||
- | Controls the angle of one of the split branches away from the center of the tree. | + | Controls the angle of one side of the split branches away from the center of the tree. |
=== Expand === | === Expand === | ||
Line 601: | Line 542: | ||
===== Extensions ===== | ===== Extensions ===== | ||
- | The properties in this group modify the traits of extensions created by this generator. | + | The properties in this group modify the traits of extensions created by this generator. These properties are useful for adjusting extensions when the fact that they' |
==== Spine ==== | ==== Spine ==== | ||
These properties affect the spine of extensions. | These properties affect the spine of extensions. | ||
- | == Length scale == | + | === Length scale === |
Scales the length of extension spines. | Scales the length of extension spines. | ||
- | == Spread == | + | === Spread |
- | When more than one extension exists on a branch, this value controls how much they separate. | + | When more than one extension exists on a branch, this value controls how much they separate. Use the profile curve to control how much of the spread is applied along the length of the extensions. |
==== Skin ==== | ==== Skin ==== | ||
These properties affect the skin of extensions. | These properties affect the skin of extensions. | ||
- | == Radius == | + | === Radius |
- | Use the profile curve to control the radius along the length of the extension. | + | Use the profile curve to control the radius along the length of the extension. The value controls how much the profile curve is used. These adjustments are all made relative to what the branch would compute were it just near the end of the branch but not an extension. |
- | == Normal smooth == | + | === Normal smooth |
This value smooths out the normals when there is more than one extension on a branch. Use this property to help hide the seam between extensions. | This value smooths out the normals when there is more than one extension on a branch. Use this property to help hide the seam between extensions. | ||
- | == Displacement scale == | + | === Displacement scale === |
Scales the displacement values used on the extensions. | Scales the displacement values used on the extensions. | ||
Line 627: | Line 568: | ||
The properties in this group control the UV coordinate generation. | The properties in this group control the UV coordinate generation. | ||
- | == Style == | + | ==== Style ==== |
- | Sets the method by which UVs are computed | + | Sets the method by which UVs are computed. |
- | ^Unrestricted | No locks. Unlimited tiling for both U and V. | | + | ^ **Property** ^ **Description** ^ |
- | ^U locked [0,1], V unrestricted | Forces all U coordinates to be in the range [0.0, 1.0], but allows unlimited V tiling. | | + | | **Unrestricted** | No locks. Unlimited tiling for both U and V. | |
- | ^U and V locked [0,1] | Locks both U and V texture | + | | **U locked [0,1], V unrestricted** | Forces all U coordinates to be in the range [0.0, 1.0], but allows unlimited V tiling. | |
+ | | **U and V locked [0,1]** | Locks both U and V texture | ||
- | == Extension | + | ==== Extension |
- | Set the style by which UV coordinates are generated for any nodes that are extensions in this generator | + | Set the style by which UV coordinates are generated for any nodes that are extensions in this generator. |
- | ^Automatic | All extensions will continue the UV mapping from their parent | | + | ^ **Property** ^ **Description** ^ |
- | ^Manual (match) | UV offsets will be relative to those that would match their parent | | + | | **Automatic** | All extensions will continue the UV mapping from their parent. | |
- | ^Manual (match u only) | U will match exactly, V is free to edit | | + | | **Manual (match)** | UV offsets will be relative to those that would match their parent. | |
- | ^Manual (full control) | Full control of UV coordinates will be allowed | | + | | **Manual (match u only)** | U will match exactly, V is free to edit. | |
+ | | **Manual (full control)** | Full control of UV coordinates will be allowed. | | ||
==== U ==== | ==== U ==== | ||
U coordinates circle the branch. | U coordinates circle the branch. | ||
- | == Absolute == | + | === Absolute |
Sets the minimum number of times the material tiles around the branch. | Sets the minimum number of times the material tiles around the branch. | ||
- | == + Relative == | + | === + Relative |
- | The number of additional tiles based on the branch radius and this number are added to the "Absolute" | + | The number of additional tiles based on the branch radius and this number are added to the **Absolute** value above to set the final number of times the material wraps in U. This value is always at least 1 and is always an integer. |
- | == Offset == | + | === Offset |
U values are shifted by this amount. | U values are shifted by this amount. | ||
- | >**Note:** Use variance on this property to make branches each have a random orientation to the U wrapping. | + | **Note:** Use variance on this property to make branches each have a random orientation to the U wrapping. |
=== Fractional === | === Fractional === | ||
- | U tiling values are forced to the nearest integer value during normal texture coordinate computation to facilitate seamless tiling; however, this is not always desirable. | + | U tiling values are forced to the nearest integer value during normal texture coordinate computation to facilitate seamless tiling; however, this is not always desirable. For instance, if you need to target a branch component in a custom atlas you'll need to use fractional values in combination with U offset to focus on a section of the atlas. |
== Enable == | == Enable == | ||
- | Toggles whether or not fractional U values are allowed. | + | Toggles whether or not fractional U values are allowed. If they are, only the **Value** property in this group affects the U coordinate. |
== Auto == | == Auto == | ||
- | Enabling this property means the value will be set automatically to a number that will result in the closest possible match to the texel density of the parent. | + | Enabling this property means the value will be set automatically to a number that will result in the closest possible match to the texel density of the parent. There will be a seam in the texture but it may not be noticeable from the viewpoint of the intended scene. |
== Value == | == Value == | ||
- | This property directly sets the U tiling value and is not restricted to integers. | + | This property directly sets the U tiling value and is not restricted to integers. |
=== Twist === | === Twist === | ||
Line 674: | Line 617: | ||
Sets the number of full revolutions to twist the material per V tile. | Sets the number of full revolutions to twist the material per V tile. | ||
- | == Random | + | == Random |
Randomly flips the texture twist direction. | Randomly flips the texture twist direction. | ||
Line 680: | Line 623: | ||
V coordinates run along the branch. | V coordinates run along the branch. | ||
- | == Style == | + | === Style === |
- | This property selects the method used to compute V coordinates | + | This property selects the method used to compute V coordinates. |
- | ^Absolute | V tiling is set explicitly.| | + | ^ **Property** ^ **Description** ^ |
- | ^Relative (Keep Aspect Ratio) | V tiling is computed based on the U tiling and branch radius in such a way that the aspect ratio of the applied material is maintained.| | + | | **Absolute** | V tiling is set explicitly.| |
- | ^Relative | V tiling is computed based on the length of the branch.| | + | | **Relative (keep aspect ratio)** | V tiling is computed based on the U tiling and branch radius in such a way that the aspect ratio of the applied material is maintained.| |
+ | | **Relative** | V tiling is computed based on the length of the branch.| | ||
- | == Anchor == | + | === Anchor |
This property selects which end of the branch the V coordinates are computed from. | This property selects which end of the branch the V coordinates are computed from. | ||
- | ^Start | V coordinates are computed from the start towards the end. | | + | ^ **Property** ^ **Description** ^ |
- | ^End | V coordinates are computed from the end towards the start. | | + | | **Start** | V coordinates are computed from the start towards the end. | |
+ | | **End** | V coordinates are computed from the end towards the start. | | ||
- | == Scale == | + | === Scale === |
Controls the amount of V tiling. | Controls the amount of V tiling. | ||
- | == Skew correction == | + | === Skew correction |
- | When the style is set to "Relative (keep aspect ratio), this property controls how much of an attempt is made to fit the mapping to the changing radius of the branch. | + | When the style is set to **Relative (keep aspect ratio)**, this property controls how much of an attempt is made to fit the mapping to the changing radius of the branch. A value of 0.0 makes no correction. A value of 1.0 adjusts the V coordinates to accommodate branches that get narrower or wider. Use this property to avoid the appearance of stretched maps, especially as branches narrow near the end. |
- | == Offset == | + | ===Pinch=== |
+ | Fine-tune V texture coordinates near the end of a branch when repeating or clamping artifacts are visible. | ||
+ | |||
+ | === Offset | ||
V values are shifted by this amount. | V values are shifted by this amount. | ||
- | >**Note:** Use variance on this property to make branches each have a random start point for the V coordinates. | + | **Note:** Use variance on this property to make branches each have a random start point for the V coordinates. |
- | + | ||
- | == Override V Coords for Extensions == | + | |
- | Branch extensions typically continue their parent' | + | |
- | + | ||
- | > | + | |
==== Tiling ==== | ==== Tiling ==== | ||
The properties in this group control how tiling UV coordinates are handled. | The properties in this group control how tiling UV coordinates are handled. | ||
- | == Style == | + | === Style === |
- | Controls what happens when UV coordinates will be computed that are outside the range [0.0, 1.0] from the following options: | + | Controls what happens when UV coordinates will be computed that are outside the range [0.0, 1.0]. |
- | ^Tiling | UV coordinates are permitted to go outside the range [0.0, 1.0] and will rely on texture tiling to appear correctly. | | + | ^ **Property** ^ **Description** ^ |
- | ^0-1 patches (choose one assigned material) | The branch will be computed in patches where all UV coordinates are in the range [0.0, 1.0]. One material will be chosen based on assigned materials and their weights and will be used on all patches. | | + | | **Tiling** | UV coordinates are permitted to go outside the range [0.0, 1.0] and will rely on texture tiling to appear correctly. | |
- | ^0-1 patches (use all assigned materials) | The branch will be computed in patches where all UV coordinates are in the range [0.0, 1.0]. The assigned materials will be used to create a patchwork based on their weights and location assignments. | + | | **0-1 patches (choose one assigned material)** | The branch will be computed in patches where all UV coordinates are in the range [0.0, 1.0]. One material will be chosen based on assigned materials and their weights and will be used on all patches. | |
+ | | **0-1 patches (use all assigned materials)** | The branch will be computed in patches where all UV coordinates are in the range [0.0, 1.0]. The assigned materials will be used to create a patchwork based on their weights and location assignments. Use this style to mix a unique base (choose | ||
- | >**Note:** The patch options will result in a doubling of the vertices along the seams to implement unique [0.0, 1.0] sections. | + | **Note:** The patch options will result in a doubling of the vertices along the seams to implement unique [0.0, 1.0] sections. |
- | == Optimize segments == | + | === Optimize segments |
- | When enabled, length and radial segments are chosen | + | When enabled, length and radial segments are chosen to minimize the occurrence of segments placed very near each other. Use this option to eliminate rings very near to each other near the patch transitions. |
- | == V tolerance == | + | === V tolerance |
- | Length segments that fall on whole number V texture coordinates are favored over those that are near it. Adjust this value to control how close to whole number V segments any segment can be. Use this property to clean up areas around patch edges. | + | Length segments that fall on whole number V texture coordinates are favored over those that are near it. Adjust this value to control how close to whole number V segments any segment can be. Use this property to clean up areas around patch edges. |
- | + | ||
- | == Seed == | + | |
- | Randomizes the distribution of materials on the patches when the style is set to "0-1 patches (use all assigned materials)" | + | |
+ | === Seed === | ||
+ | Randomizes the distribution of materials on the patches when the style is set to **0-1 patches (use all assigned materials)**. | ||
===== Materials ===== | ===== Materials ===== | ||
Line 737: | Line 680: | ||
Applies a material to the branches in this generator. Use the button controls to add [+] or remove [-] materials per geometry type. | Applies a material to the branches in this generator. Use the button controls to add [+] or remove [-] materials per geometry type. | ||
- | == Material == | + | === Material |
- | Specify a named material from the [[kcmaterialsassetsbar|Materials Bar]], a named set from the [[toolmaterialsassetsbar|Material Sets Bar]], or use "Inherited" | + | Specify a named material from the [[toolmaterialsassetsbar|Materials Bar]], a named set from the [[toolmaterialsassetsbar|Material Sets Bar]], or use **Inherited** to pick up the material from the parent. |
- | == Weight == | + | === Weight |
Sets the probability that a node will receive this material index (this weight ÷ the sum of all weights). | Sets the probability that a node will receive this material index (this weight ÷ the sum of all weights). | ||
- | >**Note:** Using multiple branch maps will require additional draw calls in real-time use. | + | === Patch options === |
+ | Choose how to apply the material. See [[uv_tiling|UV tiling]]. This property is visible only when **UV Mapping: | ||
+ | |||
+ | ^**Property**^**Description**^^ | ||
+ | |**UV Area**|Choose to apply the full UV map or a UV area.|| | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |**Placement**|Place the material anywhere or on the first ring.|| | ||
+ | |||
+ | |||
+ | **Note:** Using multiple branch maps will require additional draw calls in real-time use. | ||
==== Extensions ==== | ==== Extensions ==== | ||
Applies a material to the branch extensions in this generator. Use the button controls to add [+] or remove [-] materials per geometry type. | Applies a material to the branch extensions in this generator. Use the button controls to add [+] or remove [-] materials per geometry type. | ||
- | >**Note:** Empty material slots default to "Inherited." | + | **Note:** Empty material slots default to **Inherited**. This setting is typically fine for extensions. |
- | == Material == | + | === Material |
- | Specify a named material from the [[kcmaterialsassetsbar|Materials Bar]], a named set from the [[toolmaterialsassetsbar|Material Sets Bar]], or use "Inherited" | + | Specify a named material from the [[toolmaterialsassetsbar|Materials Bar]], a named set from the [[toolmaterialsassetsbar|Material Sets Bar]], or use **Inherited** to pick up the material from the parent. |
- | == Weight == | + | === Weight |
Sets the probability that a node will receive this material index (this weight ÷ the sum of all weights). | Sets the probability that a node will receive this material index (this weight ÷ the sum of all weights). | ||
Line 759: | Line 713: | ||
The properties in this group move the vertices of the branch mesh to simulate a rough surface. | The properties in this group move the vertices of the branch mesh to simulate a rough surface. | ||
- | >**Note:** The more vertices you have in the branch the better displacement will look. | + | **Note:** The more vertices you have in the branch, the better displacement will look. |
- | == Radial | + | ==== Radial |
Sets the maximum amount any of the vertices will move away from (positive values) or toward (negative values) the spine. | Sets the maximum amount any of the vertices will move away from (positive values) or toward (negative values) the spine. | ||
- | == Length | + | ==== Length |
- | Set the amount the vertices will move in the direction of the spine. | + | Sets the amount the vertices will move in the direction of the spine. |
- | == Sharpness == | + | ==== Sharpness |
- | This curve sets the displacement amount for any given displacement value. | + | Sets the displacement amount for any given displacement value. For example, for a given vertex, let's say the algorithm decides it needs to be displaced by 0.25 of the maximum value. Before that 0.25 is applied, it is used to look up a new value from this curve. So, a linear growth curve will leave the value unmodified; however, other curve shapes will allow you to have different regions of displacement to have more or less effect on the model. An exponential growth curve will cause sharp displacement because only high values have a significant effect. |
- | == Source == | + | ==== Source |
- | Selects the source of data for the displacement | + | Selects the source of data for the displacement. |
- | ^ Noise | Uses noise for displacement. | | + | ^ **Property** ^ **Description** ^ |
- | ^ Material | Uses the map in the height channel of the assigned material for displacement. | | + | | **Noise** | Uses noise for displacement. | |
- | ^ Displacement | + | | **Material** | Uses the map in the height channel of the assigned material for displacement. | |
+ | | **Displacement**| Uses a named [[tooldisplacementsbar|displacement]] asset as the displacement source. | | ||
- | == U Scale == | + | ==== Mapping ==== |
+ | |||
+ | ^ **Property** ^ **Description** ^ | ||
+ | | **Use UVs** | Follows the geometry’s UV coordinates to map the displacement. | | ||
+ | | **Fit to geometry** | Applies displacement once around and along the branch. | ||
+ | |||
+ | ==== U scale ==== | ||
Scales the noise pattern around the model. | Scales the noise pattern around the model. | ||
- | == V Scale == | + | ==== V scale ==== |
Scales the noise pattern along the model. | Scales the noise pattern along the model. | ||
- | == Seed == | + | ==== Seed ==== |
- | When using "Noise" | + | When using **Noise** as the source, change this property to vary the pattern. |
==== Fine ==== | ==== Fine ==== | ||
Fine displacement is a second displacement pattern that is always noise based. | Fine displacement is a second displacement pattern that is always noise based. | ||
- | == Amount == | + | === Amount |
- | Sets the maximum amount any of the vertices will move. Vertices always move out or in along the surface normal. | + | Sets the maximum amount any of the vertices will move. Vertices always move out or in along the surface normal. This movement will be on top of any other displacement. |
- | == Sharpness == | + | === Sharpness |
- | This curve sets the displacement amount for any given displacement value. | + | This curve sets the displacement amount for any given displacement value. For example, for a given vertex, let's say the algorithm decides it needs to be displaced by 0.25 of the maximum value. Before that 0.25 is applied, it is used to look up a new value from this curve. So, a linear growth curve will leave the value unmodified; however, other curve shapes will allow you to have different regions of displacement to have more or less effect on the model. An exponential growth curve will cause sharp displacement because only high values have a significant effect. |
- | == Scale == | + | === Scale === |
- | Sets the size of the noise. Values greater than one will push the displacement outwards and less than one will bring the displacement in towards the center of the branch. | + | Sets the size of the noise. Values greater than 1 will push the displacement outwards and less than 1 will bring the displacement in towards the center of the branch. |
==== Shape ==== | ==== Shape ==== | ||
- | This property adds length creases, following the direction of the spine, to break up the branch radius. | + | Adds length creases, following the direction of the spine, to break up the branch radius. |
- | == Amount == | + | === Amount |
Sets the strength of displacement that creates the creases. | Sets the strength of displacement that creates the creases. | ||
- | == Twist == | + | === Twist === |
Sets the amount of rotation of the spine that is applied to the shape displacement. The rotation begins from the base. | Sets the amount of rotation of the spine that is applied to the shape displacement. The rotation begins from the base. | ||
- | == Scale == | + | === Scale === |
Scales the noise pattern. | Scales the noise pattern. | ||
- | == Seed == | + | === Seed === |
- | Change this property to vary the shape noise. | + | Varies |
==== Flares ==== | ==== Flares ==== | ||
Flares are a special type of displacement designed to simulate the bottom of a trunk as it expands into the underground root system. | Flares are a special type of displacement designed to simulate the bottom of a trunk as it expands into the underground root system. | ||
- | == Radius == | + | === Radius |
Sets the maximum amount of any flare displacement (expressed as a multiple of the branch radius). | Sets the maximum amount of any flare displacement (expressed as a multiple of the branch radius). | ||
- | == Noise Scale == | + | === Noise scale === |
- | Flares are computed based on a noise pattern. | + | Flares are computed based on a noise pattern. Use this value to scale the pattern. |
- | == Height == | + | === Height |
Sets the distance the flare extends up the spine of each branch. | Sets the distance the flare extends up the spine of each branch. | ||
- | == Pinch == | + | === Pinch === |
- | Set the amount the flares should be pulled in towards the center spine. A value of 1.0 means that there is no spread in the base of the flares. | + | Sets the amount the flares should be pulled in towards the center spine. A value of 1.0 means that there is no spread in the base of the flares. |
- | == Angle == | + | === Angle === |
Rotates the flares of the branch around the center spine. | Rotates the flares of the branch around the center spine. | ||
- | == Seed == | + | === Seed === |
- | Change this property to vary the flare noise pattern. | + | Varies |
===== Dynamic LOD ===== | ===== Dynamic LOD ===== | ||
- | The [[kcgameslod|Dynamic LOD System]] automatically creates multiple levels of detail for a model. | + | The [[kcgameslod|Dynamic LOD System]] automatically creates multiple levels of detail for a model. The purpose is to allow the model to degrade in detail in real-time applications. This should not be confused with [[kcvfxresolution|Resolution]], |
- | == Weight == | + | ==== Weight |
- | This value influences | + | Influences |
- | == Optimization == | + | ==== Optimization |
- | Increases the length segment optimization property for each successive | + | Increases the length segment optimization property for each successive LOD state. Use this to dynamically reduce length segments based on curvature. |
- | == Length | + | ==== Length |
- | Scales back the number of length segments for each successive | + | Scales back the number of length segments for each successive LOD. |
- | == Radial | + | ==== Radial |
- | Scales back the number of radial segments for each successive | + | Scales back the number of radial segments for each successive LOD. |
+ | |||
+ | ==== Features ==== | ||
+ | Scales back the number of feature segments for each successive LOD. | ||
===== Wind ===== | ===== Wind ===== | ||
- | The properties in this group control the wind behavior of the branch. | + | The properties in this group control the wind behavior of the branch. |
- | == Apply == | + | ==== Apply ==== |
- | Applies wind at this level. This property can be ignored if the available wind levels are already taken. | + | Applies wind at this level. This property can be ignored if the available wind levels are already taken. When wind is enabled, the generator icon in the [[toolgeneration_editor|Generation Editor]] will show the wind level ultimately assigned to this generator based on the hierarchy. |
==== Weight ==== | ==== Weight ==== | ||
- | The properties in this group control | + | Controls |
- | == Style == | + | ==== Inherited weight scale ==== |
- | Choose | + | Use this property to exaggerate |
- | ^Absolute | Weight is computed without regard for any of the branches that came before it. | | + | ==== Level offset ==== |
- | ^Anatomical | Weight | + | In multi-level wind algorithms, this value will cause the assigned wind level to increase by this amount. This feature |
- | == Value == | + | ==== Style ==== |
- | The strength of the wind effect on this set of nodes. This value is a multiplier of the motion values set for the corresponding level on the [[Fan|Fan]]. | + | Choose |
- | >**Note:** The left-hand side of the profile curve must be zero to avoid branch disconnections. | + | ^ ** Property** ^ **Description** ^ |
+ | | **Absolute** | Weight is computed without regard for any of the branches that came before it. | | ||
+ | | **Anatomical** | Weight is computed based on the anatomy | ||
- | == Amount | + | ==== Value ==== |
- | This property sets the amount per unit length | + | The strength |
- | == Inherited weight scale == | + | **Note:** The left-hand side of the profile curve must be zero to avoid branch disconnections. |
- | Use this property to exaggerate the weight | + | |
- | == Level offset | + | ==== Amount ==== |
- | In multi-level wind algorithms, this value will cause the assigned wind level to increase by this amount. | + | This property sets the amount |
===== Season ===== | ===== Season ===== | ||
The properties in this group provide the mechanism by which assigned materials can change with the [[kcseasons|Seasons]] slider. | The properties in this group provide the mechanism by which assigned materials can change with the [[kcseasons|Seasons]] slider. | ||
- | >**Note:** Although season changes on branches aren't usually that noticeable, you can use this mechanism to switch to burnt barks, barks with or without lichen, or any other variation you'd like to be housed in the same model. | + | **Note:** Although season changes on branches aren't usually that noticeable, you can use this mechanism to switch to burnt barks, barks with or without lichen, or any other variation you'd like to be housed in the same model. |
- | == Start Offset | + | ==== Start offset ==== |
Determines when the branch will start to transition. The default value of 0.0 means it will start immediately (higher values delay the start, lower values make it start sooner). | Determines when the branch will start to transition. The default value of 0.0 means it will start immediately (higher values delay the start, lower values make it start sooner). | ||
- | == Time Scale == | + | ==== Time scale ==== |
Controls how long it will take to complete its transition. The default value of 1.0 means one year. | Controls how long it will take to complete its transition. The default value of 1.0 means one year. | ||
- | == Descendant | + | ==== Descendant |
- | Applies an offset, based on the value entered, to the spines. So if a value of '0.2' | + | Applies an offset, based on the value entered, to the spines. So if a value of 0.2 is set, then the nodes along with their children will be offset by that amount. |
> | > | ||
===== Growth ===== | ===== Growth ===== | ||
- | The properties in this group control how the model behaves during animated growth. | + | The properties in this group control how the model behaves during animated growth. In general, you create the model in the fully grown state and use these properties to control how it gets there. |
- | == Speed Scale == | + | ==== Speed scale ==== |
- | The speed at which a branch will grow is set on the [[tooltimeline|Timeline Bar]]. Use this property to scale that value. The profile curve scales the speed relative to the branch' | + | The speed at which a branch will grow is set on the [[tooltimeline|Timeline Bar]]. Use this property to scale that value. The profile curve scales the speed relative to the branch' |
- | == Radius | + | ==== Radius |
- | Choose how the radius is treated | + | Choose how the radius is treated. |
- | ^Reveal profile | Gradually reveal more of the profile as the branch grows. | | ||
- | ^Stretch profile | Apply the full radius profile curve to whatever portion of the branch has been revealed. | | ||
- | == Radius == | + | ^ ** Property** ^ **Description** ^ |
- | This profile | + | | **Reveal |
+ | | **Stretch profile** | Apply the full radius | ||
- | == Smoothing == | + | ==== Radius ==== |
+ | Scales the speed at which the radius of the branch increases. For example, a linear growth curve will cause the radius to grow linearly from the beginning to the end of the branch' | ||
+ | |||
+ | ==== Smoothing | ||
Branches can be oriented either based on the current state of their parent (0.0 smoothing), the final state of their parent (1.0 smoothing), or anywhere in between. Increase this value to prevent wild branch motion during growth. This is especially useful for branches growing off of a twisted or gnarled parent. | Branches can be oriented either based on the current state of their parent (0.0 smoothing), the final state of their parent (1.0 smoothing), or anywhere in between. Increase this value to prevent wild branch motion during growth. This is especially useful for branches growing off of a twisted or gnarled parent. | ||
- | == Unfurl == | + | ==== Unfurl |
- | This property causes the "Start angle" | + | This property causes the **Start angle** to animate from being in line with the parent to its final orientation during the growth animation. Use this property to make branches (and fronds growing off of them) appear to open up as the animation proceeds. |
- | ==Allow extension control== | + | ====Allow extension control==== |
- | Check this box to have growth timing | + | Enable |
==== Timing ==== | ==== Timing ==== | ||
- | == Style == | ||
- | Sets the conditions under which the branch will start growing. The Start % property works according to the option selected here. Options include: | ||
- | ^In Place | The branch will start growing exactly when the parent is long enough to reach its starting point in the fully grown model. | + | === Style === |
- | ^Parent | The growth of this branch will be based on the growth of the parent. A "Start %" | + | Sets the conditions under which the branch will start growing. The **Start %** property works according to the option selected here. |
- | ^Parent' | + | |
+ | ^ ** Property** ^ **Description** ^ | ||
+ | | **In place** | ||
+ | | **Parent** | The growth of this branch will be based on the growth of the parent. A **Start %** of 0.0 means start when the parent starts, 1.0 means start when the parent ends. | | ||
+ | | **Parent' | ||
- | == Start % == | + | ==== Start % ==== |
- | Causes branches to start early (0.0) or late (1.0) according to the "Style" | + | Causes branches to start early (0.0) or late (1.0) according to the **Style** property. |
- | == Offset == | + | ==== Offset |
The start frame is shifted by a constant number of frames (negative means earlier, positive means later). This value is best used to “jumble up” the start times of neighboring branches. | The start frame is shifted by a constant number of frames (negative means earlier, positive means later). This value is best used to “jumble up” the start times of neighboring branches. | ||
- | >**Note:** It is almost never a good idea to go negative with this value (branches can't grow earlier than the structure will allow). A good practice is to have a value of something like 10 and a variance of 10 as well. That way the earliest any branch will start is when it was supposed to, but some will be delayed. | + | **Note:** It is almost never a good idea to go negative with this value (branches can't grow earlier than the structure will allow). A good practice is to have a value of something like 10 and a variance of 10 as well. That way the earliest any branch will start is when it was supposed to, but some will be delayed. |
====Noise==== | ====Noise==== | ||
Line 941: | Line 910: | ||
Controls how much noise is applied when bringing the orientation into its final position. | Controls how much noise is applied when bringing the orientation into its final position. | ||
- | >**Note:** The final value for the profile curve must be 0.0 in order for the model to exactly match its correct final position. | + | **Note:** The final value for the profile curve must be 0.0 in order for the model to exactly match its correct final position. |
==Frequency== | ==Frequency== | ||
Line 950: | Line 919: | ||
Controls how much noise is applied to the speed at which the branch reaches its final position. | Controls how much noise is applied to the speed at which the branch reaches its final position. | ||
- | >**Note:** The final value for the profile curve must be 0.0 in order for the model to exactly match its correct final position. | + | **Note:** The final value for the profile curve must be 0.0 in order for the model to exactly match its correct final position. |
==Frequency== | ==Frequency== | ||
Line 960: | Line 929: | ||
==== Mapping ==== | ==== Mapping ==== | ||
- | == Animate | + | === Animate |
When enabled, the V texture coordinates move with the branch in the growth direction (think of a trunk that appears to be pulled out of the ground). When disabled, the texture appears to be revealed as it grows (the V coordinates are constant). | When enabled, the V texture coordinates move with the branch in the growth direction (think of a trunk that appears to be pulled out of the ground). When disabled, the texture appears to be revealed as it grows (the V coordinates are constant). | ||
- | == Animate | + | === Animate |
When enabled, texture-based displacement moves with the texture map. When disabled, displacement is computed as it would be in the final model. Because displacement is continuous and only sampled at length segments, some artifacts may occur during the animation. Zeroing out displacement will eliminate these artifacts altogether. | When enabled, texture-based displacement moves with the texture map. When disabled, displacement is computed as it would be in the final model. Because displacement is continuous and only sampled at length segments, some artifacts may occur during the animation. Zeroing out displacement will eliminate these artifacts altogether. | ||
Line 969: | Line 938: | ||
The properties in this group are used to control attributes of the model used for physics simulation or character rigging in third-party applications. | The properties in this group are used to control attributes of the model used for physics simulation or character rigging in third-party applications. | ||
- | == Bone Style == | + | ==== Bone Style ==== |
- | Sets how bones are computed | + | Sets how bones are computed. |
- | ^Absolute | The number of bones is explicitly set per-node. | | + | ^ ** Property** ^ **Description** ^ |
- | ^Relative | The number of bones is based on the length of the spine. | | + | | **Absolute** | The number of bones is explicitly set per-node. | |
+ | | **Relative** | The number of bones is based on the length of the spine. | | ||
- | == Bones == | + | ==== Bones ==== |
Sets the number of bones generated along the length of spines based on the " | Sets the number of bones generated along the length of spines based on the " | ||
- | >**Note:** If Bone Style is set to relative, this integer becomes a floating-point value and the actual number of bones generated is a function of the length of individual nodes. | + | **Note:** If **Bone style** |
- | == Radial | + | ==== Radial |
Scales the radius of the bones. | Scales the radius of the bones. | ||
- | == Length | + | ==== Length |
Scales the length of the bones. | Scales the length of the bones. | ||
- | == Density == | + | ==== Density |
Affects the weight and stiffness of branch geometry in physics calculations. | Affects the weight and stiffness of branch geometry in physics calculations. | ||
- | == Breakable | + | ==== Breakable |
Sets the probability that the bones will break. | Sets the probability that the bones will break. | ||
===== Lightmap ===== | ===== Lightmap ===== | ||
- | [[kcgameslightmap|Lightmap]] UVs are computed for several versions of the Modeler designed for use with game engines. | + | [[kcgameslightmap|Lightmap]] UVs are computed for several versions of the Modeler designed for use with game engines. Lightmap UVs are a UV set in which no objects overlap and all of them fit in a single space where U and V fit in the range [0.0, 1.0]. |
- | == Weight == | + | ==== Weight |
- | This value influences how much space in the lightmap branches made by this generator can have. | + | This value influences how much space in the lightmap branches made by this generator can have. |
+ | |||
+ | Use the distribution curve to control where the Lightmap UV density is applied. The default value packs more at the base than at the tip. Keep in mind that the Weight value is considered along with the geometry area and texture area of the object. | ||
+ | |||
+ | In addition, every object' | ||
+ | |||
+ | ===== Geometry Force Crawling ===== | ||
+ | The properties in this group control the behavior of branches when they collide with a geometry force that uses the **Obstruct** style for its **Collide** behavior. | ||
+ | |||
+ | ==== Max iterations ==== | ||
+ | When a mesh collision is detected, this property determines how many attempts are made to continue on without going through the mesh. More iterations mean a better chance of finding a route at the expense of slower computation times. | ||
+ | |||
+ | ==== Max bend angle ==== | ||
+ | Specifies the maximum amount a spine can bend to try to get around the mesh. | ||
+ | |||
+ | ==== Tolerance ==== | ||
+ | Sets how tolerant of collisions the algorithm should be. Larger values mean more of the branch will intersect with the mesh. Adding some tolerance often helps the look of things like vines clumping together. | ||
+ | |||
+ | ==== Look ahead ==== | ||
+ | The spine of the branch is computed/ | ||
+ | |||
+ | ==== Hit backfaces ==== | ||
+ | When enabled, collisions with back-facing polygons on meshes will count as a hit. When disabled, branches will pass through back-facing geometry. | ||
+ | |||
+ | ==== Follow ==== | ||
+ | When a branch contacts a mesh it has the opportunity to follow along its surface. The properties in this group control that behavior. | ||
+ | |||
+ | === Strength === | ||
+ | How much the branch will follow the surface. The direction computed for the following has to compete with all the other factors influencing the direction (e.g., gravity, other forces, early noise, etc.). Increase this value to increase the follow direction' | ||
+ | |||
+ | === Angle === | ||
+ | Sets the clockwise angle from the default follow direction. The default follow direction is always the direction the V UV coordinate is increasing on the triangle that was hit. | ||
+ | |||
+ | **Note:** Meshes with UV islands may have wildly different follow directions on adjacent triangles. Consider other methods (like magnet forces) to control branches on such meshes. | ||
+ | |||
+ | === Bounce === | ||
+ | The properties in this group provide a mechanism for making a branch that is following a surface occasionally leave it and return. This technique can be useful for making vines crawl along surfaces realistically. | ||
+ | |||
+ | == Chance == | ||
+ | Increase how often a bounce may happen. | ||
+ | |||
+ | == Strength == | ||
+ | Controls how much the branch can bounce. | ||
+ | |||
+ | == Recovery == | ||
+ | Controls how fast a branch will recover from a bounce. | ||
+ | |||
+ | == Variation == | ||
+ | Adds variation to each bounce and recovery. | ||
+ | |||
+ | === Noise === | ||
+ | Use noise to make the following behavior vary across the surface. | ||
+ | |||
+ | == Amount == | ||
+ | Controls how much the branch will vary from the following angle. | ||
+ | |||
+ | == Turbulence == | ||
+ | Controls how chaotic the deviation from the following angle will be. | ||
+ | |||
+ | == Seed == | ||
+ | Randomize only the following noise behavior while leaving the rest of the branch unchanged. | ||
+ | |||
+ | ==== Results ==== | ||
+ | When a branch is set to collide with a geometry force, it will either fail or succeed in that effort. The properties in this section control what to do in either case. | ||
- | Use the distribution curve to control where the Lightmap UV density | + | === Failed === |
+ | Choose what to do when a branch | ||
- | In addition, every object' | + | ^ ** Property** ^ **Description** ^ |
+ | | **Keep it** | The branch remains. It may have errors but it will be in the model. | | ||
+ | | **Prune it** | Chop the branch off at the point of the error. The branch remains. | | ||
+ | | **Stop it** | Stop the branch at the point of the error. All of the profile curves will treat the branch | ||
+ | | **Destroy it** | The branch is removed from the model. | ||
+ | === Succeeded === | ||
+ | Choose what to do with the branches that worked. | ||
+ | ^ ** Property** ^ **Description** ^ | ||
+ | | **Keep all** | The branches will be kept and included in the model. | | ||
+ | | **Keep hits** | Only those branches that hit an enabled geometry force will be kept. | | ||
+ | | **Keep misses** | Only those branches that missed all enabled geometry forces will be kept. | | ||
+ | | **Reject mesh escapees** | Only branches that remained fully contained within an enabled geometry force will be kept. | |