====== SubDiv Generator ====== {{ :generator_subdiv.jpg?140|}} \\ ===== 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)// {{ :force_combo.png?200|}} ==== Forces ==== **Enabled** (checkbox)\\ While all forces in the scene are listed in this group, only enabled forces affect this generator. ^ Click on the colored square to the right of the force name to edit its properties. ^|| \\ \\ ===== 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?40 |}} **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)// \\ \\ \\ ===== 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. ^|| ==== 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 Rings ==== The number of rings 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. ^|| \\ \\ ---- ===== 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)// ==== Roll ==== Uniform rotation of each spine. Roll is applied after __Spine:Alignment__. //(Percentage)// ==== 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.^|| ==== Return ==== Forces the spine node to return to it's original growth path as if none of the 'Perturbance' properties were ever applied, even though in reality they are still in effect. ^ Helpful when trying to recreate a tree with many knots and jinx, while keeping the trunk or branch on it's original direction of growth. ^|| ==== Seed ==== Randomizes the values entered of the 'Perturbance' properties. \\ \\ ---- ===== 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.^|| In the Hand Drawn group, there are 2 sets of properties: 'New' and 'Resample'. The properties under 'New' is applied to any nodes that will be created, while the properties under 'Resample' effects any of the nodes that already have been created. ==== 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. \\ \\ ---- ===== 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. ^|| \\ ==== Intersection: Smooth ==== This controls how far away the child's ring is from the parent. The closer the child's ring is to the parent then the harsher the intersection is and the further out the child's ring is then the smoother the intersection is. //(Float)// ==== Intersection: Relax Scale ==== Averages out the vertices at the conjunction in order to remove artifacts. ==== Intersection: Upper Spread ==== The amount to spread the weld segments towards the end of the parent branch, creating a "web" where the branches meet. //(Float)// ==== Intersection: 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: Texture Pull ==== The amount to extend the blended texture region up the child branch, elongating or squashing the texture mapping. //(Percentage)// ==== Intersection: Texture Density ==== The denseness of the texture applied around the intersections. \\ ==== 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)// ==== Flares: Pinch ==== Compresses the flare area for a more compact and denser look with out affecting the radius of the area where the vertices intersect. ==== Flares: Twist ==== Rotates the end of the flares, which is furthest away from the intersection, around the center spine. ==== Flares: Seed ==== Randomizes the values of the 'Flare' properties. \\ ---- ===== Cap ===== ==== 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: Lip ==== The length of the ring edge surrounding the end of a trunk or branch. ==== Cap: Lip Sharpness ==== The width of the cap's ring edge. Scales from 0 to 1; at 0 the cap has a thin edge and at 1 it has a thick edge. ==== Cap: Angle ==== The rotation of the texture coordinates around the center of the cap. //(Percentage)// ==== Cap: Slope ==== The length to extend one side of the cap, creating a slope. //(Float)// ^ Rotate the slope with __Cap:Angle__ ^|| \\ ---- ===== 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. ^ 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 Tile ==== The number of times the material tiles around a branch. ^ 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 ==== 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. ^|| ==== 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)// ==== Cap: Angle ==== Allows for a 0 to 360 degree rotation of the texture assigned to the cap's surface. ==== Cap: Coverage ==== Scales the texture assigned to the cap's surface. \\ \\ ---- ===== 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 ===== Under this property set, there are two groups in which the controls listed below will effect; 'Branch' and 'Cap'. ==== 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)// ==== Direction Offset ==== The amount to offset the vertices of each branch ring. Jaggedness is necessary for creating realistic breaks when physics are enabled. //(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. ^|| ==== 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)// ==== UV Tile ==== The number of times displacement is tiled from the center of a cap. //(Float)// ==== Angle ==== Rotation offset for displacement texture. //(Percentage)// \\ \\ ---- ===== 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)// \\ \\ ---- ===== 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)// \\ \\ ---- ===== 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. 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)//