FunByDefault · Unreal Engine

Vine Generator

Create climbing, branching and hanging vines, direct their growth, choose foliage, and save finished geometry as Static Mesh assets.

Start with a saved vine

  1. Enable Vine Generator and restart Unreal Editor if prompted. In the Content Browser settings, enable Show Plugin Content.
  2. Drag a vine Blueprint from /VineGenerator/Presets into your own level near a surface with collision. The actor's forward direction supplies the initial growth direction.
  3. Select the actor and press Generate / Regenerate Vine in Setup & Generate. Read the status message in that section if the result is empty or stops early.
  4. When you like the overall shape, press Keep Current Variation in Variation. Adjust length, branching or leaves, then regenerate to compare your changes using the same seed. New Variation generates another plant.
  5. Save the level. Regenerate When Play Starts is off by default, so the saved generated mesh is used in play. Enable it only when the plant should grow again at runtime.

Generation needs valid collision surfaces for surface crawling. Guides influence direction while collision and turn limits remain in effect. A guide behind a wall cannot pull a stem through the wall.

Find the settings you need

Start with the open Setup & Generate and Variation sections. Expand another section when you need it; the small advanced-properties arrow reveals specialist controls. Hover a setting for its purpose, units and dependencies. Controls for disabled features stay hidden until that feature is enabled.

What you want to change Where to start
Overall size and amount of branching Setup & Generate, then Branching
Keep a result while tuning, or try a new plant Variation
Starting surface or attachment distance Find a Surface
How stems follow walls or hang between supports Surface Growth and Hanging Growth
Leaf species, color, size or density Leaves
Stem thickness and material Stem Appearance
A specific path, a clear doorway or a trim Guides & Pruning
Movement during play Runtime Motion
A finished Static Mesh asset Static Mesh Export
An incomplete result or a budget limit Setup & Generate status, then Generation Statistics and Performance
Optional pooling with a spawner Spawner Integration

New Seed Each Generation is enabled by default. Keep Current Variation copies Last Used Seed into Seed and disables that automatic randomization without rebuilding the plant. A fixed seed makes comparisons useful, but changes to collision, guides, actor transforms or growth settings can still alter the shape. New Variation creates a fresh result without changing the automatic-randomization preference. Clear or review existing pruning rules before changing the composition.

Direct the plant

  1. Place a Vine Growth Guide actor in the level and choose Guide Mode under Setup.
  2. Position the attractor, edit the spline or frame the exclusion box using the controls below. Leave Guide Enabled checked.
  3. Select the vine, expand Guides & Pruning, and add an element to Growth Guides. Use its actor picker or eyedropper to select the guide you placed. Repeat for other guides that should affect this vine.
  4. Press Generate / Regenerate Vine. Regenerate again after moving, resizing, disabling or editing any assigned guide.

Only assigned guides affect a vine. A guide can be assigned to several vines, and each affected vine needs regeneration after an edit.

Guide mode Use Main controls
Attractor Encourage tips toward a target Move the guide actor; set Influence Radius and Steering Strength
Guide Spline Encourage a path around an arch or along a structure Editable spline points, Spline Look Ahead, Influence Radius
Exclusion Box Keep stems and leaves out of a doorway or window Exclusion Box component's Box Extent, actor rotation and scale

For a spline, select the Guide Spline component and edit its points in the viewport. The spline's point order is the travel direction. Guide Influence blends guided and natural growth. Guide Child Branches Too controls whether attraction and spline steering affect child branches. Exclusions always apply to every branch and are checked over whole stem intervals, including stem radius.

The guide shows only the settings relevant to its mode. Influence Radius is measured in centimeters from an attractor or the nearest spline point; place the path within that distance of the growing stem. Spline Look Ahead chooses a target farther along the spline. The advanced Arrival Radius softens steering near the target. For an exclusion, select the Exclusion Box component and adjust Box Extent, or scale and rotate the actor. Box Extent is the half-size, so an X extent of 100 cm makes a 200 cm wide box before actor scaling. Keep the vine's starting point outside the box.

Exclusions stop a branch that cannot find a valid advance. They do not plan a route around an obstacle. They also add no gameplay collision: later free-span dynamics can move a stem into an excluded region. Existing plants change only after regeneration.

Prune an unwanted stem

  1. Generate the vine and expand Guides & Pruning.
  2. Select Pruning Marker (Local Position) and move its viewport handle onto the unwanted stem. Increase Pruning Pick Radius if the marker is difficult to place.
  3. Press Prune At Marker to shorten the nearest stem. Enable Remove Whole Branch at Marker first to remove that branch and its descendants.
  4. Read Pruning Status if no stem was selected. Save the level to retain the trim.

Pruning records branch identifiers and lengths and fixes the plant's last generation seed. Unrelated branches keep their random choices because the complete plant is simulated before the trims are applied. Pruning reduces visible geometry; it does not reduce the original growth simulation budget.

Keep the seed, growth settings, guide layout and collision environment stable while editing trims. A changed plant can have different branch identifiers. Use Clear Pruning And Regenerate before changing the composition substantially. For Blueprint tools, use Find Nearest Vine Branch, Get Generated Branch Ids and Prune Branch.

Choose foliage

Existing vines keep Legacy Textured leaves. In Leaves, choose Ivy, Heart Leaf, Lance Leaf, Monstera or Virginia Creeper, select Spring, Summer, Autumn or Dry, and press Apply Selected Foliage Preset. This resets the selected species' foliage size, spacing, fold, tint and rotation defaults while preserving the growth and seed. Press Generate / Regenerate Vine to update the geometry.

The five species use modeled silhouettes and separate foliage material sections. The six supplied modeled-species Blueprint presets include photographic leaf color, normal and roughness detail. Their reusable materials are under /VineGenerator/Materials/Foliage, with textures under /VineGenerator/Textures/Foliage. Start from the matching Blueprint preset, or assign its MI_VineGenerator_* material to Leaf Material. Changing Leaf Style does not automatically replace the assigned material; native and legacy defaults remain unchanged. Leaf Tint, Leaf Color Variation and Leaf Roll Variation provide deterministic variation. Density, spacing, size and maximum leaf count remain independently adjustable. Seasonal palettes change color without automatically changing leaf density.

To change only the palette after tuning a plant, change Leaf Season and regenerate. Apply Selected Foliage Preset reapplies the species defaults, including size and spacing. Virginia Creeper places a compound group of five leaflets at each leaf placement; Monstera uses a broad blade with narrow splits along its edges.

The Presets folder contains eleven starting points: the original Climbing, Hanging, Dense and Lightweight vines, plus Ivy Spring, Ivy Autumn, Heart Leaf Summer, Lance Leaf Dry, Monstera Summer, Virginia Creeper Autumn and Custom Leaf. Photographic surface detail does not change the modeled leaf outline; inspect silhouettes at your intended viewing distance, or prepare custom geometry for a different shape.

Press Keep Current Variation before comparing foliage to reuse the current plant's seed. Use New Variation when you want a different plant.

Use your own leaf mesh

  1. Import a small leaf Static Mesh. Orient its base-to-tip direction along +X, width along Y, and front normal along +Z. The preparation step normalizes its pivot and size.
  2. Select one placed vine and expand Custom Leaf Preparation. Choose Source Leaf Static Mesh, Source Mesh LOD and a new Save Leaf Asset As path, such as /Game/Vines/LeafMesh. Use an imported or authored LOD with editable source geometry; automatically reduced render-only LODs cannot be prepared.
  3. Press Prepare and Assign Custom Leaf Mesh, then Generate / Regenerate Vine. A reusable Vine Generator Leaf Mesh asset is saved and assigned.

Preparation requires UV0, positive mesh build scales and saved materials in every used slot. It copies geometry, UV0, vertex colors and material sections into a data asset that is retained by cooking. The source Static Mesh does not need Allow CPU Access for runtime growth. The source limit is 4,096 vertex instances (UV and normal seams count separately), 8,192 triangles and eight nonempty sections per leaf template; choose much smaller leaf geometry for dense plants.

Custom materials control their own opacity and shading. To use per-leaf tint, multiply the material's base color by Vertex Color RGB. Use Seasonal Tint On Custom Leaves is off by default to preserve imported art. Additional source UV channels are not imported. Existing leaf destination assets are preserved: choose a new name when preparing a revision, then assign the new asset.

Export a finished vine

  1. Select one completed vine and expand Static Mesh Export. Disable Simulate Free Spans At Runtime when exporting a vine with unsupported spans as static scenery.
  2. Set Save In Folder to a project Content folder such as /Game/Vines. Enter Asset Name (Optional), such as SM_Vine_Wall, or leave it empty to use the actor label. Save assigned Material and Material Instance assets first; dynamic material instances cannot be stored in the export.
  3. Start with LOD Count set to one and Enable Nanite disabled. Optionally choose up to four LODs including LOD0, and enable Add Collision to Export or Place Exported Mesh in Level.
  4. Press Export Static Mesh. The asset appears in the Content Browser; the status explains the result.

LOD0 retains the visible source geometry, material slots, UV channels, vertex colors, normals and tangents. Export creates a unique asset and retains the editable vine. Optional actor placement is undoable; it overlaps the source until you move or hide one of them. The exported mesh is a static snapshot: procedural growth, editable guides and free-span simulation remain on the source vine.

Save the level after placing an exported actor. If asset saving fails, the built asset remains unsaved in the Content Browser and no actor is placed. Resolve the destination's write permissions and save the asset before using it.

Lower LODs use Unreal's installed Static Mesh reducer. Each enabled triangle target is a percentage of original LOD0, must be at least 1%, and must be lower than the preceding LOD's percentage. Small leaves may disappear or change shape, so inspect every generated LOD at its intended viewing distance. Reduction targets are approximate, and screen-size thresholds are selected automatically. Source vertex and triangle budgets are checked against LOD0; adding reduced LODs does not lower that source cost. Complex triangle collision is suitable for static scenery and cannot be used as a simulated rigid body's simple collision.

Nanite

Nanite is optional for exported meshes and population batches with supported opaque or masked surface materials. It also requires compatible project settings, rendering configuration and hardware. Masked foliage can be expensive even with Nanite; profile the result in your own scene. Nanite does not make growth simulation cheaper.

On Windows, open Project Settings > Platforms > Windows, choose DirectX 12 as the default RHI, and enable Shader Model 6 (SM6) under the DirectX 12 targeted shader formats. In Project Settings > Engine > Rendering, ensure Nanite is enabled in the Nanite section, then restart the editor. Export rejects targets that cannot retain Nanite data and explains the required setup in its status. Keep Nanite disabled when exporting for an unsupported target.

Combine a population

For your first population, keep generation editable while you check the placement:

  1. Place a Vine Generator Spawner Volume around the surfaces you want to cover. Select its Spawn Volume component to edit Box Extent, or scale and rotate the actor.
  2. In Setup & Generate, choose a Vine Preset / Class, then start with a small Vine Count. The spawner uses the selected class's growth and foliage settings; configure a Blueprint preset first when you want a shared look.
  3. Expand Runtime Movement. For static scenery, set Runtime Movement to Disable Free-Span Dynamics. The spawner otherwise requests motion for a bounded subset by default, even though standalone native vines start with motion disabled.
  4. In Save & Optimize, disable Auto Batch After Editor Spawn while adjusting individual plants. Press Spawn Vines, then follow the progress shown in Setup & Generate until the final meshes are ready.
  5. When you want to replace the whole population after a settings change, use Respawn Vines. With Fill Only Missing Vines enabled by default, Spawn Vines only adds missing vines; it preserves existing ones. To repeat placement, expand Layout & Variation, press Reuse Last Seed, then respawn. This copies Last Used Population Seed into Population Seed and disables New Layout Each Batch. Matching placement also requires the same volume, settings and environment.

Select a Vine Generator Spawner Volume and expand Save & Optimize. Set Generated Mesh Folder and expand Population Mesh Build Settings for the same LOD and Nanite controls as individual export. Press Build Population Render Batch after generation finishes. Compatible static vines are combined into spatial chunks with their materials; vines that require runtime actors, including free-span dynamics, remain individual.

Auto Batch After Editor Spawn is enabled by default. Enable Keep Editable Source Vines before spawning or building if you want Restore Individual Vines to recover the exact editable actors. With this option off, batching removes the source actors; use Respawn Vines with the recorded population seed to generate them again. Automatic batching of Blueprint subclasses is separately disabled by default; Auto Batch Vine Actor Subclasses opts into removing their per-instance actor identity and runtime behavior.

Save the level after building or restoring. Keep the generated mesh assets and managed collision proxy with the population. Changed geometry or LOD settings create new assets; older batch assets are retained because other levels may reference them. If a batch does not complete, read the status in Setup & Generate and Last Population Batch Result in Diagnostics.

Runtime and performance

Before using runtime growth in a map with baked or volumetric lighting, select a vine or spawner and open Performance > Runtime Setup. Click Enable Full Lightmap Precaching, then restart Unreal Editor. This explicit action saves one project-wide setting in Config/DefaultEngine.ini; it prepares additional material pipelines before vines appear and can increase initial preparation work. It does not change the map's lighting. Check Runtime Setup reports whether coverage is active, needs a restart, or is limited by another project override. This checks configuration, not game performance.

If your project configuration is read-only, check it out through your revision-control provider or use Copy Setting. Merge this key into the existing renderer section of your project's Config/DefaultEngine.ini, then restart:

[/Script/Engine.RendererSettings]
r.PSOPrecache.LightMapPolicyMode=0

The setting is supported on UE 5.4–5.8. Test first-use growth and repeated generation in a packaged scene on the target graphics API and hardware; editor results and a successful setup check do not establish packaged frame times. If PSO precaching or background preparation has been disabled elsewhere in your project, the setup check explains that limitation without changing those settings.

For runtime growth, enable Regenerate When Play Starts or call Start Growth / Reset And Regrow from Blueprint. Growth and final mesh generation are bounded by the plugin's scheduler and actor budgets. A large custom leaf is repeated many times, so watch the actor's vertex, triangle and leaf limits as well as draw calls.

In Setup & Generate, Show Only Finished Vine is enabled by default and hides intermediate runtime growth. Disable it to watch the vine grow over time. Leave Regenerate When Play Starts disabled for scenery that should retain its saved editor appearance.

If your runtime code loads assets only from plain asset-path strings, explicitly include their folders when packaging. In Project Settings > Packaging, find the advanced Additional Asset Directories to Cook setting and add the needed folders, such as /VineGenerator/Presets or /VineGenerator/Foliage, then test a packaged build. Assets placed in cooked maps or reached through normal asset references follow Unreal's usual cook dependencies.

Free-span dynamics are opt-in. They simulate selected unsupported stem sections and do not animate a Static Mesh export. Regenerate after enabling Simulate Free Spans At Runtime so the saved result contains the required motion data. Keep Generate Gameplay Mesh Collision disabled on that vine; moving spans use their own environment sweeps. With this option enabled, leaves are generated on surface-attached stems; unsupported moving spans remain bare. Use the status and budget diagnostics when tuning a population, and measure representative packaged scenes on your target hardware.

In Runtime Motion, press Check Motion Setup after generation to inspect whether the saved vine is ready for play. The Last check message reports that inspection; check again after changing settings or regenerating. If there are no unsupported spans, the vine has nothing to move. When the check reports readiness, press Play to see the motion.

Prefer saved meshes or Static Mesh exports for scenery that will not grow during gameplay. Use lower leaf density, fewer branches, shorter total length and smaller custom leaf templates before raising safety budgets.

Troubleshooting

Symptom Check
Vine does not grow Initial surface collision, actor position and direction, growth result and configured limits
Every regeneration changes the whole plant Use Keep Current Variation before tuning; New Seed Each Generation otherwise picks another seed
Guide has no effect Guide assigned to this vine, enabled state, correct mode, influence radius, steering strength, then regenerate
Vine disappears after adding an exclusion Keep its starting point outside the Exclusion Box and read the Setup & Generate status message
Pruning selects nothing Move marker closer to a visible stem, increase selection radius, read Pruning Status
Custom leaves missing Prepared asset assigned and valid, leaf count/geometry budgets, valid persistent materials
Custom leaves ignore tint Material reads Vertex Color RGB; seasonal tint must be enabled explicitly for custom art
Export disabled or rejected Select one placed vine outside Play/Simulate, wait for final mesh application, and disable unsupported-span simulation for a static export
Lower LOD loses leaves Increase retained triangle percentage, use fewer LODs, inspect reduction in Static Mesh Editor
Nanite export rejected Use supported opaque or masked surface materials, enable Nanite support and a supported target shader format, then restart; on Windows use DirectX 12 with SM6
Restore Individual Vines unavailable Keep Editable Source Vines must have been enabled before batching; otherwise regenerate with Respawn Vines
Spawner changes do not affect existing plants Use Respawn Vines; Spawn Vines preserves existing plants and fills missing slots by default
Saved level changes at play Turn off Regenerate When Play Starts if the saved editor result should be used

Support: FunByDefault Discord.