FoliMesh

Cliffs and arches in Low-poly Style for three.js

Faceted low-poly look with flat shading and vertex colours — no textures at all. Light GLB vegetation for the web: load it with GLTFLoader, wire the LOD meshes into THREE.LOD and your scene has a forest. This group covers rock walls for game landscapes: modular cliff pieces that snap together, corner cliffs, layered cliffs with visible strata, white chalk cliffs, natural stone arches and full canyon sections. Together they frame valleys, coastlines and mountain passes. Each model ships with LOD0 to LOD3 and collision, so large cliff faces stay cheap to draw and solid for characters and physics. Pivots sit at the base for easy placement on terrain. Every seed gives a new rock layout and erosion pattern, and the models export as GLB, FBX and OBJ for Unity, Unreal Engine, Godot and Bevy. 6 game-ready models in this selection. Every model has LOD0–LOD3, collision and a pivot at the base, and each new seed gives a new variation of the same species.

Models
6
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 three.js

In three.js, load GLB with GLTFLoader from three/addons; add DRACOLoader or KTX2Loader only if a file uses those extensions.

  • Distance LOD: THREE.LOD with lod.addLevel(mesh, distance) for LOD0–LOD3; it switches levels by camera distance every frame.
  • Forests: InstancedMesh draws thousands of copies in one draw call, and BatchedMesh mixes several tree variations. THREE.LOD does not apply per instance, so group instances by LOD per chunk yourself.
  • Leaves: glTF alphaMode MASK becomes material.alphaTest, and double-sided materials get side: THREE.DoubleSide automatically.
  • Collision mesh: keep it invisible and pass it to a physics library such as Rapier or cannon-es.

Works with both WebGLRenderer and WebGPURenderer.

Other categories

Same in other styles

Same for other engines