PolyTerrain integrations

PolyTerrain is designed to sit beside heightfield terrain and World Streaming—not replace them. Use bridges for transition bands and unified queries.

Heightfield coexistence

PolyTerrain does not implement TerrainDataRequestBus. Heightfield systems keep their handlers; mesh terrain answers through PolyTerrain buses and compiled meshes.

NeedTool
Sample heights into BasePoly Partition Heightfield Bridge → Sample Heightfield Into Base Sections
Soft edge toward heightfieldHeightfield Blend modifier (boundary band)
Export mesh heights to Image GradientBridge → Export Heights To Image Gradient
Unified editor / tool queryPolyPartitionDataRequestBus::GetUnifiedSurfacePointD (mesh first, heightfield fallback; sectionId null means heightfield hit)
Avoid dual collidersBridge Sync Collision Exclusion Regions (m_autoSyncExclusion for debounced updates)

Prefer mesh-only physics authority where overhangs / caves exist. Use a blend band at the XY transition; keep exclusion regions padded slightly.

World Streaming

When WS is enabled:

  1. Transformer WS Actor Properties stamps streaming metadata into compiled assets.
  2. PrefabProcessor injects WorldStreamingMemberComponent (soft, API-header only) before WS processors ($stack_before in prefab.tools.setreg).
  3. FarField geometry can contribute to WS HLOD via an external geometry source registered by PolyTerrain.
  4. Editor: Partition View can show [MT] external content; Focus Load WS Cells builds a Loaded Region from partition footprints.

Diagnostics: ws_dumpStats may include polyPartitionSections= and polyPartitionNetSig= when the WS bridge is active. Content signature XOR helps compare server/client residency; it is not entity replication.

Cell unload evicts VT tiles that lose section coverage (when VT is enabled). Weight-rewrite overlays survive streaming and recompose when sections flow back in.

SurfaceData and vegetation

Add Poly Partition Surface Data on runtime section entities (PrefabProcessor can attach it with collision).

FieldRole
Default tage.g. poly_terrain
Channel → tag mape.g. Grass → surface_grass
PriorityHigher priority wins when multiple creators hit the same point (default 1 = mesh overrides heightfield at 0)

Queries ray against compiled LOD0 and sample baked weights. Existing Vegetation consumers work from tags without Vegetation Gem changes.

Double-precision rendering

Section anchors and brush picking use Vector3d / *D paths. Open-world projects should enable double-precision rendering so viewport brushes and large coordinates stay accurate. Keep section span ≤ ~2 km when possible ( Debugging constraints).


Copyright © 2026 DawnEngine. All rights reserved.

DawnEngine is a commercial 3D engine distributed under the DawnEngine end-user license agreement. Engine binaries and source are proprietary and are not covered by the licenses below.

Documentation only: the prose and templates on this site are a derivative work of Open 3D Engine (O3DE) documentation by the O3DE Contributors, used under CC BY 4.0 (documentation content), Apache 2.0 (site code), and the MIT license (inline code samples).

The open-source 3D engine that DawnEngine is built on top of is Open 3D Engine . DawnEngine is not affiliated with, endorsed by, or sponsored by The Linux Foundation or the O3DE project. “O3DE” and “Open 3D Engine” are trademarks of The Linux Foundation.