Log inGet started
← Explore
World media

Terra Firma: The Ground and Terrain Material Collection

Walk a gallery of 28 real-scale ground surfaces: grass, soil, mud, sand, gravel, forest floor, moss, snow, ice, ash and lava rock, plus toon, hand-painted and pixel-art takes, each shown on floor, wall and shapes beside its reference photo, set in alpine hills painted with the same layers. Install the groundMaterials package from ZeroMind (materialLibraryKit comes with it) and every surface, and eight ready-made landscape mixes, is yours by name.

0score
Embed

Embed this world

Paste this code into your own page and the world plays right there.

Updated Oct 27, 2026
materialsgroundterrainlandscapegrasssandsnowmudpbrtoonpixel artmaterialLibraryKit

Terra Firma

groundMaterials 1.0.4: 28 seamless ground surfaces at real-world scale for the materialLibraryKit material library. Each one is also a paint layer for the engine's own landscapes.

Walk the gallery: every surface stands on a floor tile, a wall, a cube, a sphere, a shader ball and a cylinder, with the reference picture it was made from hung beside it. The toolbar switches the lighting look for everyone. Materials opens the picker, and anything you apply shows for every player. The gallery sits in a hollow of a 128 m landscape painted with the alpine mix: grass in the low ground, a dirt and gravel path, scree and rock on the steep slopes, and snow on the tops.

What's in it

  • Realistic (21): short grass, long grass, dry grass, dirt, mud, wet mud, clay, dry sand, wet sand, beach sand, gravel, lava rock, forest floor, leaf litter, moss, fresh snow, packed snow, ice, volcanic ash, desert crust, swamp muck.
  • Stylised (7): toon grass, dirt, sand and snow; hand-painted grass; pixel-art grass and dirt. Going from realistic grass to toon or pixel grass is a change of one name.
  • Landscape mixes: meadow, alpine, desert, beach, forest, swamp, volcanic, tundra. Each is picked by one name.
  • Tagged by category, kind, style, tile size, roughness and metal range, texture cost, finish, not-animated and landscape-layer.
  • Texture memory: 64 MB for the whole collection. Every surface stays within the web limit of textures per material.
  • No shimmer at 30 m even in bright sun, and light on the GPU: in Chrome on a Linux desktop (840 x 632 window) the gallery with its painted hills in view runs at about 50 fps (20 ms average frame, 28 ms at the 90th percentile).

Use it

Install groundMaterials from ZeroMind; materialLibraryKit 1.3.1 comes with it. Then:

local Materials = require("~materialLibraryKit.Materials")
Materials.apply(myFloor, "shortGrass")

The package README covers painting landscapes, the mixes and the full tag table. The known limits below are the same list the package README carries.

Known limits

Engine limits, each with its open issue on OrigoZero/zero:

  • Terrain roughness without GroundTerrain (zero#21004): the engine's Terrain shades every layer at roughness 0.95 to 1, so wet mud, wet sand and ice look as dull as ash. Add GroundTerrain beside it.
  • No per-layer filtering or tiling on landscape layers (zero#21018): the engine resamples layer textures smoothly and turns every layer's hex cells, so pixelGrass and pixelDirt paint a landscape soft rather than crisp, and drySand's wind ripples turn from cell to cell there (on swatches they keep their direction). The toon surfaces paint a landscape with their colours but the engine's lit shading, not the cel bands.
  • Reloading a scene can make its landscape float (zero#21023): a scene reload saves the landscape's generated model into the scene, and the terrain then draws far above its heights. Discard that pending edit before reloading, or remove the saved model from the scene.
  • A landscape bake can fail or pass on the same inputs (zero#21026): whether GL.build finishes can depend on how busy the machine is. Run it again on a quieter machine if it fails.
  • The gallery takes a long time to load (zero#21027): 28 materials and one landscape make a slow first load, longest in a browser.
  • The gallery's frame rate in a browser is held down by multiplayer sync (zero#20750): the gallery measured about 50 fps in Chrome (see Texture memory), and the sync cost is part of every frame there.
  • Two-player behaviour can't be tested inside one engine (zero#19114): shared materials are checked through the library's shared channel.
  • No asset.materialCollection.* namespace yet (zero#1889): surfaces are reached through Materials.*.
  • The engine's normal-map green convention is undocumented (zero#19414): these maps are green-up, and the tests prove the direction.

Limits of the package's own design (no engine issue):

  • Curved surfaces blend projections over a narrow band, which can show as a soft join on spheres and rounded models; box faces and planes take one projection.
  • The test suite takes about two minutes: its 33 tests render every surface's checks (87 to 132 s on the machines measured), so run it when nothing else is busy.
  • GroundTerrain builds the landscape surface at run time on each machine, from the layers the landscape carries; nothing is sent over the network for it.
  • The bake inputs are not in the package: the full-size pictures and the maps read off them stay with the machine that baked them (440 MB); the package carries the finished maps and 512 px references.

Comments · 0

Open discussion, no rating attached. Ask questions, swap notes, follow threads.

Sign in to join the discussion.