====== Spine Generator ====== ===== Generation ===== The Generation properties are describe in full detail under '[[generation_properties|Generation Properties]]'. \\ \\ ===== Forces ===== ==== Allow Forces ==== When enabled, all forces that are checked will act on the generator. //(Boolean)// ==== Forces ==== **Enabled (checkboxes)** While all forces in the scene are listed in this group, only enabled forces affect this generator. ^ Click on the force name to edit the force's properties. ^|| \\ \\ ===== Geometry Types ===== ==== Frond ==== {{ :frond_icons.jpg?nolink&80|}} When enabled, 2-sided frond geometry is generated along the spine. //(Boolean)// ^ Various properties and property groups related to fronds are only made visible if this property is enabled. ^|| ==== 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). //(Boolean)// ^ In the SpeedTree SDK, leaf style fronds are rendered in the same draw call as true leaf generators and should use the same color set that is applied to the other leaves. ^|| ==== Branch ==== {{ :branch_icons.jpg?nolink&80|}} When enabled, fully 3D branches are skinned over the spine. //(Boolean)// ^ Various properties and property groups related to branches are only made visible if this property is enabled. ^|| ==== Cap ==== When enabled, cap geometry is skinned over open ends of branches, either caused by the radius profile or breaking. ^ Branches must first be enabled. ^|| \\ \\ ===== Random Seeds ===== ==== Random Seeds ==== Various seed values are used to procedurally generate nodes. Each random number has been separated out into groups of like properties. //(Integer)// \\ {{:icon_9.png?nolink&50 |}} **Randomize button**\\ Seeds can be incremented with the spinner or chosen at random via the Randomize button. All seeds can be randomized at once with 'Randomize all'. ==== Randomize All ==== Randomizes the value for all seeds used to compute this generator. //(Function)// \\ \\ \\ \\ ===== 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. //(Function)// ^ 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 ==== The types of control points that are used to form the bezier spline. //(Enumeration))// * **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 ==== The accuracy of the bezier 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.. //(Float)// ==== Style ==== * **Relative**: Both length and radial segments are computed based on the length and radius of the node, respectively. //(Enumeration)// * **Length relative**: Length segments are computed based on the length of the node. //(Enumeration)// * **Radial relative**: Radial Segments are computed based on the radius of the node. //(Enumeration)// * **Absolute**: Both length and radial segments are set explicitly. //(Enumeration)// ==== Accuracy ==== The maximum fidelity of spines. //(Integer)// ^ 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. ^|| ==== Length ==== The number of segments composing spines. //(Integer / Float)// ^ If __Segments: Style__ is set to relative, this integer becomes a float and the actual number of segments generated is computed based on the length of the parent. ^|| ==== 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. //(Percentage)// ==== Radial ==== The number of segments composing the radial cross-section of branches. //(Integer / Float)// ^ If __Segments: Style__ is set to relative, this integer becomes a float and the actual number of segments generated is computed based on the radius of individual nodes. ^|| ==== Cap ==== The number of segments composing the cap geometry of broken or open-ended branches. //(Integer / Float)// ^ If __Segments: Style__ is set to relative, this integer becomes a float and the actual number of segments generated is a function of the radius of individual nodes. ^|| ==== Weld ==== The number of segments composing the fused part of welded branches. //(Integer)// ==== Frond shape ==== The number of segments composing the Frond: Shape: Contour curve. //(Integer)// ==== 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. //(Percentage)// \\ \\ ---- ===== 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. //(Enumeration)// ==== 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. //(percentage)// ==== 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. //(Boolean)// ==== Length ==== The length of the spine nodes as distributed along the parent node. //(Float)// **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 ==== 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. //(Percentage)// ==== Alignment ==== An interpolation between a random "up" direction and absolute (world) "up". //(Percentage)// ==== Roll ==== Uniform rotation of each spine. Roll is applied after __Spine:Alignment__. //(Percentage)// ==== 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 options is especially useful when modeling long, narrow fronds on a stem (e.g., ferns). //(Boolean)// ==== Perturbance ==== Toggles the affect of spine disturbance, jink frequency, and jink amount. //(Boolean)// ==== Disturbance ==== The amount of randomness applied to each angle along the spine length. //(Float)// \\ ^ By entering Node Mode, individual disturbance seeds are exposed and can be randomized.^|| ==== Jink Frequency ==== The sampling rate of the jink behavior. //(Float)// \\ ^ __Jink:Frequency__ and __Jink:Amount__ work together to make the jink behavior. Either set to 0 nullifies the effect.^|| ==== Jink Amount ==== The amount to sample the jink behavior. //(Float)// \\ ^ __Jink:Frequency__ and __Jink:Amount__ work together to make the jink behavior. Either set to 0 nullifies the effect.^|| ==== Break Chance ==== The likelihood that any node will "break", resulting in a capped branch at the break spot. //(Percentage)// ==== Break Spot ==== The percentage of the way along any spine where the branch will "break" from break chance. //(Percentage)// \\ \\ ---- ===== Bifurcation ===== ==== Chance ==== The likelihood that any node will bifurcate, or "fork" into two spines at the bifurcation spot. //(Float)// ==== Spot ==== The percentage of the way along the spine where the branch will "fork" from __Bifurcation:Chance__. //(Percentage)// ==== Angle ==== The angle between the two forked halves. //(Percentage)// ==== Distance ==== The length of the bifurcating segment (from the previous ring to the crease between the fork). //(Float)// ^ As the distance approaches the next segment, it can "consume" that segment and increase in length.^|| ==== Radius Scale ==== Amount to decrease the radius of each bifurcation end branch. //(Percentage)// ^ The variance on this value varies the radius for each end independent of its shared base branch.^|| ==== Adjust Frequency ==== When enabled, bifurcated branches will generate more children than non-bifurcated branches. //(Boolean)// ==== Adjust Frond Start ==== When enabled, fronds geometry will not start until the bifurcation point (fronds will be made on each split after the break). //(Boolean)// ==== Web: Angle ==== The amount to retract the crease in the middle of the web. //(Percentage)// ==== Web: Thickness ==== The width of the crease in the middle of the web. //(Percentage)// ==== Web: Spread ==== Amount to retract the outer edges of the base ring. //(Percentage)// ==== Break: Style ==== Whether to break the left, right, or both ends if the break spot lies past the bifurcation spot. //(Enumeration )// ^ Both 'Bifurcate' and 'Break' must be enabled for a node to utilize __Break:Style__.^|| ==== Left Break Spot ==== The amount to offset the break spot up or down if it happens on the left end of the bifurcation. //(Percentage)// ^ Both 'Bifurcate' and 'Break' must be enabled for the node, as well as __Break:Style__ set to 'left'.^|| ==== Right Break Spot ==== The amount to offset the break spot up or down if it happens on the right end of the bifurcation. //(Percentage)// ^ Both 'Bifurcate' and 'Break' must be enabled for the node, as well as __Break:Style__ set to 'right'.^|| ==== Break: Cap Variance ==== The amount of variation between the cap displacement of each bifurcation end branch. //(Boolean)// ^ Both 'Bifurcate' and 'Break' must be enabled for the node, as well as __Break:Style__ set to 'both'.^|| \\ ---- ===== Frond ===== ==== Shape: Width ==== The width of the frond. //(Float)// ==== Shape: Height ==== The height of the __Frond: Shape: Contour__ curve. //(Float)// ==== Shape: Contour ==== The frond shape definition. This curve is extruded along the length of the spine. //(Curve)// ==== Shape: Contour Style ==== === Right Side === The __Shape: Contour__ curve is mirrored (over the curve Y-axis) on each side of the frond. //(Enumeration)// === Full Width === The __Shape: Contour__ curve is interpreted explicitly, allowing non-symmetrical frond shapes. //(Enumeration)// ==== Shape: Lock Aspect Ratio ==== When enabled, the frond width will increase and decrease relative to spine length. //(Boolean)// ==== Mapping ==== * **Centered Surface**: Fronds are mapped based on surface approximation from the center outwards (maintaining the center-line of the textures). //(Enumeration)// * **Surface**: Fronds are mapped based strictly on surface approximation (mapping may be heavily weighted on one side rather than staying centered). //(Enumeration)// * **Planar**: Fronds are planar mapped face down without respecting surface approximation (may result in texture stretching). //(Enumeration)// ==== Flip ==== * **None**: No flipping will occur. //(Enumeration)// * **Mapping**: Random nodes will have flipped texture coordinates. //(Enumeration)// * **Shape**: Random nodes will have flipped shapes [see __Shape: Contour__]. //(Enumeration)// * **Both**: Random nodes may have flipped texture coordinates, shapes, or both. //(Enumeration)// ==== Start ==== The percentage along the spine where frond geometry begins. //(Percentage)// ==== End ==== The percentage along the spine where frond geometry terminates. //(Percentage)// ==== Roll ==== Uniform rotation of the frond, applied after spine roll and spine alignment. //(Percentage)// ==== Count ==== The number of frond "blades". Frond blades are instances of the frond shape rotated along the spine. //(Integer)// ==== Spacing ==== The radial distance between each frond blade. A value of 1.0 results in equal distance on both sides of the frond. //(Percentage)// ^ 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. //(Float)// ==== Normals: Spread ==== Normals are fanned towards the sides of the frond. Spreading will increase for each __Frond: Shape__ segment approaching the edge of the frond. //(Float)// ==== Normals: 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. //(Float)// ==== Normals: Two Sided ==== When enabled, geometry is created on both sides of standard fronds. Does not apply to mesh fronds. //(Float)// ^ If using two sided fronds, make sure to enable backface culling on any material applied to the frond (on the color set panel).^|| ==== Normals: Invert ==== Inverts the normals on standard fronds. This does not apply to mesh fronds. //(Boolean)// ==== Mesh: Normal Bias ==== Modulates between the standard frond normals (0.0) and the normals as set in the source mesh (1.0). //(Percentage)// ==== Mesh: Offset Direction ==== **Frond** The Z-depth of mesh fronds are applied based on the shape of the __Frond: Shape: Contour__. //(Enumeration)// **Spine** The Z-depth of mesh fronds are applied in a planar fashion with the up vector defined by the spine's orientation. //(Enumeration)// ==== Mesh: Z Scale ==== Scalar for the Z-depth (height) of mesh fronds. //(Percentage)// \\ ^ __Frond: Shape: Height__ value is applied to the deforming surface, not the mesh frond itself. ^|| \\ ---- ===== Branch ===== ==== Radius Style ==== * **Absolute**: The radius of the branch is determined using real world units. //(Enumeration)// * **Relative**: The radius of the branch is a percentage of its parent node at the point where it was generated. //(Enumeration)// ==== Radius ==== The radius of the extruded branch skin. //(Float)// ^ 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. //(Boolean)// ==== Light Seam Reduction ==== The amount to bend the normals toward the spine direction. //(Float)// ^ 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. //(Percentage)// ==== Flares: Number ==== The number of flares around the branch. //(Integer)// ==== Flares: Balance ==== An interpolation between equally-spaced and randomly-positioned flares. //(Percentage)// ==== Flares: Width ==== The radial spread of each flare. //(Float)// ==== Flares: Length ==== The distance out from the initial branch radius that the flares will extend. //(Float)// ==== Flares: Height ==== The distance the flare extends up the spine of each node. //(Float)// ==== Cap: Angle ==== The rotation of the texture coordinates around the center of the cap. //(Percentage)// ==== Cap: Scale ==== Texture coordinate scale. Larger values zoom in towards the center (clamped at 1.0). //(Float)// ==== Cap: Border ==== Insets the cap from the branch proper to simulate bark thickness. //(Percentage)// ^ A cap border greater than 0.0 results in an extra ring of cap segments. ^|| ==== Cap: Offset ==== Extrudes the cap geometry in the direction of the last length segment. //(Float)// ^ Requires a __Cap: Border__ value greater than 0.0. ^|| ==== Cap: Slope ==== The length to extend one side of the cap, creating a slope. //(Float)// ^ Rotate the slope with __Cap:Angle__ ^|| ==== Welding: Enabled ==== When enabled, branches will be pushed out and fused to their parent, creating a seamless union between the two. //(Boolean)// ==== Welding: Normal Blending ==== The percentage to blend between computed branch normals and the normals from the parent branch at the point of welding. //(Percentage)// ==== Welding: Distance ==== The distance away from the parent branch skin to start the welded branch. //(Float)// ==== Welding: Upper Spread ==== The amount to spread the weld segments towards the end of the parent branch, creating a "web" where the branches meet. //(Float)// ==== Welding: Lower Spread ==== The amount to spread the weld segments towards the start of the parent branch, creating a "web" where the branches meet. //(Float)// ==== 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. ==== Intersection Blending: Texture Pull ==== The amount to extend the blended texture region up the child branch, elongating or squashing the texture mapping. //(Percentage)// ==== Intersection Blending: 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. //(Float)// ---- ===== Texture Coordinates ===== ==== Layer ==== Each layer applies only to branch geometry. Branches have two distinct sets of texture coordinates, 'Base' and 'Detail'. //(Enumeration)// * **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. ^ The detail layer is a superset of the base layer which includes additional Clamp properties. Detail textures must be present in the material to show up on the branch and are masked by the __Detail: Diffuse__ texture's alpha channel. ^|| ==== Style ==== * **Relative**: Both 'U' and V tile are computed based on the length and radius of the node. //(Enumeration)// * **U relative**: 'U' tile is computed based on the radius of the node. //(Enumeration)// * **V relative**: 'V' tile is computed based on the length of the node. //(Enumeration)// * **Absolute**: Both 'U' and 'V' tile are set explicitly. //(Enumeration)// ==== U Correction ==== * **None** - Texture mapping is applied as cylinder before skin disturbance (i.e. displacement, welding, flares). //(Enumeration)// * **Early** - Texture mapping is applied as cylinder and adjusted before skin disturbance (i.e. displacement, welding, flares). //(Enumeration)// * **Late** - Texture mapping is applied as cylinder after skin disturbance (i.e. displacement, welding, flares). //(Enumeration)// ==== 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. //(Boolean)// ==== U Tile ==== The number of times the material tiles around a branch. //(Integer / Float)// ^ If __Texture Coordinates: Style__ is set to relative, this integer becomes a float 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. //(Float)// ^ If __Texture Coordinates: Style__ is set to relative, this integer becomes a float and the actual value is a function of the length of individual nodes. ^|| ==== U Offset ==== Maximum possible 'U' offset. Each node receives a random value between 0 and this. //(Percentage)// ^ Setting the value to 1.0 ensures totally random U offsets. ^|| ==== V Offset ==== Maximum possible 'V' offset. Each node receives a random value between 0 and this. //(Percentage)// ^ Setting the value to 1.0 ensures totally random 'V' offsets. ^|| ==== Twist ==== The number of full revolutions to twist the material per 'V' tile. //(Percentage)// ==== Flip Twist ==== * **False** - Each branch twists in a counter-clockwise direction. //(Boolean)// * **True** - Each branch twists the same amount in either a clockwise or counter-clockwise direction. //(Boolean)// ==== Clamp: Style ==== "Clamping" a detail texture prohibits it from tiling. Use this to make a non-repeating mark that appears on a specific part of a branch. //(Enumeration)// * **Both › ** Clamp texture from all four sides. * **U › ** Clamp texture from Left to Right. * **V › ** Clamp texture from Bottom to Top. * **Neither › ** Do not clamp this texture. ^ Only available when editing __Layer: Detail__. Clamping streaks the last row of pixels in the clamped direction. Ensure that the detail mask is transparent at the point where the clamping occurs to avoid visible streaking. ^|| ==== Clamp: Left ==== Initial 'U' clamp percentage. //(Percentage)// ==== Clamp: Right ==== Terminal 'U' clamp percentage. //(Percentage)// ==== Clamp: Bottom ==== Initial 'V' clamp percentage. //(Percentage)// ==== Clamp: Top ==== Terminal 'V' clamp percentage. //(Percentage)// ---- ===== Materials ===== ==== Material Types ==== 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. //(Enumeration)// * **Geometry**: A named mesh asset (only applies to fronds). * **Material**: A named material from the material bank, or set to 'inherited'. * **Weight**: Probability that a node will receive this material index (this weight ÷ sum of all weights). ^ Using multiple branch maps will require additional draw calls in real-time use. Use sparingly for tiling (branch) textures. ^|| ==== Sync Index ==== When enabled (and multiple branch, cap, and fronds 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. //(Boolean)// ---- ===== Displacement ===== ==== Source ==== * **Noise**: A generic, scalable noise pattern is used for displacement. //(Enumeration)// * **Use material**: The material's height map (located in the normal map's alpha channel) is used for displacement. //(Enumeration)// * **Named Displacement Texture**: A named 'displacement map' from the Asset bar is used for displacement. //(Enumeration)// ^ The displacement source is not exported for real-time use; it is used only as a modeling aid. ^|| ==== Mapping ==== * **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. //(Enumeration)// * **Overwrite base tex coords**: Ignore the existing coordinates and map displacement explicitly by the other values in this group. //(Enumeration)// ==== Amount ==== The amount of surface displacement caused by displacement. //(Float)// ==== Jaggedness ==== The amount to offset the vertices of each branch ring. Jaggedness is necessary for creating realistic breaks when physics are enabled. //(Float)// ==== 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. //(Percentage)// ==== 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. //(Float)// ==== U Tile ==== The number of times displacement is repeated across the U direction of the geometry. //(Integer)// ^ 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. //(Float)// ^ If Displacement: Mapping is set to 'Use base tex coords', this value is a multiplier of the base V tile value. ^|| ==== U Offset ==== Maximum possible U offset. Each node receives a random value between 0 and this. //(Float)// ^ Setting the value to 1.0 ensures totally random U offsets. ^|| ==== V Offset ==== Maximum possible V offset. Each node receives a random value between 0 and this. //(Boolean)// ^ Setting the value to 1.0 ensures totally random V offsets. ^|| ==== UV Tile ==== The number of times displacement is tiled from the center of a cap. //(Float)// ==== Angle ==== Rotation offset for displacement texture. //(Percentage)// \\ \\ ---- ===== Ambient Occlusion ===== ==== Offset ==== An offset for the calculated amount of ambient occlusion. Increasing this value lessens the affect of ambient occlusion. //(Percentage)// ==== Contrast ==== The difference in brightness from the heaviest ambient occlusion to no ambient occlusion. //(Percentage)// ==== Min ==== This value clamps the least amount of ambient occlusion allowed. //(Percentage)// ==== Max ==== This value clamps the most that ambient occlusion can ever darken. //(Percentage)// \\ \\ ---- ===== Level of Detail ===== ==== Optimization ==== The target optimization amount for the lowest LOD state. //(Percentage)// ==== Segment Multiplier ==== The percentage of overall segments to keep from highest LOD to lowest LOD. //(Percentage)// ==== Length Segments ==== The percentage of length segments to keep from highest LOD to lowest LOD. //(Percentage)// ==== Radial Segments ==== The percentage of radial segments to keep from highest LOD to lowest LOD. //(Percentage)// ==== Cap Rings ==== The percentage of cap ring segments to keep from highest LOD to lowest LOD. //(Percentage)// ==== Frond Size Scalar ==== The percentage to increase the width of fronds that survive LOD culling. //(Percentage)// ==== Frond Shape Segments ==== The percentage of frond shape segments to keep from highest LOD to lowest LOD. //(Percentage)// ==== Frond Count ==== The number of fronds per spine node to keep from highest LOD to lowest LOD. //(Percentage)// ^ Requires a frond count greater than 1. ^|| ==== Branch Volume Threshold ==== The maximum branch volume allowed from highest LOD to lowest LOD. //(Percentage)// ==== Cap Threshold ==== The maximum cap area allowed from highest LOD to lowest LOD. //(Percentage)// ==== Frond Area Threshold ==== The maximum frond area allowed from highest LOD to lowest LOD. //(Percentage)// ==== Frond Mesh Index ==== Switches the LOD mesh used from highest LOD to lowest LOD. Lower LOD meshes can be forced sooner by lowering this value. The last found LOD mesh is used for all empty LOD mesh slots. //(Index)// ==== Bones ==== The percentage of bones to keep from highest LOD to lowest LOD. //(Float)// \\ \\ ---- ===== Wind ===== ==== Apply ==== Apply wind at this level. //(Boolean)// ^ Wind can only be applied to 2 distinct branch levels. ^|| ==== Weight ==== The strength of the wind effect on this set of nodes. //(Float)// ^ 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). //(Percentage)// ==== Group ==== When leaf style fronds are enabled, this selects a "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. //(Enumeration)// ==== Frond: Ripple Scale ==== Controls how much this frond adheres to the frond rippling distance values set on the global wind settings. //(Percentage)// ==== Edit Global Wind ==== Selects the fan object, allowing the alteration of all global wind settings. //(Function)// \\ \\ ---- ===== Growth ===== ==== Speed Scale ==== The speed at which a branch will grow is set on the 'Timeline bar'. Use this property to scale that value. The profile curve scales the speed relative to the branch's total growth time. For example, ease in and out of the growth animation by using an 's-curve'. //(Float)// ==== Radius ==== This profile curve 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's growth cycle. //(Profile Curve)// ==== Smoothing ==== Branches can either be oriented 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. //(Float)// ==== Start Scalars: Size ==== Sets the minimum size a branch must be if it appears at all in the animation. Leave this value at 0.0 for most cases. It can be used to force branches to appear partially grown for special circumstances. //(Percentage)// ==== Start Scalars: Start angle ==== The initial 'Start angle' for the branch is scaled by this value. Use values less than 1.0 to make branches appear to "fold out" of their parent. //(Percentage)// ^ It is normally a good idea to ease out of this effect using the profile curve. ^|| ^ Small values on welded branches may cause weld failures and noticeable popping. ^|| ==== Timing: Sync With ==== Sets the conditions under which the branch will start growing. The 'Start %' property works according the option selected here. Options include: //(Enumeration)// * **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. * **Siblings** - The growth of this branch is timed such that all branches like this at this level grow together. Use this option to help synchronize entire levels of branches. A 'Start %' of 0.0 means start as early as you can, 1.0 means start as late as you can. * **Paren't Start and End** - This branch will start and stop in perfect synchronization with its parent. 'Start %' has no effect. This option is good for features like roots. * **In Place** - The branch will start growing exactly when the parent is long enough to reach its starting point in the fully grown model. 'Start %' has no effect. This style makes the animation appear to trace out the model as in the vines growing over rocks example. ==== Timing: Start % ==== Causes branches to start early (0.0) or late (1.0) according to the 'Sync With' property as described above. //(Percentage)// ==== Timing: Offset ==== The start frame is shifted by a constant value (negative means earlier, positive means later). This number is not set in terms of frames but is instead computed relative to the global growth speed as set on the 'Timeline bar'. This value is best used to "jumble up" start times of neighboring branches. //(Float)// ^ 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 0.2 and a variance of 0.2 as well. That way the earliest any branch will start is when it was supposed to, but some will be delayed. ^|| ==== Mapping: Pull Texture ==== 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 groun). When disabled, the texture appears to be revealed as it grows (the V coordinates are constant). //(Boolean)// ==== Mapping: Animate Displacement ==== 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. //(Boolean)// \\ \\ ---- ===== Physics ===== ==== Use Frond Geometry ==== When enabled, frond geometry is made physical as well. //(Boolean)// ==== Bone Style ==== * **Relative** - The number of bones is based on the length of the spine. //(Enumeration)// * **Absolute** - The number of bones is explicitly set per-node. //(Enumeration)// ==== Bones ==== The number of bones generated along the length of spines (analogous to __Segments: Length__) (//Integer / Float)// ^ If Bone Style is set to relative, this integer becomes a float 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. //(Percentage)// ==== Length Scalar ==== The percentage to scale the length of the bones. //(Percentage)// ==== Density ==== The weight and stiffness of branch geometry in physics calculations. //(Float)// \\ ===== 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. //(Float)// \\ \\ ----