FoliMesh

Rocks in Low-poly Style for PlayCanvas

In PlayCanvas, GLB is handled as a container asset: drag the file into the Editor and you get a template with the full hierarchy, or in engine-only code call app.assets.loadFromUrl(url, 'container') and asset.resource.instantiateRenderEntity(). This set of seven models — Pebbles, Stone, Boulder, Rock Slab, Rock Scatter, Cliff and Cliff with Boulders — ships as GLB, FBX and OBJ with LOD0–LOD3, a collision mesh and a pivot at the base.

PlayCanvas has no built-in LOD component, so a short script compares camera distance and toggles the render components of the four levels. Flat shading and vertex colours replace textures entirely, so every rock shares one material, and LOD0 stays between a few hundred and a couple of thousand triangles — comfortable for browser games, mobile WebGL/WebGPU and VR.

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

About the Low-poly style

Low-poly vegetation is the cheapest style to render and to ship.

  • Flat shading: one normal per face gives the crisp faceted look; no normal maps.
  • Colour lives in vertex colours (glTF COLOR_0), so there are no textures, no UV work and almost no video memory.
  • Leaves are solid geometry, not alpha cards: no alpha testing and no transparent overdraw, which matters on mobile GPUs.
  • One material can be shared by every model in the scene, so trees batch and instance easily.
  • Typical budgets range from a few hundred to a couple of thousand triangles at LOD0.

A good fit for mobile, WebGL/WebGPU, VR, strategy, city builders and stylised indie games. In the engine, use a material that multiplies by vertex colour.

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