FoliMesh

Bushes for three.js

Load a bush GLB with GLTFLoader from three/addons — other loaders are only needed if a file uses Draco or KTX2 compression. The eight models — Bamboo, Bush, Boxwood, Hedge, Juniper, Wild Rose, Raspberry, Hazel — ship with LOD0–LOD3, so lod.addLevel(mesh, distance) in THREE.LOD swaps detail as the camera moves, and the collision mesh stays invisible for Rapier or cannon-es.

For a forest edge or a city park, InstancedMesh draws thousands of copies in a single draw call, while BatchedMesh mixes several variations; because THREE.LOD is not applied per instance, group instances by LOD per chunk yourself. Alpha-masked foliage maps to material.alphaTest, and double-sided leaves get THREE.DoubleSide automatically. Everything runs on WebGLRenderer and WebGPURenderer, and each new seed gives another layout.

Models
8
Levels of detail
LOD0 – LOD3
Formats
GLB · FBX · OBJ

Using it in three.js

In three.js, load GLB with GLTFLoader from three/addons; add DRACOLoader or KTX2Loader only if a file uses those extensions.

  • Distance LOD: THREE.LOD with lod.addLevel(mesh, distance) for LOD0–LOD3; it switches levels by camera distance every frame.
  • Forests: InstancedMesh draws thousands of copies in one draw call, and BatchedMesh mixes several tree variations. THREE.LOD does not apply per instance, so group instances by LOD per chunk yourself.
  • Leaves: glTF alphaMode MASK becomes material.alphaTest, and double-sided materials get side: THREE.DoubleSide automatically.
  • Collision mesh: keep it invisible and pass it to a physics library such as Rapier or cannon-es.

Works with both WebGLRenderer and WebGPURenderer.

Packs

Other categories

Same in other styles

Same for other engines