unreal.PVTrunkGrowthParams

class unreal.PVTrunkGrowthParams

Bases: StructBase

PVTrunk Growth Params

C++ Source:

  • Plugin: ProceduralVegetationEditor

  • Module: ProceduralVegetation

  • File: PVGrowerParams.h

Editor Properties: (see get_editor_property/set_editor_property)

  • apical_child_growth (float): [Read-Write] Apical priority multiplier for side branches.

    Higher = side branches keep extending longer. Lower = side branches stop after fewer cycles, producing short stubs.

  • apical_child_ramp_basis (PVRampBasis): [Read-Write]

  • apical_parent_growth (float): [Read-Write] Apical priority multiplier for the trunk.

    Higher = the trunk’s apical tip extends more reliably each cycle. Lower = the trunk slows or stops earlier (more determinate growth).

  • apical_priority_child_gradient (PVFloatRamp): [Read-Write] Separate apical priority ramp for side branches.

  • apical_priority_gradient (PVFloatRamp): [Read-Write] Curve controlling apical tip extension likelihood vs. position.

    X axis = normalized position. Y axis = priority threshold. Apical activation requires a random roll below Y. Set Y at the high end to 0 for determinate plants (trunk stops at PlantTargetLength). Keep Y > 0 throughout for indeterminate (continuously growing) plants.

  • apical_ramp_basis (PVRampBasis): [Read-Write] Length used to normalize the apical priority ramp.

    Same idea as AxillaryRampBasis. Default is BranchTargetLength — branches use their own target. Switch to PlantTargetLength for plant-wide apical scaling.

  • apical_use_child_gradient (bool): [Read-Write] Use a separate apical priority ramp for side branches.

    When on, side branches use ApicalPriorityChildGradient instead of ApicalPriorityGradient. Useful for letting side branches keep growing past the trunk’s stop point.

  • axillary_child_growth (float): [Read-Write] Axillary priority multiplier for side branches (Generation 2+).

    Same as AxillaryParentGrowth but applied to side branches. Use to control how dense the inner foliage is independent of trunk branch density.

  • axillary_child_ramp_basis (PVRampBasis): [Read-Write]

  • axillary_parent_growth (float): [Read-Write] Axillary priority multiplier for the trunk (Generation 1).

    Scales the axillary priority gradient’s output for the trunk. Higher = more side branches on the trunk. Lower = sparser trunk branching.

  • axillary_priority_child_gradient (PVFloatRamp): [Read-Write] Separate axillary priority ramp for side branches.

    Use independently from AxillaryPriorityGradient to give side branches different density behavior.

  • axillary_priority_gradient (PVFloatRamp): [Read-Write] Curve controlling axillary bud activation likelihood vs. position.

    X axis = normalized position along trunk (or branch, per ramp basis). Y axis = priority threshold. Buds whose random roll falls below this curve activate. Set Y to 0 at the bottom to prevent branches in the lower trunk; set Y high at the top for denser canopy branching.

  • axillary_ramp_basis (PVRampBasis): [Read-Write] Length used to normalize the axillary priority ramp.

    PlantTargetLength: ramp spans the whole plant terminal length. BranchTargetLength: ramp spans each branch’s individual length. Choose based on whether side-branch density should depend on plant-wide height or per-branch distance.

  • axillary_retry (bool): [Read-Write] Allow failed axillary buds to retry in later cycles.

    When on, buds that failed to activate this cycle (due to light, randomness, or apical dominance) are still eligible to activate next cycle. When disabled, a failed bud is permanently dormant. Enabled creates more deterministic plants; on is more natural.

  • axillary_use_child_gradient (bool): [Read-Write] Use a separate axillary priority ramp for side branches.

    When enabled, side branches use AxillaryPriorityChildGradient instead of inheriting the trunk’s AxillaryPriorityGradient. Useful for plants where branching density differs along trunk vs. side branches.

  • branch_scale (float): [Read-Write] Multiplier on SegmentLength for side branches.

    Below 1 = side branches grow shorter steps than the trunk (tree-like tapering). Above 1 = side branches outgrow the trunk (spreading, bush-like). 1.0 = uniform across trunk and branches.

  • branch_target_length (float): [Read-Write] Target length for side branches; 0 = unlimited.

    Same as PlantTargetLength but applied to branches. 0 = branches grow until resources run out. Set a finite value to create uniform side-branch lengths.

  • corymb (float): [Read-Write] Flattens the crown by letting lower branches grow longer.

    Higher values allow lower lateral branches to elongate beyond their parents’ length, producing a corymb (flat-topped) crown shape — common in hawthorn or broccoli.

  • incremental_radius (float): [Read-Write] How much each branch thickens per cycle (in meters).

    Simulates secondary wood growth (girth increase). Default 0.0033 m/cycle = 3.3 mm/year. Thicker branches are stiffer (resist gravity better) and immune to senescence above RetentionRadius.

  • length_bias (float): [Read-Write] Minimum guaranteed fraction of SegmentLength per step.

    Even when other factors (light, hormones, randomness) would shorten a step, this bias ensures at least this fraction is added. Prevents branches from stopping entirely. Higher = more consistent growth despite stress.

  • length_light_impact (float): [Read-Write] How light level affects internode length.

    Positive: branches in bright spots grow longer segments (sun-loving species). Negative: shaded branches stretch longer toward light (etiolation — climbing vines, shade-stressed saplings).

  • light_randomness (float): [Read-Write] Random variation in light-driven length response.

    Higher values produce less uniform light response, making the plant look more natural and less computed.

  • max_generation (uint8): [Read-Write] Maximum branching depth.

    1 = trunk only. 5 = trunk + 4 levels of side branches. Higher values allow finer detail but increase generation time. Most trees look complete with 8-15.

  • plant_target_length (float): [Read-Write] Target height for the main trunk in meters.

    The trunk’s priority gradient is normalized to this distance. After reaching this height, the apical priority typically drops to near-zero (determinate growth) or stays positive (indeterminate growth) depending on the gradient curve.

  • seed_scale_effect (float): [Read-Write] How much seed-point scale influences final plant size.

    At 1.0, the seed point’s scale attribute directly multiplies the plant’s size. At 0.0, seed scale is ignored. Useful when scattering seed points of varying sizes from PCG and you want either uniform plants (0) or size-variable plants (1).

  • segment_length (float): [Read-Write] Length of each internode in meters.

    Distance between consecutive growth points along a branch. Smaller = denser, compact plants. Larger = open, airy structure. This is the core control for plant scale relative to GrowthCycles. Default 0.25 m = 25 cm per growth step.

  • whorled_radius_impact (float): [Read-Write] How much each branch in a Whorled phyllotaxy reduces the parent’s effective radius.

    Only relevant when Whorled phyllotaxy spawns multiple side branches at one node. Higher = more radius reduction per branch (mimics the natural taper of a heavily-branched node). 0 = no reduction.