Spooky Lantern Tree
A gnarled dead tree, about 5 m tall, its twisting bare branches hung with glowing lanterns on strings: little carved pumpkin lanterns, round paper lanterns, or both. Seeded so every tree branches differently; the lanterns sway gently on their strings and their carved faces or paper shades glow at night.
- Size
- 6.0 × 4.6 × 4.7 m
- Triangles
- 2,200
- Kit
- Halloween
Tune it
5 knobs: Lanterns, Lanterns, Bark, Height, Seed.
Specs
- Size
- 6.0 × 4.6 × 4.7 m width × height × depth
- Triangles
- 2,200 of 6,000
- Draw calls
- 1 one vertex-colour material
- Loop clip
- 4 m of travel per cycle
- Moving parts
- 6 lantern_0 · rotate, lantern_1 · rotate, lantern_2 · rotate, lantern_3 · rotate, lantern_4 · rotate, lantern_5 · rotate
- Knobs
- 5 3 presets
- Night lights
- 2 glow, pumpkin
Passed the validator: real scale, rests on y = 0, front faces +Z, deterministic.
Use it
Code for the specimen as it is set up above; it follows your knobs.
import { createAsset } from 'https://gaitkit.com/cdn/spooky-tree-lanterns.mjs';
const spookyTreeLanterns = createAsset();
scene.add(spookyTreeLanterns); // rests on y = 0, front faces +Z
// 'lantern_0' pivots on its hinge: -8° to 8° around x
spookyTreeLanterns.getObjectByName('lantern_0').rotation.x = THREE.MathUtils.degToRad(-8);import { useMemo } from 'react';
import { createAsset } from 'https://gaitkit.com/cdn/spooky-tree-lanterns.mjs';
export function SpookyTreeLanterns() {
const model = useMemo(() => createAsset(), []);
return <primitive object={model} />;
}# Import spooky-tree-lanterns.glb (download below). Moving parts are separate nodes, pivoted on their hinge.
$SpookyTreeLanterns/lantern_0.rotation_degrees.x = -8// Import spooky-tree-lanterns.glb with glTFast (com.unity.cloud.gltfast).
transform.Find("lantern_0").localEulerAngles = new Vector3(/* x: */ -8, 0, 0);Use the gaitkit MCP server: get_variant({ "id": "spooky-tree-lanterns", "want": "default look" })
then place the result.
# MCP endpoint
https://gaitkit.com/mcpKnobs
| Knob | Type | Values | Default | What it does |
|---|---|---|---|---|
lanterns | range | 2 to 10, step 1 | 6 | How many lanterns hang from the branches, 2 to 10. |
style | choice | pumpkin paper mixed | pumpkin | Lantern kind: pumpkin (small carved jack-o-lantern style lanterns with glowing faces), paper (round orange and purple paper lanterns), mixed (both, alternating). |
bark | choice | dark grey bleached | dark | Bark colour: dark (near-black graveyard tree), grey (weathered), bleached (pale bone-white). |
height | range | 3 to 8, step 0.5 | 5 | Tree height in metres. Lanterns hang lower on a short tree and higher on a tall one. |
seed | range | 1 to 60, step 1 | 7 | Changes the trunk kinks, branch spread and which branches the lanterns hang from. Any whole number gives a new tree. |
Presets: pumpkin tree {"style":"pumpkin","lanterns":8,"bark":"dark"} · lantern festival {"style":"paper","lanterns":10,"bark":"grey","height":6} · bone tree {"style":"mixed","bark":"bleached","lanterns":4,"seed":23}
Files
| File | What |
|---|---|
| spooky-tree-lanterns.glb | GLB, default look · 347 KB |
| spooky-tree-lanterns.mjs | ES module, every knob live |
| spooky-tree-lanterns.obj | OBJ, static, no colour |
| spooky-tree-lanterns-params.json | knob schema, presets, night zones |
Licence
Use it in games, apps, renders and client work, commercially and without credit. Do not resell it as an asset or train a 3D generator on it. The full licence.