FoliMesh

Ground cover for PlayCanvas

PlayCanvas imports these as GLB container assets: drop a file into the Editor to get a template with the model hierarchy, or load it in engine-only code with app.assets.loadFromUrl(url, 'container') and asset.resource.instantiateRenderEntity(). Fern, Grass Tuft and Reed each ship LOD0–LOD3, and since PlayCanvas has no built-in LOD component, a short script toggles the render components as camera distance changes.

Leaves use glTF MASK, which sets alphaTest on the StandardMaterial; switch cull mode to none for two-sided fronds and blades. Collision is a mesh collision component plus a static rigidbody with its render component disabled. Ferns, grass and reeds fit browser-scale forest floors, meadows and shorelines, where many small meshes go into a batch group or get instanced with meshInstance.setInstancing().

Models
3
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.

Other categories

Same in other styles

Same for other engines