FoliMesh

Trees for Babylon.js

Fourteen trees — Oak, Scots Pine, Spruce, Birch, Weeping Willow, Aspen, Maple, Poplar, Olive, Cypress, Stone Pine, Acacia, Baobab and Dead Tree — arrive as GLB. Import them with ImportMeshAsync from @babylonjs/loaders, or LoadAssetContainerAsync plus instantiateModelsToScene when a forest repeats the same canopy.

Each model has LOD0–LOD3 and a pivot at the base, so lod0.addLODLevel(30, lod1) and addLODLevel(80, lod2) follow your distance budget, and null hides a mesh past the final threshold. Leaf cards are glTF MASK maps, which Babylon.js turns into alpha-tested PBRMaterial — cheap in the transparent pass. Thousands of realistic trees go through thin instances; low-poly villages can use createInstance for per-tree picking. The hidden collision mesh works with checkCollisions or Havok.

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

Using it in Babylon.js

Babylon.js loads GLB through the glTF loader in @babylonjs/loaders: ImportMeshAsync (or SceneLoader.ImportMeshAsync in older code), or LoadAssetContainerAsync when you need many copies via instantiateModelsToScene.

  • LOD: lod0.addLODLevel(30, lod1), addLODLevel(80, lod2) and so on; passing null as the mesh hides the object beyond that distance.
  • Thousands of trees: thin instances (thinInstanceAdd with matrices) render in one draw call per mesh; use regular createInstance when each tree needs its own picking or logic.
  • Leaves: glTF MASK maps to alpha-tested PBRMaterial (MATERIAL_ALPHATEST).
  • Collision mesh: set isVisible = false and use it with checkCollisions or Havok physics (PhysicsAggregate with a MESH shape).

Packs

Other categories

Same in other styles

Same for other engines