User Tools

Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

spine_generator [2017/05/19 16:32]
spine_generator [2021/04/27 09:19] (current)
Line 1: Line 1:
 +======Spine Generator======
 +
 +>**Note:** This generator has been deprecated.  Please [[toolupgrade|upgrade]] these generators to [[branch_generator|Branch]] generators.
 +
 +=====Generation=====
 +The Generation properties are described in full detail under [[generation_properties|Generation Properties]].
 +
 +=====Forces=====
 +The properties in this group control the behavior of [[kcforces|forces]] on this generator.
 +
 +
 +=====Geometry Types=====
 +
 +==Frond==
 +When enabled, 2-sided frond geometry is generated along the spine. 
 +
 +==Leaf Style Fronds==
 +When enabled, frond geometry is treated as leaves. Leaf style fronds use leaf wind effects and are toggled with the leaf visibility hotkey (1). 
 +
 +==Branch==
 +When enabled, fully 3D branches are skinned over the spine. 
 +
 +==Cap==
 +When enabled, cap geometry is skinned over open ends of branches, either caused by the radius profile or breaking.
 +
 +=====Random Seeds=====
 +Properties that have [[toolvariance_editor|variance]] are given random values based on a seed value in this group.  Vary the seeds in this group to randomize only the properties associated with the seed type. 
 +
 +==Randomize All==
 +Randomizes the value for all seeds used to compute this generator.  
 +
 +===== Hand-Drawn =====
 +
 +==Toggle Hand-Drawn==
 +Pressing this button will convert a procedural branch into a hand-drawn branch and vice versa. During the process, some properties (such as Allow forces and Spine:Perturbance) are disabled or enabled to provide a more seamless conversion. 
 +
 +>**Note:** Converting to hand-drawn may result in a slightly different branch. Bifurcations will become disabled and/or the spline may twitch slightly during the resampling.
 +
 +==Control point style==
 +Selects the type of control points that are used to form the Bézier spline from the following options. 
 +
 +^ Corner | Control point handles are independently rotated and scaled to best fit the hand-drawing |
 +^ Linear | Control point handles are rotated in unison (per control point) but are scaled independently, creating linear tangents. |
 +^Smooth | Control point handles are rotated and scaled in unison, creating symmetrical tangents.|
 +
 +==Curve Fit Scalar==
 +
 +Sets the accuracy of the Bézier spline that is created after hand drawing. Higher values result in the creation of more control points. Once drawn, a spline can be resampled with the 'Curve fit scalar' found in the 'Resample' group.
 +
 +===== Segments =====
 +
 +==Multiplier==
 +Scales the number of length, radial, and cap segments uniformly.
 +
 +==Style==
 +
 +
 +^ Relative | Both length and radial segments are computed based on the length and radius of the node, respectively.|
 +^ Length relative | Length segments are computed based on the length of the node. |
 +^ Radial relative | Radial segments are computed based on the radius of the node. |
 +^ Absolute | Both length and radial segments are set explicitly.|
 +
 +==Accuracy==
 +The maximum fidelity of spines.
 +
 +==Length==
 +The number of segments composing spines. 
 +
 +== Optimization ==
 +
 +Segments are added and removed adaptively based on the curvature of the branch. Increasing this value increases the angle that must be met for a length segment to survive the optimization. 
 +
 +== Radial ==
 +
 +The number of segments composing the radial cross-section of branches. 
 +
 +== Cap ==
 +
 +The number of segments composing the cap geometry of broken or open-ended branches.
 +
 +== Weld ==
 +
 +The number of segments composing the fused part of welded branches. 
 +
 +== Frond shape ==
 +
 +The number of segments composing the Frond: Shape: Contour curve. 
 +
 +== Frond Optimization ==
 +
 +Frond segments are added and removed adaptively based on the curvature of the frond. Increasing this value increases the angle that must be met for a frond length segment to survive the optimization. 
 +
 +
 +===== Spine =====
 +
 +== Length Style ==
 +
 +The method used to determine spine length – either "Absolute" or "Relative." When set to "Relative," two new options become available: Length % and Limit Length, which factor into determining the final calculated lengths. 
 +
 +== Length % ==
 +
 +When Length Style is set to "Relative," this value is used to determine how long the nodes of this generator will be as a percentage of their parent's length. Optionally, a length limit can be enacted, which will limit the maximum length of spines at the value set generically for length. 
 +
 +== Limit Length ==
 +
 +When enabled, relative length spines will be capped at the length value, however, any individual node may be shorter than this value depending on the value set for Length % as well as the actual length of each parent node. 
 +
 +== Length ==
 +
 +The length of the spine nodes as distributed along the parent node. 
 +
 +**Relative length limiter**
 +If Length Style is set to "Relative" and "Limit Length" is enabled, this value serves as the limiter for all possible lengths, regardless of the length of each parent.
 +
 +== Start Angle ==
 +
 +Sets 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's direction, 1.0 is an inversion of the parent's direction, and 0.5 is perpendicular to the parent. 
 +
 +== Alignment ==
 +
 +An interpolation between a random "up" direction and absolute (world) "up."
 +
 +== Roll ==
 +
 +Uniform rotation of each spine. Roll is applied after __Spine:Alignment__. 
 +
 +== Unify Orientation ==
 +
 +Forces spine 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). 
 +
 +== Perturbance ==
 +
 +Toggles the effect of spine disturbance, jink frequency, and jink amount. 
 +
 +== Disturbance ==
 +
 +Sets the amount of randomness applied to each angle along the spine length.
 +
 +== Jink Frequency ==
 +
 +Sets the sampling rate of the jink behavior. 
 +
 +== Jink Amount ==
 +
 +The amount to sample the jink behavior. 
 +
 +>**Note:** __Jink:Frequency__ and __Jink:Amount__ work together to make the jink behavior. Either set to 0 nullifies the effect.
 +
 +== Break Chance ==
 +
 +Sets the likelihood that any node will "break," resulting in a capped branch at the break spot. 
 +
 +== Break Spot ==
 +
 +The percentage of the way along any spine where the branch will "break" from break chance. 
 +
 +
 +===== Bifurcation =====
 +
 +== Chance ==
 +
 +The likelihood that any node will bifurcate, or "fork" into two spines at the bifurcation spot. 
 +
 +== Spot ==
 +
 +The percentage of the way along the spine where the branch will "fork" from __Bifurcation:Chance__. 
 +
 +== Angle ==
 +
 +The angle between the two forked halves. 
 +
 +== Distance ==
 +
 +The length of the bifurcating segment (from the previous ring to the crease between the fork). 
 +
 +
 +== Radius Scale ==
 +
 +Amount to decrease the radius of each bifurcation end branch. 
 +
 +
 +== Adjust Frequency ==
 +
 +When enabled, bifurcated branches will generate more children than non-bifurcated branches. 
 +
 +== Adjust Frond Start ==
 +
 +When enabled, fronds geometry will not start until the bifurcation point (fronds will be made on each split after the break). 
 +
 +=== Web === 
 +
 +==Angle==
 +The amount to retract the crease in the middle of the web.
 +==Thickness==
 +The width of the crease in the middle of the web.
 +==Spread==
 +Amount to retract the outer edges of the base ring.
 +
 +=== Break ===
 +
 +==Style==
 +Whether to break the left, right, or both ends if the break spot lies past the bifurcation spot.
 +==Left Break Spot==
 +The amount to offset the break spot up or down if it happens on the left end of the bifurcation.
 +==Right Break Spot==
 +The amount to offset the break spot up or down if it happens on the right end of the bifurcation.
 +==Cap Variance==
 +The amount of variation between the cap displacement of each bifurcation end branch.
 +
 +
 +>**NOTE:** Both "Bifurcate" and "Break" must be enabled for a node to utilize __Break:Style__.
 +
 +===== Frond =====
 +
 +====Shape====
 +
 +== Width ==
 +The width of the frond. 
 +
 +== Height ==
 +The height of the "Contour" curve. 
 +
 +== Contour ==
 +The frond shape definition. This curve is extruded along the length of the spine. 
 +
 +== Shape: Contour Style ==
 +Selects how the "Contour" curve is interpreted from the following options:
 +
 +^Right Side | The curve is mirrored (over the curve Y-axis) on each side of the frond. |
 +^Full Width | The curve is interpreted to cover both sides of the frond, allowing non-symmetrical frond shapes. | 
 +
 +==Lock Aspect Ratio==
 +When enabled, the frond width will increase and decrease to maintain the aspect ratio of the material. 
 +
 +==Mapping==
 +Selects the mapping style from the following options:
 +
 +^Centered Surface | Fronds are mapped based on surface approximation from the center outwards (maintaining the center-line of the textures). |
 +^Surface | Fronds are mapped based strictly on surface approximation (mapping may be heavily weighted on one side rather than staying centered). |
 +^Planar | Fronds are planar mapped face down without respecting surface approximation (may result in texture stretching). |
 +
 +==Flip==
 +Selects if/how frond geometry is flipped from the following options.
 +
 +^None | No flipping will occur. |
 +^Mapping | Random nodes will have flipped texture coordinates. |
 +^Shape | Random nodes will have flipped shapes [see __Shape: Contour__]. |
 +^Both | Random nodes may have flipped texture coordinates, shapes, or both. | 
 +
 +==Start==
 +The percentage along the spine where frond geometry begins. 
 +
 +==End==
 +The percentage along the spine where frond geometry terminates. 
 +
 +==Roll==
 +Uniform rotation of the frond, applied after spine roll and spine alignment. 
 +
 +==Count==
 +The number of frond "blades." Frond blades are instances of the frond shape rotated along the spine. 
 +
 +==Spacing==
 +The radial distance between each frond blade. A value of 1.0 results in an equal distance on both sides of the frond. 
 +
 +^ Requires a frond count greater than 1. ^||
 +
 +==== Normals ====
 +
 +==Alignment==
 +Normals are rotated from the face normal towards the direction the node is growing. A value of 1.0 results in normals facing completely out. 
 +
 +==Spread==
 +Normals are fanned towards the sides of the frond. Spreading will increase for each __Frond: Shape__ segment approaching the edge of the frond. 
 +
 +==Light Seam Reduction==
 +The normals at each vertex are rotated toward the surface normal at the point where the frond attaches to its parent. Use this option to smooth out the lighting where the frond meets its parent. 
 +
 +==Two Sided==
 +When enabled, geometry is created on both sides of standard fronds. Does not apply to mesh fronds. 
 +
 +==Invert==
 +Inverts the normals on standard fronds. This property does not apply to mesh fronds. 
 +
 +==== Mesh ====
 +
 +==Normal Bias==
 +Modulates between the standard frond normals (0.0) and the normals as defined in the source mesh (1.0). 
 +
 +==Offset Direction==
 +Selects the direction used for handling meshes with height from the following options:
 +
 +^Frond | The Z-depth of mesh fronds are applied based on the shape of the "Contour" curve. |
 +^Spine | The Z-depth of mesh fronds are applied in a planar fashion with the up vector defined by the spine's orientation. | 
 +
 +==Z Scale==
 +Scalar for the height of mesh fronds. 
 +
 +===== Branch =====
 +
 +==Radius Style==
 +Selects how the radius is computed from the following options:
 +
 +^Absolute | The radius of the branch is determined using real-world units. |
 +^Relative | The radius of the branch is a percentage of its parent node at the point where it was generated. |
 +
 +==Radius==
 +The radius of the extruded branch skin. 
 +
 +^ Radius is limited to the radius profile percentage of the parent node at the point where each branch is generated unless "Clamp radius" is disabled. ^||
 +
 +==Clamp Radius==
 +When enabled, the radius can never exceed the radius of its parent at the point where the branch was generated. 
 +
 +==Light Seam Reduction==
 +The amount to bend the normals toward the parent spine direction. 
 +
 +>**Note:**Normal bending increases exponentially near the base of the branch since light seams occur where branches intersect.
 +
 +==Roll==
 +Branch roll rotates the skin of the branch around the center spine without changing the underlying shape. 
 +
 +==== Flares ====
 +
 +==Number==
 +The number of flares around the branch. 
 +
 +==Balance==
 +An interpolation between equally-spaced and randomly-positioned flares. 
 +
 +==Width==
 +The radial spread of each flare. 
 +
 +==Length==
 +The distance out from the initial branch radius that the flares will extend. 
 +
 +==Height==
 +The distance the flare extends up the spine of each node. 
 +
 +====Cap====
 +
 +==Angle==
 +The rotation of the texture coordinates around the center of the cap. 
 +
 +==Scale==
 +Texture coordinate scale. Larger values zoom in towards the center (clamped at 1.0). 
 +
 +==Border==
 +Insets the cap from the branch proper to simulate bark thickness. 
 +
 +>**Note:** A cap border greater than 0.0 results in an extra ring of cap segments.
 +
 +==Offset==
 +Extrudes the cap geometry in the direction of the last length segment. 
 +
 +>**Note:** Requires a border value greater than 0.0.
 +
 +==Slope==
 +The length to extend one side of the cap, creating a slope. 
 +
 +>**Note:** Rotate the slope with "Angle."
 +
 +==== Welding ====
 +
 +==Enabled==
 +When enabled, branches will be pushed out and fused to their parent, creating a seamless union between the two. 
 +
 +==Normal blending==
 +The percentage to blend between computed branch normals and the normals from the parent branch at the point of welding. 
 +
 +==Distance==
 +The distance away from the parent branch skin to start the welded branch. 
 +
 +==Upper Spread==
 +The amount to spread the weld segments towards the end of the parent branch, creating a "web" where the branches meet. 
 +
 +==Lower Spread==
 +The amount to spread the weld segments towards the start of the parent branch, creating a "web" where the branches meet. 
 +
 +===Intersection Blending===
 +
 +==Style==
 +The method used for applying intersection blending. Options include:
 +
 +^Standard | Branch blending will be applied as long as it is considered "safe" (the branch doesn't cross a bifurcation saddle or detail clamp). |
 +^Force | Branch blending will be applied always, as long as the child is welded. |
 +^Disabled | Branch blending is disabled. |
 +
 +==Texture Pull==
 +The amount to extend the blended texture region along the child branch, elongating or squashing the texture mapping. 
 +
 +==Offset==
 +An offset to the "line" between the base texture mapping and blend region. Go above or below zero to offset the position of the blend line, without adjusting the texture coordinates. 
 +
 +===== Texture Coordinates =====
 +
 +==Layer==
 +Each layer applies only to branch geometry. Branches have two distinct sets of texture coordinates, "Base" and "Detail."
 +
 +^Base | Show the base layer property set. |
 +^Detail | Show the detail layer property set. |
 +^Both | Show the property sets for both base and detail layers. |
 +
 +>**Note:** Detail layers are ignored in SpeedTree 8.0 and later.
 +
 +==Style==
 +Selects the method used for UV coordinate computation.
 +
 +^Relative | Both U and V tile are computed based on the length and radius of the node. |
 +^U relative | U-tile is computed based on the radius of the node. |
 +^V relative | V-tile is computed based on the length of the node. |
 +^Absolute | Both U-tile and V-tile are set explicitly. |
 +
 +==U Correction==
 +Selects how U coords are corrected for the shape of the branch.
 +
 +^None | Texture mapping is applied as a cylinder before skin disturbance (i.e. displacement, welding, flares). |
 +^Early | Texture mapping is applied as a cylinder and adjusted before skin disturbance (i.e. displacement, welding, flares). |
 +^Late | Texture mapping is applied as a cylinder after skin disturbance (i.e. displacement, welding, flares). |
 +
 +==U Lock==
 +When enabled, the "U Tile" property becomes integer-locked to ensure wrapping without seams. For very thin branches, it may be desirable to turn this option off to match the texel density of parent branches. 
 +
 +==U Tile==
 +The number of times the material tiles around a branch. 
 +
 +>**Note:** If __Texture Coordinates: Style__ is set to relative, this integer becomes a floating point value and the actual value is a function of the radius of individual nodes. The computed U tile value is then rounded to an integer to avoid texture seams.
 +
 +==V Tile==
 +The number of times the material tiles along the length of a branch. 
 +
 +>**Note:** If __Texture Coordinates: Style__ is set to relative, this integer becomes a floating point value and the actual value is a function of the length of individual nodes.
 +
 +==U Offset==
 +Shifts the U coordinates.
 +
 +==V Offset==
 +Shifts the V coordinates.
 +
 +==Twist==
 +The number of full revolutions to twist the material per V tile. 
 +
 +==Flip twist==
 +When this value is not checked, each branch twists in a counter-clockwise direction. When it is checked, each branch twists the same amount in either a clockwise or counter-clockwise direction. 
 +
 +===Clamp===
 +The properties in this group are ignored in SpeedTree 8.0 and later.
 +
 +===== Materials =====
 +
 +Branches, caps, and fronds can each have multiple materials to be distributed randomly. Use the button controls to add [+] or remove [-] materials per geometry type. 
 +
 +==Geometry==
 +A named mesh asset (only applies to fronds).
 +
 +==Material==
 +A named material from the material bank, or set to "inherited."
 +
 +==Weight==
 +The probability that a node will receive this material index (this weight ÷ sum of all weights).
 +
 +==Sync Index==
 +When enabled (and multiple branch, cap, and frond materials are present), the distribution of cap and frond materials is synced to the distribution of branch materials. This ensures that "Branch 1" and "Cap 1" are always assigned together, and so on. 
 +
 +===== Displacement =====
 +
 +====Branch====
 +
 +==Source==
 +Selects the source of the displacement from the following options:
 +
 +^Noise | A generic, scalable noise pattern is used for displacement. |
 +^Use material | The material's height map (located in the normal map's alpha channel) is used for displacement. | 
 +^Named Displacement Texture | A named displacement asset. | 
 +
 +>**Note:**The displacement source is not exported for real-time use; it is used only as a modeling aid.
 +
 +==Mapping==
 +Selects how the displacement is mapped to the branch from the following options:
 +
 +^Use base tex coords | Displacement is mapped on top of the existing Layer: Base coordinates. Tile and offset are applied after obtaining the base coordinates. |
 +^Overwrite base tex coords | Ignore the existing coordinates and map displacement explicitly by the other values in this group. |
 +
 +==Amount==
 +The amount of surface displacement. 
 +
 +==Jaggedness==
 +The amount to offset the vertices of each branch ring. Jaggedness is necessary for creating realistic breaks when physics are enabled. 
 +
 +==Jaggedness Tile==
 +Scales the tiling of the displacement source for the jaggedness only. Adjusting this value may be necessary if the displacement map does not have sufficient resolution to offset individual vertices. 
 +
 +==Offset==
 +The amount to offset the depth of the displacement source. Values greater than one will push the displacement outwards and less than one will bring the displacement in towards the center of the branch. 
 +
 +==U Tile==
 +The number of times displacement is repeated across the U direction of the geometry. 
 +
 +>**Note:** If Displacement: Mapping is set to "Use base tex coords," this value is a multiplier of the base U tile value.
 +
 +==V Tile==
 +The number of times displacement is repeated along the length of the geometry. 
 +
 +>**Note:** If Displacement: Mapping is set to "Use base tex coords," this value is a multiplier of the base V tile value. 
 +
 +==U Offset==
 +Shifts the displacement in the U direction.
 +
 +==V Offset==
 +Shifts the displacement in the V direction.
 +
 +====Cap====
 +
 +==Source==
 +Selects the source of the displacement from the following options:
 +
 +^Noise | A generic, scalable noise pattern is used for displacement. |
 +^Use material | The material's height map (located in the normal map's alpha channel) is used for displacement. | 
 +^Named Displacement Texture | A named displacement asset. | 
 +
 +>**Note:**The displacement source is not exported for real-time use; it is used only as a modeling aid.
 +
 +==Amount==
 +The amount of surface displacement. 
 +
 +==U Offset==
 +Shifts the displacement in the U direction.
 +
 +==V Offset==
 +Shifts the displacement in the V direction.
 +
 +==UV Tile==
 +The number of times displacement is tiled from the center of a cap. 
 +
 +==Angle==
 +Rotation offset for displacement texture.
 +
 +===== Ambient Occlusion =====
 +The properties in this group are ignored in SpeedTree 8.0 and later.
 +
 +===== Level of Detail =====
 +The properties in this group are ignored in SpeedTree 8.0 and later.
 +
 +===== Wind =====
 +
 +==Apply==
 +Apply wind at this level. 
 +
 +==Weight==
 +The strength of the wind effect on this set of nodes. 
 +
 +>**Note:** The left-hand side of the profile curve must be zero to avoid branch disconnections.
 +
 +==Rotation==
 +Controls the direction of the vector along which this branch travels during wind oscillation. These values seldom change but can be modified to prevent neighboring branches from oscillating in the same direction (this is usually done in node editing mode). 
 +
 +==Group==
 +When leaf style fronds are enabled, this selects the "wind group" that this generator belongs to. On the global wind properties, there are two distinct wind groups, each with their own set of property values. 
 +
 +==Fronds: Ripple Scale==
 +Controls how much this frond adheres to the frond rippling distance values set on the global wind settings. 
 +
 +==Edit Global Wind==
 +Selects the fan object, allowing the alteration of all global wind settings. 
 +
 +===== Growth =====
 +The properties in this group are ignored in SpeedTree 8.0 and later.
 +
 +===== Physics =====
 +
 +==Use frond geometry==
 +When enabled, frond geometry is made physical as well. 
 +
 +==Bone Style==
 +Selects how bones are computed from the following options:
 +
 +^Relative | The number of bones is based on the length of the spine. |
 +^Absolute | The number of bones is explicitly set per node. |
 +
 +==Bones==
 +The number of bones generated along the length of spines.
 +
 +>**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. 
 +
 +==Radius Scalar==
 +The percentage to scale the radius of the bones.
 +
 +==Length Scalar==
 +The percentage to scale the length of the bones.
 +
 +==Density==
 +The weight and stiffness of branch geometry in physics calculations.
 +
 +===== Lightmap =====
 +
 +==Scale==
 +Scales all of the geometry in this object's relevance in the automatically computed lightmap UV set.  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 scale value is considered along with the geometry area and texture area of the object.  In addition, every object's lightmap scale is compared to every other object and then the lightmap packing is determined.  This means that your scale value may not be honored exactly or may get so large as to exhibit unexpected results.  Use "Tools->Reset lightmap scalars" to go back to default values for the whole model.