foliage

Create foliage types and scatter vegetation instances on Unreal Engine landscapes and meshes.

648|142|Updated Sep 12, 2025
One-click install
npx skills add https://github.com/kevinpbuckley/VibeUE --skill foliage
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: foliage
Source: https://github.com/kevinpbuckley/VibeUE/tree/main/Content/Skills/foliage
Command: npx skills add https://github.com/kevinpbuckley/VibeUE --skill foliage

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve?

Placing trees, grass, bushes, and rocks across a level by hand is slow and inconsistent. This Skill automates foliage type creation and instance scattering in Unreal Engine through the FoliageService, with reproducible seeds, surface tracing, and paint-layer-aware placement.

Core Features & Use Cases

  • Foliage Type Creation: Build persistent, reusable UFoliageType assets from any static mesh with custom scale ranges, slope limits, alignment, and cull distances.
  • Scatter & Placement: Scatter instances in circles or rectangles, place at exact coordinates, or restrict placement to painted landscape layers above a weight threshold.
  • Query & Removal: List foliage types, count or query instances in a radius, and remove foliage selectively or clear an entire level.
  • Use Case: Populate a terrain with a multi-species forest by scattering oak, pine, birch, and bush meshes with different densities and scale ranges using a fixed seed for reproducible results.

Quick Start

Use the foliage skill to scatter 200 instances of /Game/Meshes/SM_Tree_01 within a 5000-unit radius at the origin with seed 42.

Frequently Asked Questions about foliage

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I scatter foliage on a landscape in Unreal Engine with Python?▼

Call unreal.FoliageService.scatter_foliage with a mesh path, center coordinates, radius, and instance count. The service traces downward to find the ground surface and places instances with random yaw and scale within your min/max range.

How do I place foliage only on a painted landscape layer?▼

Use scatter_foliage_on_layer with the landscape name, layer name, and a layer weight threshold between 0.0 and 1.0. Instances are only placed where the painted layer weight exceeds the threshold.

Why does foliage scattering return zero instances added?▼

Zero placements usually mean every candidate failed the surface trace or layer weight check. Verify the scatter area overlaps the painted part of the landscape, since landscapes are corner-anchored and extend only in positive X and Y from their origin.

Can I make foliage scatter results reproducible?▼

Yes, pass a nonzero seed parameter to any scatter method. The same seed with the same parameters produces the same layout, while seed 0 generates a random pattern each run.

Does clear_all_foliage remove foliage type registrations?▼

No, clear_all_foliage removes all instances from the level but foliage type entries remain registered with zero instances. Use remove_foliage_in_radius for targeted removal instead of clearing the entire level.