@hypersoniclabs/helix-cli 0.1.25-helix3.491 → 0.1.25-helix3.492
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.
- package/assets/city-materials/cs2-asphalt/asphalt_col.ktx2 +0 -0
- package/assets/city-materials/cs2-asphalt/overrides.json +6 -0
- package/dist/cs2/convert/terrainConform.d.ts +6 -0
- package/dist/cs2/convert/terrainConform.js +2 -1
- package/dist/cs2/convert/terrainConform.js.map +1 -1
- package/dist/cs2/restyle/command.js +16 -5
- package/dist/cs2/restyle/command.js.map +1 -1
- package/dist/cs2/restyle/format.d.ts +3 -0
- package/dist/cs2/restyle/format.js +18 -0
- package/dist/cs2/restyle/format.js.map +1 -1
- package/dist/cs2/restyle/library.d.ts +11 -0
- package/dist/cs2/restyle/library.js +51 -0
- package/dist/cs2/restyle/library.js.map +1 -0
- package/dist/cs2/restyle/restyle.d.ts +11 -2
- package/dist/cs2/restyle/restyle.js +50 -5
- package/dist/cs2/restyle/restyle.js.map +1 -1
- package/dist/cs2/restyle/ribbons.d.ts +21 -0
- package/dist/cs2/restyle/ribbons.js +156 -0
- package/dist/cs2/restyle/ribbons.js.map +1 -0
- package/dist/cs2/restyle/scenePatch.d.ts +11 -1
- package/dist/cs2/restyle/scenePatch.js +85 -1
- package/dist/cs2/restyle/scenePatch.js.map +1 -1
- package/dist/cs2/restyle/terrainCarve.d.ts +68 -0
- package/dist/cs2/restyle/terrainCarve.js +222 -0
- package/dist/cs2/restyle/terrainCarve.js.map +1 -0
- package/dist/cs2/restyle/terrainPack.d.ts +16 -0
- package/dist/cs2/restyle/terrainPack.js +78 -0
- package/dist/cs2/restyle/terrainPack.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_audio.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_engine.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_stock_events.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/fmod_studio.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/fsb5.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/sim_audio.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_ac.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_beamng.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_fixtures.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/test_beamng_engine.cpython-312.pyc +0 -0
- package/plugins/beamng-vehicle/bin/__pycache__/test_sim_audio.cpython-312.pyc +0 -0
|
Binary file
|
|
@@ -17,6 +17,12 @@ export interface TerrainConformOptions {
|
|
|
17
17
|
maxDeviationMetres?: number;
|
|
18
18
|
/** Default 0.7. */
|
|
19
19
|
minUpFacing?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Skip the pass that moves the samples under a surface onto it, and only hold the corners of every cell the surface
|
|
22
|
+
* crosses below it (never raising anything). This is what a COARSER lattice of the same field needs: its cells are 2, 4
|
|
23
|
+
* or 8 times wider than the posting the roads were conformed at, so a cell's corners sit beside the road, not under it.
|
|
24
|
+
*/
|
|
25
|
+
holdOnly?: boolean;
|
|
20
26
|
}
|
|
21
27
|
export interface TerrainConformStats {
|
|
22
28
|
samplesConformed: number;
|
|
@@ -29,6 +29,7 @@ function conformGridToSurfaces(grid, surfaces, options = {}) {
|
|
|
29
29
|
const clearance = options.clearanceMetres ?? exports.TERRAIN_CONFORM_CLEARANCE_METRES;
|
|
30
30
|
const maxDeviation = options.maxDeviationMetres ?? exports.TERRAIN_CONFORM_MAX_DEVIATION_METRES;
|
|
31
31
|
const minUpFacing = options.minUpFacing ?? exports.TERRAIN_CONFORM_MIN_UP_FACING;
|
|
32
|
+
const holdOnly = options.holdOnly === true;
|
|
32
33
|
const { heights, samplesX, samplesZ, originX, originZ, metresPerSample } = grid;
|
|
33
34
|
const halfCell = metresPerSample / 2;
|
|
34
35
|
const original = Float32Array.from(heights);
|
|
@@ -81,7 +82,7 @@ function conformGridToSurfaces(grid, surfaces, options = {}) {
|
|
|
81
82
|
const i1 = Math.min(samplesX - 1, Math.floor((Math.max(ax, bx, cx) - originX) / metresPerSample));
|
|
82
83
|
const j0 = Math.max(0, Math.ceil((Math.min(az, bz, cz) - originZ) / metresPerSample));
|
|
83
84
|
const j1 = Math.min(samplesZ - 1, Math.floor((Math.max(az, bz, cz) - originZ) / metresPerSample));
|
|
84
|
-
for (let j = j0; j <= j1; j += 1) {
|
|
85
|
+
for (let j = j0; !holdOnly && j <= j1; j += 1) {
|
|
85
86
|
const pz = originZ + j * metresPerSample;
|
|
86
87
|
for (let i = i0; i <= i1; i += 1) {
|
|
87
88
|
const px = originX + i * metresPerSample;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terrainConform.js","sourceRoot":"","sources":["../../../src/cs2/convert/terrainConform.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"terrainConform.js","sourceRoot":"","sources":["../../../src/cs2/convert/terrainConform.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,9 @@ function registerCityRoadsRestyleCs2(city, fail) {
|
|
|
46
46
|
.argument('<roadsDir>', 'baked road folder holding mesh-cells.json (Scene `roads/`)')
|
|
47
47
|
.requiredOption('--out <dir>', 'folder to write: roads/ (render, collider, markings-a, mesh-cells.json) and, with --scene, the patched document')
|
|
48
48
|
.option('--scene <file>', 'a sealed Scene v2 document whose roads.* elements are replaced by the restyled cells (and the city material library added)')
|
|
49
|
+
.option('--terrain <dir>', 'terrain source folder to carve under the roads at every stride the engine draws it at (default: the folder beside --scene when it holds terrain.json); written to <out>/terrain')
|
|
50
|
+
.option('--no-carve', 'leave the terrain as it is')
|
|
51
|
+
.option('--engine-asphalt', 'keep the engine\'s own asphalt textures (calibrated to the engine goldens\' lighting) instead of the CS2 calibration for the Granit shell\'s lighting')
|
|
49
52
|
.option('--library <dir>', 'city material library pack (default: the CLI\'s own assets/city-materials/v1)')
|
|
50
53
|
.option('--collider-max-triangles <n>', 'collider triangle budget per cell', '60000')
|
|
51
54
|
.option('--no-far', 'skip the far road layer (roads-lod/: simplified driving surface merged into 2,048 m cells, eager, so roads read from altitude)')
|
|
@@ -55,7 +58,7 @@ function registerCityRoadsRestyleCs2(city, fail) {
|
|
|
55
58
|
.action(async (roadsDir, opts) => {
|
|
56
59
|
try {
|
|
57
60
|
const { existsSync } = await Promise.resolve().then(() => __importStar(require('node:fs')));
|
|
58
|
-
const { join, resolve } = await Promise.resolve().then(() => __importStar(require('node:path')));
|
|
61
|
+
const { dirname, join, resolve } = await Promise.resolve().then(() => __importStar(require('node:path')));
|
|
59
62
|
const { restyleCs2Roads } = await Promise.resolve().then(() => __importStar(require('./restyle')));
|
|
60
63
|
const out = resolve(opts.out);
|
|
61
64
|
const target = join(out, 'roads');
|
|
@@ -72,18 +75,26 @@ function registerCityRoadsRestyleCs2(city, fail) {
|
|
|
72
75
|
colliderMaxTriangles: budget, farErrorM: farError, log: (message) => console.error(message),
|
|
73
76
|
...(opts.far ? { farOut: join(out, 'roads-lod') } : {}),
|
|
74
77
|
});
|
|
78
|
+
const terrainSource = opts.carve ? opts.terrain ? resolve(opts.terrain) : opts.scene && existsSync(join(dirname(resolve(opts.scene)), 'terrain', 'terrain.json')) ? join(dirname(resolve(opts.scene)), 'terrain') : undefined : undefined;
|
|
79
|
+
let terrain;
|
|
80
|
+
if (terrainSource) {
|
|
81
|
+
const { readRoadSurfaces } = await Promise.resolve().then(() => __importStar(require('./terrainCarve')));
|
|
82
|
+
const { carveTerrainFolder } = await Promise.resolve().then(() => __importStar(require('./terrainPack')));
|
|
83
|
+
const surfaces = await readRoadSurfaces(resolve(roadsDir), (message) => console.error(message));
|
|
84
|
+
terrain = await carveTerrainFolder(terrainSource, join(out, 'terrain'), surfaces);
|
|
85
|
+
}
|
|
75
86
|
let scene;
|
|
76
87
|
if (opts.scene) {
|
|
77
88
|
const { patchSceneRoads } = await Promise.resolve().then(() => __importStar(require('./scenePatch')));
|
|
78
|
-
scene = await patchSceneRoads({ sceneFile: resolve(opts.scene), out, ...(opts.library ? { library: resolve(opts.library) } : {}) });
|
|
89
|
+
scene = await patchSceneRoads({ sceneFile: resolve(opts.scene), out, ...(opts.library ? { library: resolve(opts.library) } : {}), ...(opts.engineAsphalt ? { engineAsphalt: true } : {}), ...(terrain ? { terrainDir: join(out, 'terrain') } : {}) });
|
|
79
90
|
}
|
|
80
91
|
const seconds = ((Date.now() - started) / 1000).toFixed(0);
|
|
81
92
|
if (opts.json) {
|
|
82
|
-
console.log(JSON.stringify({ report, ...(scene ? { scene } : {}) }, null, 2));
|
|
93
|
+
console.log(JSON.stringify({ report, ...(terrain ? { terrain } : {}), ...(scene ? { scene } : {}) }, null, 2));
|
|
83
94
|
return;
|
|
84
95
|
}
|
|
85
|
-
const { formatRestyleReport } = await Promise.resolve().then(() => __importStar(require('./format')));
|
|
86
|
-
console.log(`✔ ${target}\n${formatRestyleReport(report)}${scene ? `\n scene ${scene.sceneFile} (${scene.validation})` : ''}\n ${seconds} s`);
|
|
96
|
+
const { formatRestyleReport, formatTerrainCarveReport } = await Promise.resolve().then(() => __importStar(require('./format')));
|
|
97
|
+
console.log(`✔ ${target}\n${formatRestyleReport(report)}${terrain ? `\n${formatTerrainCarveReport(terrain)}` : ''}${scene ? `\n scene ${scene.sceneFile} (${scene.validation}${scene.libraryOverridden.length ? `; library: ${scene.libraryOverridden.join(', ')} calibrated for CS2` : ''})` : ''}\n ${seconds} s`);
|
|
87
98
|
}
|
|
88
99
|
catch (error) {
|
|
89
100
|
fail(`✖ ${error instanceof Error ? error.message : String(error)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/cs2/restyle/command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/cs2/restyle/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
import type { RestyleReport } from './restyle';
|
|
2
|
+
import type { CarvedTerrainReport } from './terrainPack';
|
|
2
3
|
export declare function formatRestyleReport(report: RestyleReport): string;
|
|
4
|
+
/** Share of road vertices under the drawn terrain at each stride, before and after the carve. */
|
|
5
|
+
export declare function formatTerrainCarveReport(report: CarvedTerrainReport): string;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.formatRestyleReport = formatRestyleReport;
|
|
4
|
+
exports.formatTerrainCarveReport = formatTerrainCarveReport;
|
|
5
|
+
const ribbons_1 = require("./ribbons");
|
|
4
6
|
const mib = (bytes) => `${(bytes / 1048576).toFixed(1)} MiB`;
|
|
5
7
|
function formatRestyleReport(report) {
|
|
6
8
|
const { before, after } = report;
|
|
@@ -9,9 +11,25 @@ function formatRestyleReport(report) {
|
|
|
9
11
|
` render ${before.render.cells} -> ${after.render.cells} cells (${after.render.refinedCells} from splitting crowded cells, densest ${after.render.maxCellTriangles} triangles), ${before.render.triangles} -> ${after.render.triangles} triangles, ${mib(before.render.bytes)} -> ${mib(after.render.bytes)}, widest ${before.render.maxSideM.toFixed(0)} -> ${after.render.maxSideM.toFixed(1)} m, ${before.render.materials} draws -> 1 per cell`,
|
|
10
12
|
` surfaces ${surfaces}`,
|
|
11
13
|
` markings ${before.markings.cells} -> ${after.markings.cells} cells, ${mib(before.markings.bytes)} -> ${mib(after.markings.bytes)}, ${after.markings.droppedTriangles} triangles dropped (no road under them)`,
|
|
14
|
+
` paint ${report.ribbons.ribbons} ribbons widened: ${report.ribbons.lane} lane and centre lines to ${ribbons_1.MARKING_WIDTH_M.lane} m, ${report.ribbons.edge} edge lines to ${ribbons_1.MARKING_WIDTH_M.edge} m, ${report.ribbons.stop} stop lines and crossing bars to ${ribbons_1.MARKING_WIDTH_M.stop} m, ${report.ribbons.untouched} as drawn`,
|
|
12
15
|
` collider ${before.collider.cells} -> ${after.collider.cells} cells, ${before.collider.triangles} -> ${after.collider.triangles} triangles, max ${before.collider.maxTriangles} -> ${after.collider.maxTriangles}, over budget ${before.collider.overBudget} -> ${after.collider.overBudget}, widest ${before.collider.maxSideM.toFixed(0)} -> ${after.collider.maxSideM.toFixed(1)} m, worst simplify error ${after.collider.maxErrorM.toFixed(2)} m`,
|
|
13
16
|
...(report.far ? [` far ${report.far.cells} cells of ${report.far.cellSizeM} m, ${report.far.trianglesBefore} -> ${report.far.triangles} triangles at ${report.far.errorM} m (worst ${report.far.maxErrorM.toFixed(2)} m), ${mib(report.far.bytes)}, eager`] : []),
|
|
14
17
|
` clipped ${report.clippedTriangles} triangles crossed a cell plane; ${report.outsideGridTriangles} fell outside the grid`,
|
|
15
18
|
].join('\n');
|
|
16
19
|
}
|
|
20
|
+
const pct = (share) => `${(share * 100).toFixed(2)}%`;
|
|
21
|
+
/** Share of road vertices under the drawn terrain at each stride, before and after the carve. */
|
|
22
|
+
function formatTerrainCarveReport(report) {
|
|
23
|
+
const { before, after, carve } = report;
|
|
24
|
+
const rows = before.lods.map((lod, at) => {
|
|
25
|
+
const next = after.lods[at];
|
|
26
|
+
const name = lod.stride === 8 ? 'stride 8 (32 m, the coarse layer)' : `stride ${lod.stride} (${lod.stride * 4} m)`;
|
|
27
|
+
return ` ${name.padEnd(34)} >= 5 cm ${pct(lod.share5cm)} -> ${pct(next.share5cm)} >= 50 cm ${pct(lod.share50cm)} -> ${pct(next.share50cm)}`;
|
|
28
|
+
});
|
|
29
|
+
return [
|
|
30
|
+
` terrain carved under ${before.roadVertices} road vertices (${before.covered} under tunnels or deep trenches left out, ${before.elevated} on decks counted as clear)`,
|
|
31
|
+
...rows,
|
|
32
|
+
` lowered ${carve.samplesLowered} samples (p99 ${carve.p99LoweredMetres.toFixed(2)} m, max ${carve.maxLoweredMetres.toFixed(2)} m); rewrote ${report.tilesRewritten} of ${report.tiles} tiles${report.coarseRewritten ? ' and the coarse layer' : ''}`,
|
|
33
|
+
].join('\n');
|
|
34
|
+
}
|
|
17
35
|
//# sourceMappingURL=format.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/cs2/restyle/format.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/cs2/restyle/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const CS2_LIBRARY_OVERRIDES_SCHEMA = "helix.city-materials-overrides/1";
|
|
2
|
+
export declare function cs2AsphaltOverridesDir(): string;
|
|
3
|
+
export interface Cs2LibraryPack {
|
|
4
|
+
/** A folder `packageCityLibrary` reads. */
|
|
5
|
+
dir: string;
|
|
6
|
+
/** Slots that differ from the engine's pack. */
|
|
7
|
+
overridden: string[];
|
|
8
|
+
cleanup(): void;
|
|
9
|
+
}
|
|
10
|
+
/** The engine's pack with the CS2 asphalt textures substituted. With no override folder it is the engine's pack itself. */
|
|
11
|
+
export declare function cs2CityLibraryPack(base?: string, overridesDir?: string): Cs2LibraryPack;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// The city material library as a CS2 city wants it. The engine's pack (`assets/city-materials/v1`) is calibrated to the
|
|
3
|
+
// engine's own city goldens; a CS2 city is lit by the Granit shell, a much hotter sun and sky, and the same asphalt
|
|
4
|
+
// texture read twice as bright there (sunlit mean sRGB 171 against the golden's 85, pale and gravelly). The asphalt
|
|
5
|
+
// colour (and the roughness its normal map carries) are re-encoded, darker and flatter, in `assets/city-materials/cs2-asphalt`;
|
|
6
|
+
// every other texture is the engine's, byte for byte. The pack is assembled in a temporary folder (symlinks and the
|
|
7
|
+
// overrides, one rewritten `library.json`) because `packageCityLibrary` reads a folder.
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.CS2_LIBRARY_OVERRIDES_SCHEMA = void 0;
|
|
10
|
+
exports.cs2AsphaltOverridesDir = cs2AsphaltOverridesDir;
|
|
11
|
+
exports.cs2CityLibraryPack = cs2CityLibraryPack;
|
|
12
|
+
const node_crypto_1 = require("node:crypto");
|
|
13
|
+
const node_fs_1 = require("node:fs");
|
|
14
|
+
const node_os_1 = require("node:os");
|
|
15
|
+
const node_path_1 = require("node:path");
|
|
16
|
+
const materials_1 = require("../../city/assemble/materials");
|
|
17
|
+
exports.CS2_LIBRARY_OVERRIDES_SCHEMA = 'helix.city-materials-overrides/1';
|
|
18
|
+
function cs2AsphaltOverridesDir() {
|
|
19
|
+
return (0, node_path_1.resolve)(__dirname, '..', '..', '..', 'assets', 'city-materials', 'cs2-asphalt');
|
|
20
|
+
}
|
|
21
|
+
/** The engine's pack with the CS2 asphalt textures substituted. With no override folder it is the engine's pack itself. */
|
|
22
|
+
function cs2CityLibraryPack(base = (0, materials_1.defaultCityMaterialsPack)(), overridesDir = cs2AsphaltOverridesDir()) {
|
|
23
|
+
const manifestFile = (0, node_path_1.join)(overridesDir, 'overrides.json');
|
|
24
|
+
if (!(0, node_fs_1.existsSync)(manifestFile))
|
|
25
|
+
return { dir: base, overridden: [], cleanup: () => undefined };
|
|
26
|
+
const overrides = JSON.parse((0, node_fs_1.readFileSync)(manifestFile, 'utf8'));
|
|
27
|
+
if (overrides.schema !== exports.CS2_LIBRARY_OVERRIDES_SCHEMA)
|
|
28
|
+
throw new Error(`${manifestFile}: not a ${exports.CS2_LIBRARY_OVERRIDES_SCHEMA} file`);
|
|
29
|
+
const pack = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(base, 'library.json'), 'utf8'));
|
|
30
|
+
const dir = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'helix-cs2-library-'));
|
|
31
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.join)(dir, 'tex'), { recursive: true });
|
|
32
|
+
const textures = {};
|
|
33
|
+
for (const [slot, entry] of Object.entries(pack.textures)) {
|
|
34
|
+
const override = overrides.textures[slot];
|
|
35
|
+
if (!override) {
|
|
36
|
+
(0, node_fs_1.symlinkSync)((0, node_path_1.join)(base, entry.path), (0, node_path_1.join)(dir, entry.path));
|
|
37
|
+
textures[slot] = entry;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const source = (0, node_path_1.join)(overridesDir, override.file);
|
|
41
|
+
const data = (0, node_fs_1.readFileSync)(source);
|
|
42
|
+
(0, node_fs_1.symlinkSync)(source, (0, node_path_1.join)(dir, entry.path));
|
|
43
|
+
textures[slot] = { ...entry, bytes: data.length, sha256: (0, node_crypto_1.createHash)('sha256').update(data).digest('hex'), width: override.width, height: override.height, srgb: override.srgb };
|
|
44
|
+
}
|
|
45
|
+
for (const slot of Object.keys(overrides.textures))
|
|
46
|
+
if (!pack.textures[slot])
|
|
47
|
+
throw new Error(`${manifestFile}: the engine's pack has no texture slot "${slot}"`);
|
|
48
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(dir, 'library.json'), `${JSON.stringify({ ...pack, textures }, null, 2)}\n`, 'utf8');
|
|
49
|
+
return { dir, overridden: Object.keys(overrides.textures), cleanup: () => (0, node_fs_1.rmSync)(dir, { recursive: true, force: true }) };
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=library.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../../src/cs2/restyle/library.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type CellGlbResult } from './cellGlb';
|
|
2
|
+
import { type RibbonStats } from './ribbons';
|
|
2
3
|
export declare const RESTYLE_COLLIDER_MAX_TRIANGLES = 60000;
|
|
3
4
|
/** Scene perf rule P05 refuses a streamed cell over 300,000 triangles; a cell (surface and paint) is split before 250,000. */
|
|
4
5
|
export declare const RESTYLE_CELL_MAX_TRIANGLES = 250000;
|
|
@@ -14,8 +15,14 @@ export declare const MARKING_PAINT: {
|
|
|
14
15
|
readonly white: readonly [0.92, 0.92, 0.9];
|
|
15
16
|
readonly yellow: readonly [0.85, 0.62, 0.12];
|
|
16
17
|
};
|
|
17
|
-
/** `_ROAD.w` of paint: how worn it reads (the shader scales chipping and wear by 0.35 + 1.3 x this). */
|
|
18
|
-
export declare const MARKING_AGE = 0.
|
|
18
|
+
/** `_ROAD.w` of paint: how worn it reads (the shader scales chipping and wear by 0.35 + 1.3 x this). Fresh paint: worn lines vanish at 60 m. */
|
|
19
|
+
export declare const MARKING_AGE = 0.04;
|
|
20
|
+
/**
|
|
21
|
+
* The solid core of the `line` tile across its width, as a fraction: texels 12 to 55 of 64 are paint (about 80 % alpha), the
|
|
22
|
+
* rest is a transparent margin, so a ribbon mapped edge to edge paints only 69 % of its width. Rails map to the core instead,
|
|
23
|
+
* a texel and a half inside it, so the painted width is the ribbon's width.
|
|
24
|
+
*/
|
|
25
|
+
export declare const MARKING_LINE_CORE: readonly [0.22, 0.84];
|
|
19
26
|
export interface RestyleOptions {
|
|
20
27
|
colliderMaxTriangles?: number;
|
|
21
28
|
/** Triangles above which a render cell is split into quarters (default RESTYLE_CELL_MAX_TRIANGLES). */
|
|
@@ -72,6 +79,8 @@ export interface RestyleReport {
|
|
|
72
79
|
outsideGridTriangles: number;
|
|
73
80
|
textures: number;
|
|
74
81
|
colliders: RestyleColliderReport[];
|
|
82
|
+
/** Paint ribbons by class (`ribbons.ts`). */
|
|
83
|
+
ribbons: RibbonStats;
|
|
75
84
|
/** The far layer, when asked for. */
|
|
76
85
|
far?: {
|
|
77
86
|
cells: number;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// * every cell is clipped at the 1,024 m grid (a baked piece overhangs its cell by up to 70 m, which is what scene perf
|
|
9
9
|
// rule P05 refuses) and the collider tier is welded and simplified to 60k triangles.
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.MARKING_AGE = exports.MARKING_PAINT = exports.MARKING_LINE_TILE = exports.RESTYLE_COLLIDER_ERROR_CAP_M = exports.RESTYLE_COLLIDER_ERROR_M = exports.RESTYLE_CELL_MIN_SIZE_M = exports.RESTYLE_CELL_MAX_TRIANGLES = exports.RESTYLE_COLLIDER_MAX_TRIANGLES = void 0;
|
|
11
|
+
exports.MARKING_LINE_CORE = exports.MARKING_AGE = exports.MARKING_PAINT = exports.MARKING_LINE_TILE = exports.RESTYLE_COLLIDER_ERROR_CAP_M = exports.RESTYLE_COLLIDER_ERROR_M = exports.RESTYLE_CELL_MIN_SIZE_M = exports.RESTYLE_CELL_MAX_TRIANGLES = exports.RESTYLE_COLLIDER_MAX_TRIANGLES = void 0;
|
|
12
12
|
exports.restyleCs2Roads = restyleCs2Roads;
|
|
13
13
|
const node_crypto_1 = require("node:crypto");
|
|
14
14
|
const promises_1 = require("node:fs/promises");
|
|
@@ -18,9 +18,11 @@ const glb_1 = require("../convert/glb");
|
|
|
18
18
|
const bakedCell_1 = require("./bakedCell");
|
|
19
19
|
const cellGlb_1 = require("./cellGlb");
|
|
20
20
|
const classify_1 = require("./classify");
|
|
21
|
+
const terrainConform_1 = require("../convert/terrainConform");
|
|
21
22
|
const far_1 = require("./far");
|
|
22
23
|
const grow_1 = require("./grow");
|
|
23
24
|
const refine_1 = require("./refine");
|
|
25
|
+
const ribbons_1 = require("./ribbons");
|
|
24
26
|
const walk_1 = require("./walk");
|
|
25
27
|
exports.RESTYLE_COLLIDER_MAX_TRIANGLES = 60_000;
|
|
26
28
|
/** Scene perf rule P05 refuses a streamed cell over 300,000 triangles; a cell (surface and paint) is split before 250,000. */
|
|
@@ -34,8 +36,14 @@ exports.RESTYLE_COLLIDER_ERROR_CAP_M = 0.8;
|
|
|
34
36
|
exports.MARKING_LINE_TILE = [0.5, 0.5, 0.0625, 0.5];
|
|
35
37
|
/** The engine's `MARKING_PAINT`. */
|
|
36
38
|
exports.MARKING_PAINT = { white: [0.92, 0.92, 0.9], yellow: [0.85, 0.62, 0.12] };
|
|
37
|
-
/** `_ROAD.w` of paint: how worn it reads (the shader scales chipping and wear by 0.35 + 1.3 x this). */
|
|
38
|
-
exports.MARKING_AGE = 0.
|
|
39
|
+
/** `_ROAD.w` of paint: how worn it reads (the shader scales chipping and wear by 0.35 + 1.3 x this). Fresh paint: worn lines vanish at 60 m. */
|
|
40
|
+
exports.MARKING_AGE = 0.04;
|
|
41
|
+
/**
|
|
42
|
+
* The solid core of the `line` tile across its width, as a fraction: texels 12 to 55 of 64 are paint (about 80 % alpha), the
|
|
43
|
+
* rest is a transparent margin, so a ribbon mapped edge to edge paints only 69 % of its width. Rails map to the core instead,
|
|
44
|
+
* a texel and a half inside it, so the painted width is the ribbon's width.
|
|
45
|
+
*/
|
|
46
|
+
exports.MARKING_LINE_CORE = [0.22, 0.84];
|
|
39
47
|
/** `_ROAD` of asphalt: lateral 0.5, no lane structure (the baked pieces are lane fragments), wear 0.5. */
|
|
40
48
|
const ASPHALT_ROAD = [0, 128, 0, 128];
|
|
41
49
|
// ---------------------------------------------------------------------------------------------------- surfaces
|
|
@@ -91,6 +99,38 @@ function addSurface(prim, grid, cells, tally, bySurface) {
|
|
|
91
99
|
cell.indices.push3(base, base + 1, base + 2);
|
|
92
100
|
});
|
|
93
101
|
}
|
|
102
|
+
/** A world-space index of the asphalt triangles (the edge-line test asks it whether a point beside a ribbon is still road). */
|
|
103
|
+
function asphaltIndex(surfaces, grid) {
|
|
104
|
+
let triangles = 0;
|
|
105
|
+
for (const cell of surfaces.values()) {
|
|
106
|
+
const kinds = cell.kinds.view(), indices = cell.indices.view();
|
|
107
|
+
for (let at = 0; at < indices.length; at += 3)
|
|
108
|
+
if (kinds[indices[at]] === classify_1.CITY_SURFACE.ASPHALT && kinds[indices[at + 1]] === classify_1.CITY_SURFACE.ASPHALT && kinds[indices[at + 2]] === classify_1.CITY_SURFACE.ASPHALT)
|
|
109
|
+
triangles += 1;
|
|
110
|
+
}
|
|
111
|
+
if (triangles === 0)
|
|
112
|
+
return null;
|
|
113
|
+
const positions = new Float32Array(triangles * 9);
|
|
114
|
+
const indices = new Uint32Array(triangles * 3);
|
|
115
|
+
let out = 0;
|
|
116
|
+
for (const [cx, cz, cell] of ordered(surfaces)) {
|
|
117
|
+
const kinds = cell.kinds.view(), ids = cell.indices.view(), local = cell.positions.view();
|
|
118
|
+
const ox = cx * grid.size + grid.originX, oz = cz * grid.size + grid.originZ;
|
|
119
|
+
for (let at = 0; at < ids.length; at += 3) {
|
|
120
|
+
if (kinds[ids[at]] !== classify_1.CITY_SURFACE.ASPHALT || kinds[ids[at + 1]] !== classify_1.CITY_SURFACE.ASPHALT || kinds[ids[at + 2]] !== classify_1.CITY_SURFACE.ASPHALT)
|
|
121
|
+
continue;
|
|
122
|
+
for (let k = 0; k < 3; k += 1) {
|
|
123
|
+
const id = ids[at + k];
|
|
124
|
+
positions[out * 3] = local[id * 3] + ox;
|
|
125
|
+
positions[out * 3 + 1] = local[id * 3 + 1];
|
|
126
|
+
positions[out * 3 + 2] = local[id * 3 + 2] + oz;
|
|
127
|
+
indices[out] = out;
|
|
128
|
+
out += 1;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return (0, terrainConform_1.buildSurfaceHeightIndex)([{ positions, indices }]);
|
|
133
|
+
}
|
|
94
134
|
function surfaceMesh(cell) {
|
|
95
135
|
const kinds = cell.kinds.view();
|
|
96
136
|
const road = new Uint8Array(kinds.length * 4);
|
|
@@ -153,7 +193,7 @@ function markingMesh(cell) {
|
|
|
153
193
|
const age = Math.round(exports.MARKING_AGE * 255);
|
|
154
194
|
for (let at = 0; at < sides.length; at += 1) {
|
|
155
195
|
// Across the ribbon from rail to rail; along it the middle of the tile, which is solid paint at any length.
|
|
156
|
-
uvs[at * 2] = u0 + sides[at] *
|
|
196
|
+
uvs[at * 2] = u0 + du * (exports.MARKING_LINE_CORE[0] + sides[at] * (exports.MARKING_LINE_CORE[1] - exports.MARKING_LINE_CORE[0]));
|
|
157
197
|
uvs[at * 2 + 1] = v0 + dv * 0.5;
|
|
158
198
|
road[at * 4 + 3] = age;
|
|
159
199
|
const paint = yellow[at] ? exports.MARKING_PAINT.yellow : exports.MARKING_PAINT.white;
|
|
@@ -263,6 +303,7 @@ async function restyleCs2Roads(source, out, options = {}) {
|
|
|
263
303
|
outsideGridTriangles: 0,
|
|
264
304
|
textures: 0,
|
|
265
305
|
colliders: [],
|
|
306
|
+
ribbons: (0, ribbons_1.emptyRibbonStats)(),
|
|
266
307
|
};
|
|
267
308
|
// ---- render and paint tiers, built in memory at the source grid
|
|
268
309
|
const surfaces = new Map();
|
|
@@ -274,10 +315,14 @@ async function restyleCs2Roads(source, out, options = {}) {
|
|
|
274
315
|
log(`render ${at + 1}/${index.render.length}`);
|
|
275
316
|
}
|
|
276
317
|
const markings = new Map();
|
|
318
|
+
const asphalt = asphaltIndex(surfaces, grid);
|
|
319
|
+
const onAsphalt = (x, y, z) => { const h = asphalt?.heightAt(x, z, y); return h !== null && h !== undefined && Math.abs(h - y) < 0.5; };
|
|
277
320
|
for (const cell of markingCells) {
|
|
278
321
|
const baked = await (0, bakedCell_1.readBakedCell)(new Uint8Array(await (0, promises_1.readFile)((0, node_path_1.join)(source, cell.file))));
|
|
279
|
-
for (const prim of baked.primitives)
|
|
322
|
+
for (const prim of baked.primitives) {
|
|
323
|
+
(0, ribbons_1.widenRibbons)(prim, asphalt ? onAsphalt : null, report.ribbons);
|
|
280
324
|
addMarking(prim, grid, markings, tally);
|
|
325
|
+
}
|
|
281
326
|
}
|
|
282
327
|
// ---- far layer: the driving surface of the cells above, welded across their borders and simplified.
|
|
283
328
|
if (options.farOut) {
|