Procedural 3D asset library
Worlds you can tune.
Every model is a small program with sliders. Drag a value and the asset rebuilds in milliseconds: buildings, vehicles, creatures, whole streets. Use it live in three.js, or bake the variation to GLB for any engine.
Sliders, not files
One asset.
Endless variations.
These are the same controls you get in the studio. No presets are baked: height, canopy and shape feed the generator, and a new seed grows a new tree.
The library
Every world, one style system.
From cel-shaded meadows to a working construction site. Each family has its own materials and look, so packs sit together without feeling the same.
Characters
A whole town of people, already rigged.
Professions from surgeons to street sweepers, each with an alternate look and a counterpart, on one 29-bone rig with five-finger hands. Swap hair, hats, outfits and props, then pick from eighteen animations.
Scenes & kits
Start from a finished place.
Scenes compose library assets into ready spots with their own sliders. Every piece stays a separate named node in the export, so you can pull it apart in your engine.
Use it anywhere
Live on the web. Baked for every engine.
Build assets at runtime in any three.js project with a seed and parameters, or export the exact variation as GLB, animations included.
- three.js
- Unity
- Godot
- Unreal
- Blender
- Any glTF engine
import { getAsset, buildAsset } from 'tunyard';
// a tall, leaning oak, grown from seed 42
const oak = buildAsset(getAsset('tree'), {
height: 6, bend: 0.4, shape: 'tall',
}, 42);
scene.add(oak);