maximum prototype tile: 32, 64, 128, 256, 512 or 1024 (default 256)
--allocation <rule>
tile size rule: extent (default; largest dimension x density) or area (sqrt of exterior wall area, one density solved to a texel budget) (default "extent")
--atlas-budget <texels>
area rule: total texels of all tiles (default: what the extent rule would spend on the same prototypes)
Check a Scene v2 package against the shared Scene validator and, with --perf, the open-world performance rules (docs/scene-perf.md). Also counts placements whose base stands more than 0.3 m above or below the terrain: refused above 0.5% of them, a warning below. Exits 0 on pass, 1 when refused, 2 when it cannot be judged.
helix scene validate [options] <path>
Argument
Required
Description
path
yes
a Scene package folder (holding scene.helix-scene.json) or a .helix-scene.json file
Option
Description
--perf
also evaluate the 14 performance rules (P01 to P14) against the package bytes
--scene <file>
the Scene document inside the folder (default scene.helix-scene.json)
--tier <tiers>
desktop, mobile or desktop,mobile: the tier(s) the document is built for (default "desktop")
--profile <id>
the Scene profile to evaluate (default world)
--json
print the helix.scene-perf-report/1 JSON instead of text
--out <file>
write the helix.scene-perf-report/1 JSON to this file
Split a monolithic environment (one big GLB, or a Scene v2 document with an eager shell) into a small eager spawn core plus distance-streamed cells on a fixed, content-addressed grid, and write a validated Scene v2 package
helix scene split [options] <input>
Argument
Required
Description
input
yes
a .glb, a Scene v2 .helix-scene.json, or a folder holding one
Option
Description
-o, --output <dir>
new or empty output directory (required)
--cell-size <metres>
grid cell edge; the grid is anchored at the world origin so cell bytes depend only on their cell (default 16)
--core-radius <metres>
spawn core radius; default is half the stream radius
--spawn <x,y,z>
spawn point; default is the document spawn, or a probed standing point for a GLB
--stream-radius <metres>
declared stream radius; default keeps the document value, or 2.5 cells
--encoding <mode>
chunk geometry encoding: meshopt or none (default "meshopt")
--textures <mode>
ktx2 (default): each distinct texture is encoded once to a shared KTX2 file the chunks reference; keep: textures stay as authored, embedded in every chunk that uses them (default "ktx2")
--texture-cache <dir>
remember encoded textures here (keyed by content) so repeat splits skip the encoder
Shrink the textures of a split Scene bundle without moving a cell: merge textures that decode to the same picture, re-encode UASTC data and normal maps with RDO (each only above a PSNR floor), rewrite the image uris in the affected GLBs, reseal and validate the document. Nodes, stream groups, bounds, spawn and budgets are copied through untouched.
helix scene retexture [options] <input>
Argument
Required
Description
input
yes
a folder holding scene.helix-scene.json and the files its resources name (what helix scene split writes)
Option
Description
-o, --output <dir>
new or empty output directory (required)
--merge-psnr <dB>
merge two textures when their decoded PSNR is at least this (default 44)
--merge-max-delta <levels>
and no texel differs by more than this, 0-255 (default 24)
--uastc-rdo <scalars>
comma-separated UASTC RDO quality scalars to try for data and normal maps, highest first (higher is smaller and lossier); "off" turns RDO off (default 2,1)
--reencode-psnr <dB>
floor for an RDO re-encode against the decoded original (default 40)
Terrain from the DEM, procedural buildings with the far layer always resident, vegetation, Vault props and the engine city materials, in one deterministic package
helix scene create city [options]
Option
Description
--source <dir>
a helix.city-source/1 folder (city-source.json) (required)
--out <dir>
the Scene package folder to write (scene.helix-scene.json, pin.json, bundle files) (required)
--plan <file>
a helix.scene-plan/1 recipe; flags override it for this run and the result is written to <out>/scene-plan.json
--work <dir>
work folder for the intermediate terrain, placements and buildings (default <out>.work)
--id <id>
the Scene id (default scene.<city source id>)
--title <title>
the Scene title
--tier <tiers>
desktop, mobile or desktop,mobile: the tier(s) the package is gated for
--budget <mib>
desktop memory budget (MiB)
--mobile-budget <mib>
mobile memory budget (MiB)
--stream-radius <m>
distance groups load inside this radius (metres)
--spawn <x,z>
spawn near this plan point instead of the densest street
--cell <m>
building cell size (256 or 512)
--far-cell <m>
far-layer cluster size (a multiple of --cell)
--terrain-mps <m>
terrain metres per sample: 1, 2 or 4 (default 2)
--margin <m>
terrain margin: low-detail ground this far beyond the city bounds, from the DEM (default 4096; 0 for none)
--margin-cache <dir>
where the margin DEM is kept and read (default <source>/terrain/margin)
--no-vegetation
leave the trees out
--no-props
leave the Vault props out
--no-roads
leave the roads out (the street surface is then only painted on the terrain)
--offline
do not reach the network (the Vault is not searched)