mcpbeat

Threejs Procedural Vegetation

scottstts/threejs-procedural-vegetation

Generate authored procedural trees, grass, ivy, and vegetation in Three.js. Use for surface-following vines, painted ivy paths, stylized or GPU grass, trunks, recursive branches, roots, canopies, leaf cards, species presets, deterministic growth, and rooted blade or petiole-hinge wind.

711k tokens
context cost
the whole folder, loaded on every use
21
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
527
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/scottstts/Threejs-Awesome-Graphics-Agent-Skills --skill threejs-procedural-vegetation

The instruction itself

4 sections, as written by the author

Procedural Vegetation

Represent a plant as a growth hierarchy plus rendering adaptations. Do not model it as randomly scattered cylinders.

Build sequence

  • Define a per-level species table: length, radius, taper, child count, emergence range, angle, twist, gnarliness, sections, radial segments.
  • Grow branches iteratively from a queue so recursion depth and budgets remain inspectable.
  • Emit each branch as oriented rings with an intentional UV seam.
  • Update section orientation from:
  • inherited direction;
  • stochastic curvature;
  • tropism or external force;
  • optional attraction constraints.
  • Spawn children with stratified longitudinal slots and independently permuted angular slots.
  • Generate leaves only after branch topology is stable.
  • Build foliage normals from both card orientation and local crown volume.
  • Choose wind scope explicitly. Leaf-root deformation, branch hierarchy deformation, and whole-tree sway are separate systems.

Read references/structured-ash-growth-system.md and preserve its preset, continuation, child-placement, leaf, material, wind, and composition contracts before tuning.

Read the Ash Growth System implementation

with its authored preset for a

contract-accurate implementation and its diagnostic attributes.

Read the

stylized meadow grass implementation

for authored blade-cluster geometry with a procedural fallback, image-driven

path masking, per-instance origin/facing attributes, circular-arc rooted wind,

gust fronts, tip flutter, color clumps, macro variation, translucency, and rim

diagnostics.

Read the

GPU-computed grass implementation

for MRT blade-parameter generation, deterministic terrain-conforming placement,

Voronoi clumps, Bezier blade folding, wind-facing yaw, distance LOD/culling,

normal/color fading, translucency, and field diagnostics.

Read the

procedural surface ivy entry

and its complete

TypeScript implementation

for seeded spline-following stems, repeated mesh reprojection, tangent-plane

creep and droop, parallel-transport tube rings, growth reveal, instanced leaves

and umbels, and rigid petiole-hinge wind. Treat the TypeScript modules as the

only implementation; the entry file only re-exports them.

Visual failure conditions

  • branches form visible helices;
  • dense grass ignores terrain height or clump-level variation;
  • every child emerges at the same relative height;
  • bark texture scale changes with branch radius;
  • leaves reveal flat card normals under rotation;
  • leaf wind moves card roots instead of remaining anchored;
  • branch wind is claimed to match a reference whose branches are static;
  • different seeds change species identity rather than controlled variation;
  • geometry cost grows without a per-level budget;
  • surface-following stems are offset from the host or flip normals across seams;
  • ivy branches ignore the tangent plane while attached;
  • leaf wind rotates around the card center instead of the petiole.

Routing boundary

Use $threejs-procedural-geometry for generic branch-ring emission without a

growth model. This skill owns species tables, vine and branch topology,

surface-following growth, foliage, grass fields, roots, and rooted wind.

How to use it

Copy the folder

Take scottstts/threejs-procedural-vegetation from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.