FoliMesh

Bushes for Babylon.js

These eight shrubs — Bamboo, Bush, Boxwood, Hedge, Juniper, Wild Rose, Raspberry and Hazel — arrive as GLB, so Babylon.js picks them up through the glTF loader in @babylonjs/loaders with ImportMeshAsync. When a hedge line needs dozens of copies, LoadAssetContainerAsync plus instantiateModelsToScene keeps memory flat instead of re-parsing the file.

Every model ships LOD0–LOD3 with the pivot at the base, so you can write lod0.addLODLevel(30, lod1) and lod0.addLODLevel(80, lod2), or pass null to cull beyond the last step. Leaf cards use glTF MASK, which Babylon maps to an alpha-tested PBRMaterial; the hidden collision mesh (isVisible = false) works with checkCollisions or a Havok PhysicsAggregate. Use thinInstanceAdd for dense ground cover in one draw call per mesh, and createInstance where individual bushes need picking.

Models
8
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