FoliMesh

Low-poly 3D Models for Bevy

In Bevy the GLB goes straight through the AssetServer: asset_server.load(GltfAssetLabel::Scene(0).from_asset("tree.glb")) spawned with SceneRoot, while FBX and OBJ need third-party crates. This 42-model selection — Oak, Scots Pine, Coconut Palm, Saguaro, Bamboo, Bush — ships as LOD0–LOD3, and each level switches by distance with VisibilityRange and a dithered crossfade, Bevy's own HLOD mechanism.

The low-poly look is flat-shaded with vertex colours (COLOR_0): no textures, no UV work and almost no video memory, so a material that multiplies by vertex colour is all you need. Leaves are solid geometry rather than alpha cards, so there is no alpha testing or transparent overdraw on weaker GPUs. Meshes and materials that are shared batch and instance automatically, keeping thousands of tree copies cheap; LOD0 sits between a few hundred and a couple of thousand triangles, which suits mobile, WebGL/WebGPU, VR, strategy and stylised indie projects. Colliders come from the collision mesh via Avian or bevy_rapier, since Bevy has no built-in physics.

Models
42
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 Bevy

Bevy loads glTF/GLB through the AssetServer: asset_server.load(GltfAssetLabel::Scene(0).from_asset("tree.glb")), spawned with SceneRoot; individual meshes and materials are addressable by label. FBX and OBJ need third-party crates, so GLB is the format to use.

  • LOD: give the LOD0–LOD3 entities a VisibilityRange (start and end margins) for distance switching with dithered crossfade — Bevy's HLOD mechanism.
  • Leaves: glTF alphaMode MASK becomes AlphaMode::Mask(cutoff) on StandardMaterial, and double-sided materials disable back-face culling.
  • Entities that share a mesh and material are batched and instanced automatically, so many tree copies stay cheap.
  • Collision: Bevy has no built-in physics; build a collider from the collision mesh with Avian or bevy_rapier.

Packs

Other categories

Same in other styles

Same for other engines