Terrain Component for Editor

A road system is now available in beta!

We’ve been working on a spline-based road system for the terrain pipeline. Roads are authored as control points on the heightmap and rebuilt into live ribbon meshes, optional junction pads, collision, and (optionally) a terrain bake into splat + height. Mesh is primary; baking the ground under the road is secondary and undoable.

A full road network editor wired into the terrain tools:

  1. Multi-road networks (not just a single path)
  2. Catmull-Rom splines sampled along the heightmap
  3. Live ribbon geometry (shoulders, skirts, materials, LOD)
  4. Manual junctions with seamless pads where roads meet
  5. Optional splat paint + height flatten along corridors
  6. JSON persistence for the whole network
  7. Editor gizmos, undo/redo, wireframe, static mesh collision
2 Likes

This video demos a road editor and compares two instancing approaches: MultiDrawInstancer and a regular HierarchicalInstancer. What’s inside:

  • interactive road editing on the landscape;
  • rendering large numbers of instances with MultiDrawInstancer;
  • comparison with HierarchicalInstancer in approach and on-screen behavior;
  • everything runs in the PlayCanvas engine, on both WebGPU and WebGL2;
  • fully written in TypeScript.
3 Likes

Hi everyone,

We have closed a major gap in the terrain-system documentation. The public API now has a complete description of functions, methods, and parameters — not just signatures, but also purpose, inputs, return values, and important limitations.

What changed:

  • documented the main scripts and API: Terrain, TerrainObject, TerrainObjectsHost, plus related systems (grass, roads, occlusion culling);
  • updated script attribute descriptions shown in the editor;
  • added typical usage examples: terrain initialization, heightmap/splatmap workflow, placing objects on the landscape;
  • brought the docs in line with the current code and removed or marked outdated descriptions.

If anything is still unclear while integrating the library, drop a note in this thread and we will expand the docs.

2 Likes
3 Likes

Hello @Wagner! We are developing a commercial browser-based open world on PlayCanvas 2.21.4 (Direct Engine workflow, no Editor).

We tested the public Terrain System 0.0.5b with our real 1025×1025 Float32 terrain (2.35 m per node): it runs on 2.21.4 without code changes, preserves our heights (max error 5 mm on 89 control points), and the patch LOD performs well (6 LOD levels, no cracks, 12 draw calls).

We are interested in evaluating the current beta: progressive streaming and loadFromPoint, terrain and object instancing, the road system, WebGL2/WebGPU support, collision without a custom Ammo build, use outside the Editor, and non-unit horizontal scale (our terrain entity is scaled 2.346 on X/Z).

Could you please tell us the subscription terms: price and payment model, whether source-code access is included, the commercial license terms, whether rights to use the received version remain after the subscription ends, whether updates and documentation are included, and whether we can test the beta on one isolated terrain sector before committing to production use?

We are not asking for free development or support. Our forum account is new and cannot send private messages yet, so we would be grateful if you could message us the terms. Thank you!

Good afternoon, Alexander! Thank you for your interest in our system. I’ve sent you the subscription details in a private message.

This video is an overview of a day and night cycle on terrain: the sun, twilight, the night sky, and how lighting changes through the day.

It also covers the shadow fixes in PlayCanvas 2.23. Shadows sit more reliably on the landscape, vegetation, and scene objects. Visual effects are improved as well: the sky, atmosphere, and overall image look cleaner and more alive.

If you are building an open world in PlayCanvas, the video shows the day–night cycle, shadows, and effects working together.

2 Likes

I think you should edit the first post to keep it up to date .. so when people searching for terrain system find this thread, they get to see all it does without having to read the whole long conversation.

Unfortunately, the forum’s functionality doesn’t allow for this; previously written posts cannot be edited (perhaps due to insufficient permissions). I would gladly update the descriptions for all my threads, not just the terrain ones.

1 Like