FoliMesh

Trees for PlayCanvas

Drop a GLB into the PlayCanvas editor and it arrives as a container asset with the full model hierarchy; in engine-only builds the same file loads through app.assets.loadFromUrl(url, 'container') and asset.resource.instantiateRenderEntity(). FBX imports are converted to GLB automatically, so pipelines that already ship FBX still work.

This set covers 14 trees — Oak, Scots Pine, Spruce, Birch, Weeping Willow, Maple, Olive, Baobab and more — each with LOD0–LOD3, a collision mesh and a pivot at the base. PlayCanvas has no LOD component, so a short distance-comparison script toggles the LOD entities; static trunks batch well, and large forests are cheaper with meshInstance.setInstancing(). Leaf materials use alphaTest with cull mode none for two-sided foliage.

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

Using it in PlayCanvas

PlayCanvas treats GLB as a container asset. In the Editor, upload GLB (FBX is converted to GLB on import) to get a template with the model hierarchy; in engine-only code use app.assets.loadFromUrl(url, 'container') and asset.resource.instantiateRenderEntity().

  • LOD: there is no built-in LOD component, so a small script compares camera distance and toggles the render components of the LOD0–LOD3 entities.
  • Static trees can share a batch group to merge draw calls; for large forests use hardware instancing with meshInstance.setInstancing() and a vertex buffer of transforms.
  • Leaves: glTF MASK sets alphaTest on the StandardMaterial; use cull mode none for two-sided leaves.
  • Collision mesh: a collision component of type mesh plus a static rigidbody, with its render component disabled.

Packs

Other categories

Same in other styles

Same for other engines