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.