@hypersoniclabs/helix-cli 0.1.25-helix3.486 → 0.1.25-helix3.487

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/city/assemble/compose.d.ts +8 -0
  2. package/dist/city/assemble/compose.js +47 -3
  3. package/dist/city/assemble/compose.js.map +1 -1
  4. package/dist/city/assemble/create.d.ts +9 -0
  5. package/dist/city/assemble/create.js +8 -5
  6. package/dist/city/assemble/create.js.map +1 -1
  7. package/dist/city/assemble/glbParts.d.ts +12 -4
  8. package/dist/city/assemble/glbParts.js +39 -13
  9. package/dist/city/assemble/glbParts.js.map +1 -1
  10. package/dist/city/assemble/plan.d.ts +4 -0
  11. package/dist/city/assemble/plan.js +2 -0
  12. package/dist/city/assemble/plan.js.map +1 -1
  13. package/dist/city/assemble/roads.d.ts +11 -0
  14. package/dist/city/assemble/roads.js +29 -0
  15. package/dist/city/assemble/roads.js.map +1 -0
  16. package/dist/city/assemble/splat.d.ts +9 -0
  17. package/dist/city/assemble/splat.js +36 -2
  18. package/dist/city/assemble/splat.js.map +1 -1
  19. package/dist/city/assemble/terrain.d.ts +4 -1
  20. package/dist/city/assemble/terrain.js +15 -4
  21. package/dist/city/assemble/terrain.js.map +1 -1
  22. package/dist/sceneCreate/commands.js +4 -0
  23. package/dist/sceneCreate/commands.js.map +1 -1
  24. package/dist/tsconfig.build.tsbuildinfo +1 -1
  25. package/docs/scene-create.md +4 -4
  26. package/package.json +1 -1
  27. package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
  28. package/plugins/beamng-vehicle/bin/__pycache__/beamng_audio.cpython-312.pyc +0 -0
  29. package/plugins/beamng-vehicle/bin/__pycache__/beamng_engine.cpython-312.pyc +0 -0
  30. package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
  31. package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
  32. package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
  33. package/plugins/beamng-vehicle/bin/__pycache__/beamng_stock_events.cpython-312.pyc +0 -0
  34. package/plugins/beamng-vehicle/bin/__pycache__/fmod_studio.cpython-312.pyc +0 -0
  35. package/plugins/beamng-vehicle/bin/__pycache__/fsb5.cpython-312.pyc +0 -0
  36. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio.cpython-312.pyc +0 -0
  37. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_ac.cpython-312.pyc +0 -0
  38. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_beamng.cpython-312.pyc +0 -0
  39. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_fixtures.cpython-312.pyc +0 -0
  40. package/plugins/beamng-vehicle/bin/__pycache__/test_beamng_engine.cpython-312.pyc +0 -0
  41. package/plugins/beamng-vehicle/bin/__pycache__/test_sim_audio.cpython-312.pyc +0 -0
@@ -1,7 +1,10 @@
1
1
  import { type HelixSceneV2 } from '@hypersoniclabs/helix-manifest';
2
2
  import type { BuildingsManifest, CellEntry, FarEntry } from '../buildings';
3
+ import type { RoadCell } from '../roads';
3
4
  import type { BundleFile, PackagedCityLibrary } from './materials';
4
5
  export declare const CITY_HLOD_LAYER = "buildings";
6
+ /** P10: terrain collision must reach this far where streets are drivable and walkable. */
7
+ export declare const ROAD_TERRAIN_COLLIDER_RADIUS_M = 256;
5
8
  export interface ComposeInput {
6
9
  sceneId: string;
7
10
  title: string;
@@ -13,6 +16,8 @@ export interface ComposeInput {
13
16
  buildingsDir: string;
14
17
  buildings: BuildingsManifest;
15
18
  library: PackagedCityLibrary;
19
+ /** The road generator's 1 km cells (render GLB and collider each), streamed in their own distance groups. */
20
+ roads?: RoadCell[];
16
21
  memoryBudgetMiB: number;
17
22
  streamRadiusM: number;
18
23
  spawn: {
@@ -22,6 +27,9 @@ export interface ComposeInput {
22
27
  }
23
28
  export interface ComposeStats {
24
29
  buildingCells: number;
30
+ roadCells: number;
31
+ roadTriangles: number;
32
+ roadBytes: number;
25
33
  colliderTriangles: number;
26
34
  hlodClusters: number;
27
35
  hlodTriangles: number;
@@ -4,7 +4,7 @@
4
4
  // generator-written far layer sealed as a complete HLOD v2 layer, the city material library and the optional
5
5
  // `web.city-materials/1` extension. Everything is content-addressed and the document is sealed and validated here.
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.CITY_HLOD_LAYER = void 0;
7
+ exports.ROAD_TERRAIN_COLLIDER_RADIUS_M = exports.CITY_HLOD_LAYER = void 0;
8
8
  exports.composeCityScene = composeCityScene;
9
9
  const node_fs_1 = require("node:fs");
10
10
  const node_path_1 = require("node:path");
@@ -13,6 +13,8 @@ const compiler_1 = require("../../sceneElements/compiler");
13
13
  const glbParts_1 = require("./glbParts");
14
14
  const MIB = 1024 * 1024;
15
15
  exports.CITY_HLOD_LAYER = 'buildings';
16
+ /** P10: terrain collision must reach this far where streets are drivable and walkable. */
17
+ exports.ROAD_TERRAIN_COLLIDER_RADIUS_M = 256;
16
18
  const cellId = (cx, cz) => `${cx}.${cz}`;
17
19
  function pad(bounds, y) {
18
20
  const min = [bounds.min[0], bounds.min[1] - y, bounds.min[2]];
@@ -54,7 +56,7 @@ async function composeCityScene(input) {
54
56
  const doc = {
55
57
  format: 'helix.scene-elements', version: 2, id: input.sceneId, title: input.title,
56
58
  spawn: { position: input.spawn.position, ...(input.spawn.rotationYDeg === undefined ? {} : { rotationYDeg: input.spawn.rotationYDeg }) },
57
- terrain: { type: 'terrain', id: 'terrain', source: (0, node_path_1.basename)((0, node_path_1.resolve)(input.terrainDir)) },
59
+ terrain: { type: 'terrain', id: 'terrain', source: (0, node_path_1.basename)((0, node_path_1.resolve)(input.terrainDir)), ...(input.roads?.length ? { colliderRadiusM: exports.ROAD_TERRAIN_COLLIDER_RADIUS_M } : {}) },
58
60
  ...(input.placementsDir ? { placements: { source: relativeFrom(baseDir, input.placementsDir) } } : {}),
59
61
  buildings: [],
60
62
  runtimePolicy: { memoryBudgetMiB: input.memoryBudgetMiB, streamRadiusM: input.streamRadiusM },
@@ -109,6 +111,42 @@ async function composeCityScene(input) {
109
111
  });
110
112
  nodeByCell.set(cell.key, { node: nodeId, cell: `cell.building.${id}` });
111
113
  }
114
+ // 2b. One node per road cell (1,024 m) with the cell's collider, in its own distance group. Roads are not in the HLOD layer:
115
+ // the terrain splat carries the street surface at distance.
116
+ let roadTriangles = 0, roadBytes = 0, roadBounds = null;
117
+ const roadMinX = Math.min(...(input.roads ?? []).map((c) => c.cx)), roadMinZ = Math.min(...(input.roads ?? []).map((c) => c.cz));
118
+ for (const cell of [...(input.roads ?? [])].sort((a, b) => a.cz - b.cz || a.cx - b.cx)) {
119
+ const id = cellId(cell.cx - roadMinX, cell.cz - roadMinZ); // ids are lowercase and never negative
120
+ const info = (0, glbParts_1.inspectGlb)(cell.glb);
121
+ const bounds = (0, glbParts_1.quantizedGlbWorldBounds)(cell.glb);
122
+ const render = table.add(`res.road.${id}`, 'model', 'model/gltf-binary', `roads/cell/${cell.glbSha256}.glb`, cell.glb);
123
+ const nodeId = `road.cell.${id}`, groupId = `stream.road.${id}`;
124
+ const members = [nodeId];
125
+ let decoded = cell.glb.length + 2 * info.accessorBytes;
126
+ nodes.push({
127
+ id: nodeId, resource: render, transform: identity, streamGroup: groupId,
128
+ components: [{ type: 'render.mesh', castShadow: false, receiveShadow: true, giContribute: false }],
129
+ });
130
+ if (cell.collider) {
131
+ const collider = await (0, glbParts_1.colliderFromQuantizedGlb)(cell.collider);
132
+ const collide = table.add(`res.road.collider.${id}`, 'collider', 'model/gltf-binary', `roads/collider/${(0, glbParts_1.sha256Hex)(collider.bytes)}.glb`, collider.bytes);
133
+ const carrierId = `road.collider.${id}`, setId = `collision.road.${id}`;
134
+ nodes.push({ id: carrierId, transform: identity, streamGroup: groupId, components: [{ type: 'collision.proxy-set', set: setId }] });
135
+ collisionSets.push({ id: setId, node: carrierId, static: [{ id: `collider.road.${id}`, shape: 'triangle-mesh', resource: collide, transform: identity }] });
136
+ members.push(carrierId);
137
+ decoded += collider.bytes.length * 6;
138
+ colliderBytes += collider.bytes.length;
139
+ colliderTriangles += collider.triangles;
140
+ }
141
+ groups.push({
142
+ id: groupId, mode: 'distance', priority: 50,
143
+ cells: [{ id: `cell.road.${id}`, bounds: pad(bounds, 0.5), nodes: members }],
144
+ dependencies: ['stream.root'], estimatedMemoryMiB: Math.max(1, Math.ceil(decoded / MIB)),
145
+ });
146
+ roadTriangles += cell.stats.trianglesRender;
147
+ roadBytes += cell.glb.length;
148
+ roadBounds = roadBounds ? { min: roadBounds.min.map((v, a) => Math.min(v, bounds.min[a])), max: roadBounds.max.map((v, a) => Math.max(v, bounds.max[a])) } : bounds;
149
+ }
112
150
  // 3. The generator's far layer is the complete HLOD v2 layer: one cluster per far entry, sources in `cells` order.
113
151
  const carrier = await (0, glbParts_1.facadeMaterialCarrierGlb)([0.62, 0.58, 0.52]);
114
152
  const materialId = table.add('res.hlod.material', 'model', 'model/gltf-binary', `hlod-complete/${(0, glbParts_1.sha256Hex)(carrier.bytes)}.glb`, carrier.bytes);
@@ -140,6 +178,12 @@ async function composeCityScene(input) {
140
178
  max: placementBounds.max.map((v, a) => Math.max(v, cell.bounds.max[a])),
141
179
  };
142
180
  }
181
+ if (roadBounds) {
182
+ placementBounds = {
183
+ min: placementBounds.min.map((v, a) => Math.min(v, roadBounds.min[a])),
184
+ max: placementBounds.max.map((v, a) => Math.max(v, roadBounds.max[a])),
185
+ };
186
+ }
143
187
  scene.placement = { ...scene.placement, bounds: placementBounds };
144
188
  scene.resources = [...scene.resources, ...table.resources, ...input.library.resources];
145
189
  scene.nodes = [...scene.nodes, ...nodes];
@@ -186,7 +230,7 @@ async function composeCityScene(input) {
186
230
  scene: sealed,
187
231
  files: [...files.values()].sort((a, b) => (a.uri < b.uri ? -1 : 1)),
188
232
  stats: {
189
- buildingCells: groups.length, colliderTriangles, hlodClusters: clusters.length, hlodTriangles, hlodBytes, nearBytes, colliderBytes,
233
+ buildingCells: groups.length - (input.roads?.length ?? 0), roadCells: input.roads?.length ?? 0, roadTriangles, roadBytes, colliderTriangles, hlodClusters: clusters.length, hlodTriangles, hlodBytes, nearBytes, colliderBytes,
190
234
  nodes: scene.nodes.length, streamGroups: scene.streamGroups.length, resources: scene.resources.length, documentBytes,
191
235
  },
192
236
  };
@@ -1 +1 @@
1
- {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../../src/city/assemble/compose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../../src/city/assemble/compose.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,15 @@ export interface CreateCityResult {
34
34
  terrain: Omit<CityTerrainResult, 'heightAt'>;
35
35
  vegetation: VegetationResult['report'];
36
36
  props: PropsResult['report'];
37
+ roads: {
38
+ enabled: boolean;
39
+ cells: number;
40
+ renderTriangles: number;
41
+ colliderTriangles: number;
42
+ junctions: number;
43
+ edges: number;
44
+ bytes: number;
45
+ };
37
46
  buildings: BuildingsManifest['totals'] & {
38
47
  cells: number;
39
48
  };
@@ -6,9 +6,7 @@
6
6
  // -> vegetation (street trees and park/forest trees as placements)
7
7
  // -> props (Vault props by Continuum reference, none when nothing suitable exists)
8
8
  // -> compose (nodes, stream groups, colliders, complete HLOD, materials, extension), seal, perf gate
9
- //
10
- // Roads are a seam until the road generator lands (`src/city/roads`): the terrain splat paints the street surface so the
11
- // city reads as streets, and the composition has one place to add the road meshes and colliders.
9
+ // -> roads (1 km cells, colliders, and the terrain cut and filled under them) src/city/roads
12
10
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
11
  if (k2 === undefined) k2 = k;
14
12
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -59,6 +57,7 @@ const terrain_1 = require("./terrain");
59
57
  const vegetation_1 = require("../vegetation");
60
58
  const props_1 = require("../props");
61
59
  const spawn_1 = require("./spawn");
60
+ const roads_1 = require("./roads");
62
61
  /** The activation radius at which a dense city cell stays within the mobile draw-call limit (P06, 150). */
63
62
  exports.MOBILE_STREAM_RADIUS_M = 300;
64
63
  exports.SCENE_REPORT_SCHEMA = 'helix.scene-create-report/1';
@@ -108,7 +107,8 @@ async function createCityScene(options) {
108
107
  const built = await lap('buildings', () => (0, buildings_1.buildBuildingsFromSource)(loaded, identity, {
109
108
  out: (0, node_path_1.join)(work, 'buildings'), cellM: plan.buildings.cellM, farCellM: plan.buildings.farCellM, groundFilter: plan.buildings.groundFilter === 'auto' ? undefined : plan.buildings.groundFilter,
110
109
  }));
111
- const terrain = await lap('terrain', () => (0, terrain_1.buildCityTerrain)(loaded, (0, node_path_1.join)(work, 'terrain'), { metresPerSample: plan.terrain.metresPerSample }));
110
+ const roads = plan.roads.enabled ? await lap('roads', () => (0, roads_1.buildSceneRoads)(loaded, plan.terrain.metresPerSample)) : null;
111
+ const terrain = await lap('terrain', () => (0, terrain_1.buildCityTerrain)(loaded, (0, node_path_1.join)(work, 'terrain'), { metresPerSample: plan.terrain.metresPerSample, conformed: roads?.conformed }));
112
112
  const spawn = (0, spawn_1.pickSpawn)(loaded, built.manifest, terrain.heightAt, plan.spawn);
113
113
  log(`spawn: ${spawn.position.map((v) => v.toFixed(1)).join(', ')} (${spawn.reason})`);
114
114
  const vegetation = plan.vegetation.enabled
@@ -117,7 +117,7 @@ async function createCityScene(options) {
117
117
  const props = plan.props.enabled ? await lap('props', () => (0, props_1.resolveProps)(loaded, { log, offline: options.offline })) : null;
118
118
  const composed = await lap('compose', () => (0, compose_1.composeCityScene)({
119
119
  sceneId, title, terrainDir: (0, node_path_1.join)(work, 'terrain'), ...(vegetation?.placementsDir ? { placementsDir: vegetation.placementsDir } : {}),
120
- buildingsDir: (0, node_path_1.join)(work, 'buildings'), buildings: built.manifest, library: (0, materials_1.packageCityLibrary)(), memoryBudgetMiB, streamRadiusM,
120
+ buildingsDir: (0, node_path_1.join)(work, 'buildings'), buildings: built.manifest, library: (0, materials_1.packageCityLibrary)(), ...(roads ? { roads: roads.cells } : {}), memoryBudgetMiB, streamRadiusM,
121
121
  spawn: { position: spawn.position, rotationYDeg: spawn.rotationYDeg },
122
122
  }));
123
123
  await lap('write package', async () => {
@@ -149,6 +149,9 @@ async function createCityScene(options) {
149
149
  terrain: { dir: terrain.dir, tilesX: terrain.tilesX, tilesZ: terrain.tilesZ, originX: terrain.originX, originZ: terrain.originZ, metresPerSample: terrain.metresPerSample, heightRangeM: terrain.heightRangeM, kind: terrain.kind },
150
150
  vegetation: vegetation?.report ?? { enabled: false },
151
151
  props: props?.report ?? { enabled: false },
152
+ roads: roads
153
+ ? { enabled: true, cells: roads.cells.length, renderTriangles: roads.cells.reduce((n, c) => n + c.stats.trianglesRender, 0), colliderTriangles: roads.cells.reduce((n, c) => n + c.stats.colliderTriangles, 0), junctions: roads.report.junctions, edges: roads.report.renderedEdges, bytes: roads.cells.reduce((n, c) => n + c.glb.length, 0) }
154
+ : { enabled: false, cells: 0, renderTriangles: 0, colliderTriangles: 0, junctions: 0, edges: 0, bytes: 0 },
152
155
  buildings: { ...built.manifest.totals, cells: built.manifest.cells.length },
153
156
  packageBytes: size.bytes, files: size.files, perf, timingsMs: timings,
154
157
  };
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/city/assemble/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/city/assemble/create.ts"],"names":[],"mappings":"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"}
@@ -22,14 +22,22 @@ export declare function glbJson(bytes: Uint8Array): {
22
22
  };
23
23
  export declare function inspectGlb(bytes: Uint8Array): GlbInfo;
24
24
  /**
25
- * A static collider for a cell: the box level's triangles and nothing else. The engine refuses meshopt in a collider
26
- * (`runtime/colliderAdmission.ts`), so the geometry is decoded and rewritten with plain 16-bit quantised positions
27
- * (`KHR_mesh_quantization`), keeping the node's translation and uniform scale so cell-local coordinates survive.
25
+ * A static collider rebuilt from a quantised, meshopt-compressed GLB (a building cell's box level, a road cell's collider).
26
+ * The engine refuses meshopt in a collider (`runtime/colliderAdmission.ts`), so the geometry is decoded and rewritten with
27
+ * plain 16-bit quantised positions (`KHR_mesh_quantization`), keeping the node's translation and scale so cell-local
28
+ * coordinates survive. Positions may be normalised (box level) or raw lattice units (road collider); the flag is kept.
28
29
  */
29
- export declare function colliderFromBoxLevel(boxGlb: Uint8Array): Promise<{
30
+ export declare function colliderFromQuantizedGlb(source: Uint8Array): Promise<{
30
31
  bytes: Uint8Array;
31
32
  triangles: number;
32
33
  }>;
34
+ /** A building cell's collider: the box level's triangles and nothing else. */
35
+ export declare const colliderFromBoxLevel: typeof colliderFromQuantizedGlb;
36
+ /** World bounds of a quantised cell GLB: the first mesh node's translation and scale over its POSITION accessor min/max. */
37
+ export declare function quantizedGlbWorldBounds(bytes: Uint8Array): {
38
+ min: [number, number, number];
39
+ max: [number, number, number];
40
+ };
33
41
  /**
34
42
  * The one shared HLOD material resource: a never-drawn carrier mesh whose single opaque PBR material carries
35
43
  * `HELIX_materials_city {kind: "facade"}` over a plain base. It has the same vertex attributes as the far cells that borrow
@@ -2,10 +2,11 @@
2
2
  // GLB plumbing the assembler needs: a collider derived from a building cell's box level, the shared HLOD material carrier,
3
3
  // and header inspection (accessor counts for the decoded-memory estimates).
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.sha256Hex = void 0;
5
+ exports.colliderFromBoxLevel = exports.sha256Hex = void 0;
6
6
  exports.glbJson = glbJson;
7
7
  exports.inspectGlb = inspectGlb;
8
- exports.colliderFromBoxLevel = colliderFromBoxLevel;
8
+ exports.colliderFromQuantizedGlb = colliderFromQuantizedGlb;
9
+ exports.quantizedGlbWorldBounds = quantizedGlbWorldBounds;
9
10
  exports.facadeMaterialCarrierGlb = facadeMaterialCarrierGlb;
10
11
  const node_crypto_1 = require("node:crypto");
11
12
  const core_1 = require("@gltf-transform/core");
@@ -42,34 +43,59 @@ function inspectGlb(bytes) {
42
43
  return { vertices, indices, accessorBytes };
43
44
  }
44
45
  /**
45
- * A static collider for a cell: the box level's triangles and nothing else. The engine refuses meshopt in a collider
46
- * (`runtime/colliderAdmission.ts`), so the geometry is decoded and rewritten with plain 16-bit quantised positions
47
- * (`KHR_mesh_quantization`), keeping the node's translation and uniform scale so cell-local coordinates survive.
46
+ * A static collider rebuilt from a quantised, meshopt-compressed GLB (a building cell's box level, a road cell's collider).
47
+ * The engine refuses meshopt in a collider (`runtime/colliderAdmission.ts`), so the geometry is decoded and rewritten with
48
+ * plain 16-bit quantised positions (`KHR_mesh_quantization`), keeping the node's translation and scale so cell-local
49
+ * coordinates survive. Positions may be normalised (box level) or raw lattice units (road collider); the flag is kept.
48
50
  */
49
- async function colliderFromBoxLevel(boxGlb) {
51
+ async function colliderFromQuantizedGlb(source) {
50
52
  await meshoptimizer_1.MeshoptDecoder.ready;
51
53
  const io = new core_1.NodeIO().registerExtensions([extensions_1.KHRMeshQuantization, extensions_1.EXTMeshoptCompression]).registerDependencies({ 'meshopt.decoder': meshoptimizer_1.MeshoptDecoder }).setLogger(new core_1.Logger(core_1.Logger.Verbosity.ERROR));
52
- const source = await io.readBinary(boxGlb);
53
- const node = source.getRoot().listNodes().find((candidate) => candidate.getMesh());
54
+ const decoded = await io.readBinary(source);
55
+ const node = decoded.getRoot().listNodes().find((candidate) => candidate.getMesh());
54
56
  const primitive = node?.getMesh()?.listPrimitives()[0];
55
57
  const position = primitive?.getAttribute('POSITION');
56
58
  const index = primitive?.getIndices();
57
59
  if (!node || !primitive || !position || !index)
58
- throw new Error('colliderFromBoxLevel: the box level has no indexed mesh');
60
+ throw new Error('colliderFromQuantizedGlb: the source has no indexed mesh');
61
+ if (!(position.getArray() instanceof Uint16Array))
62
+ throw new Error('colliderFromQuantizedGlb: expected 16-bit quantised positions');
63
+ const normalized = position.getNormalized();
59
64
  const positions = Uint16Array.from(position.getArray());
60
- if (!position.getNormalized() || !(position.getArray() instanceof Uint16Array))
61
- throw new Error('colliderFromBoxLevel: expected 16-bit normalised positions');
62
65
  const indices = Uint32Array.from(index.getArray());
63
66
  const count = positions.length / 3;
64
67
  const doc = new core_1.Document();
65
68
  const buffer = doc.createBuffer();
66
69
  doc.createExtension(extensions_1.KHRMeshQuantization).setRequired(true);
67
- const accessor = (array, type, normalized = false) => doc.createAccessor().setBuffer(buffer).setArray(array).setType(type).setNormalized(normalized);
68
- const mesh = doc.createMesh('collider').addPrimitive(doc.createPrimitive().setAttribute('POSITION', accessor(positions, 'VEC3', true)).setIndices(accessor(count <= 65535 ? Uint16Array.from(indices) : indices, 'SCALAR')));
70
+ const accessor = (array, type, normalised = false) => doc.createAccessor().setBuffer(buffer).setArray(array).setType(type).setNormalized(normalised);
71
+ const mesh = doc.createMesh('collider').addPrimitive(doc.createPrimitive().setAttribute('POSITION', accessor(positions, 'VEC3', normalized)).setIndices(accessor(count <= 65535 ? Uint16Array.from(indices) : indices, 'SCALAR')));
69
72
  doc.createScene('collider').addChild(doc.createNode('collider').setMesh(mesh).setTranslation(node.getTranslation()).setScale(node.getScale()));
70
73
  const bytes = await new core_1.NodeIO().registerExtensions([extensions_1.KHRMeshQuantization]).writeBinary(doc);
71
74
  return { bytes, triangles: indices.length / 3 };
72
75
  }
76
+ /** A building cell's collider: the box level's triangles and nothing else. */
77
+ exports.colliderFromBoxLevel = colliderFromQuantizedGlb;
78
+ /** World bounds of a quantised cell GLB: the first mesh node's translation and scale over its POSITION accessor min/max. */
79
+ function quantizedGlbWorldBounds(bytes) {
80
+ const json = glbJson(bytes);
81
+ const node = (json.nodes ?? []).find((candidate) => candidate.mesh !== undefined);
82
+ if (!node || node.mesh === undefined)
83
+ throw new Error('quantizedGlbWorldBounds: no mesh node');
84
+ const t = node.translation ?? [0, 0, 0], k = node.scale ?? [1, 1, 1];
85
+ const min = [Infinity, Infinity, Infinity], max = [-Infinity, -Infinity, -Infinity];
86
+ for (const primitive of json.meshes[node.mesh].primitives) {
87
+ const accessor = json.accessors[primitive.attributes.POSITION];
88
+ if (!accessor.min || !accessor.max)
89
+ throw new Error('quantizedGlbWorldBounds: POSITION has no min/max');
90
+ // Normalised 16-bit positions span [0, 1] of the node scale; raw lattice units are used as stored.
91
+ const unit = accessor.normalized ? 1 / 65535 : 1;
92
+ for (let axis = 0; axis < 3; axis += 1) {
93
+ min[axis] = Math.min(min[axis], t[axis] + accessor.min[axis] * unit * k[axis]);
94
+ max[axis] = Math.max(max[axis], t[axis] + accessor.max[axis] * unit * k[axis]);
95
+ }
96
+ }
97
+ return { min, max };
98
+ }
73
99
  /**
74
100
  * The one shared HLOD material resource: a never-drawn carrier mesh whose single opaque PBR material carries
75
101
  * `HELIX_materials_city {kind: "facade"}` over a plain base. It has the same vertex attributes as the far cells that borrow
@@ -1 +1 @@
1
- {"version":3,"file":"glbParts.js","sourceRoot":"","sources":["../../../src/city/assemble/glbParts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glbParts.js","sourceRoot":"","sources":["../../../src/city/assemble/glbParts.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,10 @@ export interface ScenePlan {
34
34
  props: {
35
35
  enabled: boolean;
36
36
  };
37
+ /** Procedural roads (`helix city roads build`): per 1 km cell meshes and colliders, and the terrain cut/fill under them. */
38
+ roads: {
39
+ enabled: boolean;
40
+ };
37
41
  publish: {
38
42
  world: string | null;
39
43
  visibility: 'private' | 'unlisted' | 'public';
@@ -20,6 +20,7 @@ function defaultScenePlan(sourcePath) {
20
20
  terrain: { metresPerSample: 2 },
21
21
  vegetation: { enabled: true, maxTrees: 6000 },
22
22
  props: { enabled: true },
23
+ roads: { enabled: true },
23
24
  publish: { world: null, visibility: 'unlisted' },
24
25
  };
25
26
  }
@@ -38,6 +39,7 @@ function readScenePlan(file) {
38
39
  terrain: { ...base.terrain, ...plan.terrain },
39
40
  vegetation: { ...base.vegetation, ...plan.vegetation },
40
41
  props: { ...base.props, ...plan.props },
42
+ roads: { ...base.roads, ...plan.roads },
41
43
  publish: { ...base.publish, ...plan.publish },
42
44
  };
43
45
  if (!merged.source.path)
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/city/assemble/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/city/assemble/plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { CitySource } from '../source';
2
+ import { type ConformedTerrain } from '../terrain';
3
+ import { type RoadBuildReport, type RoadCell } from '../roads';
4
+ export interface SceneRoads {
5
+ cells: RoadCell[];
6
+ /** The ground with the roads cut and filled into it, and the per-sample road roles; null when the terrain is not a DEM. */
7
+ conformed: ConformedTerrain | null;
8
+ report: RoadBuildReport;
9
+ }
10
+ /** Null when the source has no road graph (a city without streets still assembles). */
11
+ export declare function buildSceneRoads(source: CitySource, metresPerSample: number): Promise<SceneRoads | null>;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ // Roads for a city scene: the procedural road generator (`src/city/roads`) run over the source, plus the terrain cut and
3
+ // fill under the finished ribbons. The cells (one meshopt GLB and one collider per 1,024 m) go into the composition; the
4
+ // conformed height raster and the asphalt / pavement roles go into the terrain, so distant ground still reads as streets
5
+ // once the road cells are evicted.
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.buildSceneRoads = buildSceneRoads;
8
+ const terrain_1 = require("../terrain");
9
+ const roads_1 = require("../roads");
10
+ /** Null when the source has no road graph (a city without streets still assembles). */
11
+ async function buildSceneRoads(source, metresPerSample) {
12
+ if (!source.roads?.edges.length)
13
+ return null;
14
+ const ground = (0, terrain_1.buildGroundModel)(source);
15
+ const result = await (0, roads_1.generateRoads)({ source, ground, collectSurfaces: true });
16
+ if (!result.cells.length)
17
+ return null;
18
+ let conformed = null;
19
+ if (source.terrain && source.terrain.kind !== 'flat') {
20
+ const surfaces = [];
21
+ for (const surface of result.surfaces) {
22
+ surfaces.push({ positions: surface.asphalt.positions, indices: surface.asphalt.indices, role: 'asphalt' });
23
+ surfaces.push({ positions: surface.pavement.positions, indices: surface.pavement.indices, role: 'pavement' });
24
+ }
25
+ conformed = (0, terrain_1.conformCityTerrain)(ground, source.manifest.frame.boundsXZ, surfaces, { metresPerSample });
26
+ }
27
+ return { cells: result.cells, conformed, report: result.report };
28
+ }
29
+ //# sourceMappingURL=roads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roads.js","sourceRoot":"","sources":["../../../src/city/assemble/roads.ts"],"names":[],"mappings":";AAAA,yHAAyH;AACzH,yHAAyH;AACzH,yHAAyH;AACzH,mCAAmC;;AAcnC,0CAeC;AA1BD,wCAA+G;AAC/G,oCAA8E;AAS9E,uFAAuF;AAChF,KAAK,UAAU,eAAe,CAAC,MAAkB,EAAE,eAAuB;IAC/E,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAA,0BAAgB,EAAC,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAa,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,SAAS,GAA4B,IAAI,CAAC;IAC9C,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAsB,EAAE,CAAC;QACvC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAC3G,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAChH,CAAC;QACD,SAAS,GAAG,IAAA,4BAAkB,EAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;IACxG,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACnE,CAAC"}
@@ -5,6 +5,15 @@ export interface CitySplatOptions {
5
5
  originZ: number;
6
6
  spanM: number;
7
7
  metresPerPixel: number;
8
+ /** The road generator's per-sample roles (0 natural, 1 asphalt, 2 pavement); when given they replace the painted street strokes. */
9
+ roads?: {
10
+ roles: Uint8Array;
11
+ samplesX: number;
12
+ samplesZ: number;
13
+ originX: number;
14
+ originZ: number;
15
+ metresPerSample: number;
16
+ };
8
17
  }
9
18
  /** Channel weights are exclusive per pixel (255 on one channel), so the preset's role rules never fight the authored picture. */
10
19
  export declare const CITY_SPLAT_ROLES: {