@helix3/helix-cli 0.1.18-helix3.310 → 0.1.18-helix3.312
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/dist/bundle.js +13 -0
- package/dist/bundle.js.map +1 -1
- package/dist/screenshot/staticServe.d.ts +2 -0
- package/dist/screenshot/staticServe.js +4 -0
- package/dist/screenshot/staticServe.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/verifySubPath.js +5 -1
- package/dist/verifySubPath.js.map +1 -1
- package/package.json +3 -3
- package/plugins/beamng-vehicle/README.md +4 -0
- package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.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/beamng-vehicle.mjs +16 -8
- package/plugins/beamng-vehicle/bin/convert-beamng.py +21 -8
- package/plugins/beamng-vehicle/bridge-plugin.json +1 -1
- package/plugins/beamng-vehicle/lib/dae-scan.mjs +40 -0
- package/plugins/beamng-vehicle/lib/palette-contract.mjs +6 -0
- package/plugins/beamng-vehicle/lib/vehicle-qa.mjs +8 -3
- package/plugins/beamng-vehicle/lib/vehicle-source.mjs +2 -1
- package/plugins/beamng-vehicle/vendor/vehicle-package-v2.mjs +813 -0
package/dist/verifySubPath.js
CHANGED
|
@@ -59,6 +59,7 @@ exports.formatSubPathResult = formatSubPathResult;
|
|
|
59
59
|
// 2. a request the page made that 404s → the missing declared asset
|
|
60
60
|
// 3. a blank render → the world that "loads" but shows nothing
|
|
61
61
|
const node_fs_1 = require("node:fs");
|
|
62
|
+
const bundle_1 = require("./bundle");
|
|
62
63
|
const node_path_1 = require("node:path");
|
|
63
64
|
const playwright = __importStar(require("playwright"));
|
|
64
65
|
const sharp_1 = __importDefault(require("sharp"));
|
|
@@ -114,7 +115,10 @@ async function verifySubPath(options) {
|
|
|
114
115
|
const findings = [];
|
|
115
116
|
const requests = [];
|
|
116
117
|
const notes = [];
|
|
117
|
-
|
|
118
|
+
// Serve the bytes publish would upload, not every file left in dist/. Otherwise an excluded
|
|
119
|
+
// installed.json satisfies a local fetch and verify passes while the live Build returns 404.
|
|
120
|
+
const allowedFiles = new Set((0, bundle_1.checkBundle)(directory).files.map((file) => file.path));
|
|
121
|
+
const server = await (0, staticServe_1.startStaticServer)(directory, {}, mountPrefix, { allowedFiles });
|
|
118
122
|
// An empty prefix means "serve at the origin root" — the control case that shows why every other
|
|
119
123
|
// local gate misses a root-absolute url. It must produce `/`, not `//`.
|
|
120
124
|
const trimmedPrefix = mountPrefix.replace(/^\/+|\/+$/g, '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifySubPath.js","sourceRoot":"","sources":["../src/verifySubPath.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verifySubPath.js","sourceRoot":"","sources":["../src/verifySubPath.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helix3/helix-cli",
|
|
3
|
-
"version": "0.1.18-helix3.
|
|
3
|
+
"version": "0.1.18-helix3.312",
|
|
4
4
|
"description": "helix — the HELIX creator CLI: scaffold, validate, and publish Instant Worlds",
|
|
5
5
|
"main": "dist/lib.js",
|
|
6
6
|
"types": "dist/lib.d.ts",
|
|
@@ -68,8 +68,8 @@
|
|
|
68
68
|
"@gltf-transform/core": "^4.4.0",
|
|
69
69
|
"@gltf-transform/extensions": "^4.4.0",
|
|
70
70
|
"@gltf-transform/functions": "^4.4.0",
|
|
71
|
-
"@hypersoniclabs/helix-manifest": "npm:@helix3/helix-manifest@0.3.
|
|
72
|
-
"@hypersoniclabs/helix-sdk": "npm:@helix3/helix-sdk@0.1.
|
|
71
|
+
"@hypersoniclabs/helix-manifest": "npm:@helix3/helix-manifest@0.3.42-helix3.87",
|
|
72
|
+
"@hypersoniclabs/helix-sdk": "npm:@helix3/helix-sdk@0.1.9-helix3.129",
|
|
73
73
|
"@loaders.gl/textures": "^4.4.3",
|
|
74
74
|
"commander": "^13.0.0",
|
|
75
75
|
"ktx-parse": "1.1.0",
|
|
@@ -36,6 +36,10 @@ Vehicle imports require the canonical Palette as a named, fingerprinted Bridge i
|
|
|
36
36
|
helix bridge import <unpacked-mod> --input palette=<helix-materials/palette.json>
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
+
The Palette contract may be `helix-palette/4` (the current `asset-packs/helix-materials/palette.json`) or the older `helix-palette/3`; the importer reads only `families[].id`, `definitionVersion`, `physical.sizeMeters` and `shader.defaults`, which are identical in both, and the vehicle receipt records the contract it actually read. The supported list lives in `lib/palette-contract.mjs` and `bin/convert-beamng.py` (`SUPPORTED_PALETTE_CONTRACTS`).
|
|
40
|
+
|
|
41
|
+
Bridge snapshots this plugin directory into `<work>/plugins/<id>` before running it, so everything the plugin imports must live inside it. The Vehicle Package v2 validator is therefore mirrored byte-for-byte at `plugins/beamng-vehicle/vendor/vehicle-package-v2.mjs`; `scripts/vendor-vehicle-package-v2.mjs --write/--check` keeps it and the top-level `vendor/` copy in step. Source DAEs (500 MB and more) are scanned in bounded chunks (`lib/dae-scan.mjs`), never read into one JS string.
|
|
42
|
+
|
|
39
43
|
Local development:
|
|
40
44
|
|
|
41
45
|
```bash
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -8,9 +8,11 @@ import process from 'node:process';
|
|
|
8
8
|
import { fileURLToPath } from 'node:url';
|
|
9
9
|
import { auditVehicleGlb, injectVehicleMaterialBindings, injectVehicleReceipt, readVehicleReceipt } from '../lib/vehicle-qa.mjs';
|
|
10
10
|
import { inspectBeamngCommonDependency, materializeBeamngCommonDependency } from '../lib/common-dependency.mjs';
|
|
11
|
+
import { daeHasName } from '../lib/dae-scan.mjs';
|
|
12
|
+
import { SUPPORTED_PALETTE_CONTRACTS } from '../lib/palette-contract.mjs';
|
|
11
13
|
import { sha256FileSync } from '../lib/file-identity.mjs';
|
|
12
14
|
import { buildVehicleSourceManifest, markVehicleSourceFunctionallyLowered, BEAMNG_VEHICLE_SOURCE_SCHEMA } from '../lib/vehicle-source.mjs';
|
|
13
|
-
import { validateVehiclePackage } from '
|
|
15
|
+
import { validateVehiclePackage } from '../vendor/vehicle-package-v2.mjs';
|
|
14
16
|
|
|
15
17
|
const MAX_FILES = 50_000;
|
|
16
18
|
const MAX_DAE = 12;
|
|
@@ -50,11 +52,11 @@ function semanticCount(files, pattern) {
|
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
function daeHasAuthoredSteering(path) {
|
|
53
|
-
return /
|
|
55
|
+
return daeHasName(path, /steer/i);
|
|
54
56
|
}
|
|
55
57
|
|
|
56
58
|
function daeHasAuthoredTyre(path) {
|
|
57
|
-
return /(?:
|
|
59
|
+
return daeHasName(path, /(?:tyre|tire)/i);
|
|
58
60
|
}
|
|
59
61
|
|
|
60
62
|
function commonGeometryRoot(root) {
|
|
@@ -65,8 +67,7 @@ function commonGeometryRoot(root) {
|
|
|
65
67
|
}
|
|
66
68
|
|
|
67
69
|
function daeHasAuthoredRoadWheel(path) {
|
|
68
|
-
|
|
69
|
-
return names.some((name) => /(?:tyre|tire|(?<!steering)(?<!steering_)(?<!steer_)wheel(?!well)|(?<!t)rim)/i.test(name));
|
|
70
|
+
return daeHasName(path, /(?:tyre|tire|(?<!steering)(?<!steering_)(?<!steer_)wheel(?!well)|(?<!t)rim)/i);
|
|
70
71
|
}
|
|
71
72
|
|
|
72
73
|
function authoredTyreDependency(root) {
|
|
@@ -100,8 +101,8 @@ function vehiclePalette(path) {
|
|
|
100
101
|
let document;
|
|
101
102
|
try { document = JSON.parse(readFileSync(path, 'utf8')); }
|
|
102
103
|
catch (error) { throw new Error(`BeamNG Palette input is not valid JSON: ${error instanceof Error ? error.message : String(error)}`); }
|
|
103
|
-
if (document?.contract
|
|
104
|
-
throw new Error(
|
|
104
|
+
if (!SUPPORTED_PALETTE_CONTRACTS.includes(document?.contract) || !Array.isArray(document.families)) {
|
|
105
|
+
throw new Error(`BeamNG Palette input contract must be ${SUPPORTED_PALETTE_CONTRACTS.map((id) => `'${id}'`).join(' or ')} with a families array`);
|
|
105
106
|
}
|
|
106
107
|
const required = ['vehicle-paint-metallic', 'vehicle-glass', 'tire-rubber', 'chrome', 'stainless-steel', 'aluminum-brushed',
|
|
107
108
|
'brake-rotor', 'brake-caliper-painted', 'vehicle-interior-plastic', 'vehicle-leather', 'vehicle-carpet',
|
|
@@ -118,6 +119,7 @@ function vehiclePalette(path) {
|
|
|
118
119
|
}
|
|
119
120
|
return {
|
|
120
121
|
path: resolve(path),
|
|
122
|
+
contract: document.contract,
|
|
121
123
|
familyVersions: Object.fromEntries(required.map((id) => [id, families.get(id).definitionVersion])),
|
|
122
124
|
familyDefaults: Object.fromEntries(required.map((id) => [id, {
|
|
123
125
|
roughness: families.get(id).shader.defaults.roughness,
|
|
@@ -1217,6 +1219,12 @@ async function main() {
|
|
|
1217
1219
|
|
|
1218
1220
|
export { convert };
|
|
1219
1221
|
|
|
1220
|
-
|
|
1222
|
+
// Compare real paths: argv[1] keeps a symlinked prefix (macOS /var -> /private/var) that import.meta.url
|
|
1223
|
+
// has already resolved, and a plain comparison then exits 0 without running anything.
|
|
1224
|
+
const invokedDirectly = (() => {
|
|
1225
|
+
try { return Boolean(process.argv[1]) && realpathSync(process.argv[1]) === realpathSync(fileURLToPath(import.meta.url)); }
|
|
1226
|
+
catch { return false; }
|
|
1227
|
+
})();
|
|
1228
|
+
if (invokedDirectly) {
|
|
1221
1229
|
main().catch((error) => { process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`); process.exitCode = 1; });
|
|
1222
1230
|
}
|
|
@@ -16,6 +16,12 @@ import sys
|
|
|
16
16
|
import xml.etree.ElementTree as ET
|
|
17
17
|
from pathlib import Path
|
|
18
18
|
|
|
19
|
+
# Blender runs `--python <script>` without the script's directory on sys.path (4.0 and 4.5 on
|
|
20
|
+
# Linux), so sibling modules must be made importable explicitly before they are imported.
|
|
21
|
+
_SCRIPT_DIR = str(Path(__file__).resolve().parent)
|
|
22
|
+
if _SCRIPT_DIR not in sys.path:
|
|
23
|
+
sys.path.insert(0, _SCRIPT_DIR)
|
|
24
|
+
|
|
19
25
|
import bpy
|
|
20
26
|
import numpy as np
|
|
21
27
|
from mathutils import Matrix, Vector
|
|
@@ -588,13 +594,20 @@ VEHICLE_MATERIAL_ROLES = (
|
|
|
588
594
|
)
|
|
589
595
|
|
|
590
596
|
|
|
591
|
-
|
|
597
|
+
# Contracts whose `families[]` carry the fields this converter reads (id, definitionVersion,
|
|
598
|
+
# physical.sizeMeters, shader.defaults). /4 is the current asset pack; /3 stays accepted.
|
|
599
|
+
SUPPORTED_PALETTE_CONTRACTS = ("helix-palette/4", "helix-palette/3")
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
def load_vehicle_palette(path: Path) -> tuple[str, dict[str, dict]]:
|
|
592
603
|
try:
|
|
593
604
|
document = json.loads(path.read_text())
|
|
594
605
|
except Exception as error:
|
|
595
606
|
raise RuntimeError(f"Palette input is not valid JSON: {error}")
|
|
596
|
-
|
|
597
|
-
|
|
607
|
+
contract = document.get("contract")
|
|
608
|
+
if contract not in SUPPORTED_PALETTE_CONTRACTS or not isinstance(document.get("families"), list):
|
|
609
|
+
raise RuntimeError(f"Palette input must use contract {' or '.join(SUPPORTED_PALETTE_CONTRACTS)} "
|
|
610
|
+
"with a families array")
|
|
598
611
|
families = {row.get("id"): row for row in document["families"] if isinstance(row, dict)}
|
|
599
612
|
required = {row[2] for row in VEHICLE_MATERIAL_ROLES} | {"vehicle-interior-plastic"}
|
|
600
613
|
for family_id in required:
|
|
@@ -606,7 +619,7 @@ def load_vehicle_palette(path: Path) -> dict[str, dict]:
|
|
|
606
619
|
value = defaults.get(field)
|
|
607
620
|
if not isinstance(value, (int, float)) or not 0 <= value <= 1:
|
|
608
621
|
raise RuntimeError(f"Palette family {family_id} has invalid {field}")
|
|
609
|
-
return families
|
|
622
|
+
return contract, families
|
|
610
623
|
|
|
611
624
|
|
|
612
625
|
def vehicle_material_role(name: str) -> tuple[str, str, tuple]:
|
|
@@ -640,7 +653,7 @@ def helix_material_binding(family: dict, source_id: str, tint: tuple | None,
|
|
|
640
653
|
|
|
641
654
|
def restore_materials(roots: list[Path], palette_path: Path, vehicle_root: Path,
|
|
642
655
|
configured_paint: list[float] | None = None) -> dict:
|
|
643
|
-
palette = load_vehicle_palette(palette_path)
|
|
656
|
+
palette_contract, palette = load_vehicle_palette(palette_path)
|
|
644
657
|
definitions: dict[str, tuple[dict, Path]] = {}
|
|
645
658
|
source_diagnostics = {key: [] for key in ("parseFailures", "shadowedDeclarations", "stageConflicts",
|
|
646
659
|
"dynamicTextures", "sentinels", "unsupportedMaps")}
|
|
@@ -840,7 +853,7 @@ def restore_materials(roots: list[Path], palette_path: Path, vehicle_root: Path,
|
|
|
840
853
|
declaration_provenance = sorted({json.dumps(row[0].get("provenance"), sort_keys=True)
|
|
841
854
|
for row in definitions.values() if row[0].get("provenance")})
|
|
842
855
|
return {"definitions": len({id(row[0]) for row in definitions.values()}), "resolved": resolved, "mapped": mapped, "materials": total,
|
|
843
|
-
"paletteContract":
|
|
856
|
+
"paletteContract": palette_contract, "bound": total, "factorDefaults": factor_defaults,
|
|
844
857
|
"familyVersions": {family_id: family["definitionVersion"] for family_id, family in palette.items()},
|
|
845
858
|
"renderReady": total, "renderReadyCoverage": 1.0 if total else 0.0,
|
|
846
859
|
"roles": role_counts, "bindings": bindings,
|
|
@@ -1315,6 +1328,7 @@ def decimate(objects: list[bpy.types.Object], limit: int = 285_000) -> tuple[int
|
|
|
1315
1328
|
def main() -> None:
|
|
1316
1329
|
args = arguments()
|
|
1317
1330
|
source_root = Path(args.source_root).resolve()
|
|
1331
|
+
vehicle_root = Path(args.vehicle_root).resolve()
|
|
1318
1332
|
bpy.ops.wm.read_factory_settings(use_empty=True)
|
|
1319
1333
|
for dae in args.dae:
|
|
1320
1334
|
print(f"[beamng] importing {dae}")
|
|
@@ -1322,7 +1336,7 @@ def main() -> None:
|
|
|
1322
1336
|
objects = meshes()
|
|
1323
1337
|
if not objects:
|
|
1324
1338
|
raise RuntimeError("selected BeamNG DAE contains no renderable meshes")
|
|
1325
|
-
wanted, config = configured_meshes(
|
|
1339
|
+
wanted, config = configured_meshes(vehicle_root, source_root, args.dae,
|
|
1326
1340
|
args.configuration_hint, {obj.name for obj in objects},
|
|
1327
1341
|
[Path(value).resolve() for value in args.material_root],
|
|
1328
1342
|
Path(args.part_index).resolve(), args.bridge_plan_key,
|
|
@@ -1485,7 +1499,6 @@ def main() -> None:
|
|
|
1485
1499
|
for obj in rims.values():
|
|
1486
1500
|
size = dimensions(obj)
|
|
1487
1501
|
wheel_radii.append(max(size.y, size.z) * 0.5)
|
|
1488
|
-
vehicle_root = Path(args.vehicle_root)
|
|
1489
1502
|
audio_limits = {extension: AUDIO_SCAN_LIMIT for extension in (".wav", ".ogg", ".flac", ".mp3")}
|
|
1490
1503
|
audio_files = len(bounded_asset_paths([vehicle_root], audio_limits))
|
|
1491
1504
|
audio_refs = int(bool(config.get("selectedPartSummary", {}).get("semanticEvidence", {}).get("audio")))
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": "helix.bridge-plugin/1",
|
|
3
3
|
"id": "hypersonic.beamng-vehicle",
|
|
4
4
|
"name": "BeamNG Vehicle Importer",
|
|
5
|
-
"version": "0.6.
|
|
5
|
+
"version": "0.6.2",
|
|
6
6
|
"trust": "local-untrusted",
|
|
7
7
|
"description": "Assess, convert, texture, lower, and acceptance-test a BeamNG vehicle plus its exact configuration before HELIX packaging.",
|
|
8
8
|
"permissions": [
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { closeSync, constants, openSync, readSync } from 'node:fs';
|
|
2
|
+
|
|
3
|
+
// A BeamNG DAE can exceed 500 MB, far past V8's ~512 MiB (0x1fffffe8) string limit, so a DAE must
|
|
4
|
+
// never be read into one JS string. These helpers scan it in bounded chunks instead.
|
|
5
|
+
const CHUNK_BYTES = 8 * 1024 * 1024;
|
|
6
|
+
// Longest id/name attribute that can straddle a chunk boundary. Real COLLADA ids are < 200 chars.
|
|
7
|
+
const BOUNDARY_CARRY_CHARS = 4096;
|
|
8
|
+
const NAME_ATTRIBUTE = /(?:id|name)="([^"]+)"/gi;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Visit every `id="..."` / `name="..."` attribute value of a DAE without holding the file in memory.
|
|
12
|
+
* `visit` returns true to stop early. Decoded as latin1 so multi-byte UTF-8 can never split a
|
|
13
|
+
* character across chunks; the callers only test ASCII patterns against the names.
|
|
14
|
+
*/
|
|
15
|
+
export function scanDaeNames(path, visit, { chunkBytes = CHUNK_BYTES } = {}) {
|
|
16
|
+
const descriptor = openSync(path, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0));
|
|
17
|
+
const buffer = Buffer.allocUnsafe(chunkBytes);
|
|
18
|
+
let carry = '';
|
|
19
|
+
try {
|
|
20
|
+
for (;;) {
|
|
21
|
+
const bytesRead = readSync(descriptor, buffer, 0, buffer.byteLength, null);
|
|
22
|
+
if (bytesRead === 0) return false;
|
|
23
|
+
const text = carry + buffer.latin1Slice(0, bytesRead);
|
|
24
|
+
NAME_ATTRIBUTE.lastIndex = 0;
|
|
25
|
+
for (const match of text.matchAll(NAME_ATTRIBUTE)) {
|
|
26
|
+
// Matches wholly inside the carried tail were already visited with the previous chunk.
|
|
27
|
+
if (match.index + match[0].length <= carry.length) continue;
|
|
28
|
+
if (visit(match[1])) return true;
|
|
29
|
+
}
|
|
30
|
+
carry = text.slice(-BOUNDARY_CARRY_CHARS);
|
|
31
|
+
}
|
|
32
|
+
} finally {
|
|
33
|
+
closeSync(descriptor);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function daeHasName(path, pattern, options) {
|
|
38
|
+
const test = new RegExp(pattern.source, pattern.flags.replace(/[gy]/g, ''));
|
|
39
|
+
return scanDaeNames(path, (name) => test.test(name), options);
|
|
40
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Palette contracts the BeamNG vehicle importer can project. The current asset pack
|
|
2
|
+
// (asset-packs/helix-materials/palette.json) is /4; /3 stays accepted for older packs.
|
|
3
|
+
// The first entry is the preferred/current contract. The families[] fields the importer reads
|
|
4
|
+
// (id, definitionVersion, physical.sizeMeters, shader.defaults.roughness/metallic) are
|
|
5
|
+
// identical in both. Keep bin/convert-beamng.py SUPPORTED_PALETTE_CONTRACTS in sync.
|
|
6
|
+
export const SUPPORTED_PALETTE_CONTRACTS = Object.freeze(['helix-palette/4', 'helix-palette/3']);
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
writeSync,
|
|
11
11
|
} from 'node:fs';
|
|
12
12
|
import { randomUUID } from 'node:crypto';
|
|
13
|
+
import { SUPPORTED_PALETTE_CONTRACTS } from './palette-contract.mjs';
|
|
13
14
|
import { basename, dirname, join } from 'node:path';
|
|
14
15
|
import { classifyVehicleMaterialSemantic, stampVehicleMaterialSemantics } from './material-semantics.mjs';
|
|
15
16
|
|
|
@@ -478,7 +479,11 @@ export function auditVehicleGlb(path, options = {}) {
|
|
|
478
479
|
check('cabin.seats', seatIds.length === 2 || seatIds.length === 4, Object.fromEntries(seatIds.map((id) => [id, sockets[id]])),
|
|
479
480
|
'two or four measured H-points');
|
|
480
481
|
const interiorNodes = nodeNames.filter((name) => /(seat|dash|interior|cabin|console|steer|gauge|door.?card|door.?panel|pedal)/i.test(name));
|
|
481
|
-
|
|
482
|
+
// The runtime builds the cabin from the measured sockets checked above (seats, steering, pedals, cockpit
|
|
483
|
+
// camera) and merely ADOPTS authored geometry when a socket names it; it has no minimum node count (see
|
|
484
|
+
// VehicleInterior.adoptNamed). Converters routinely merge a small two-door cabin into a handful of meshes,
|
|
485
|
+
// so a count is not evidence. Require only that authored interior geometry survived conversion.
|
|
486
|
+
check('cabin.meshes', interiorNodes.length >= 1, interiorNodes.length, 'at least one semantic interior node; the cabin contract is the measured seat, steering, pedal and cockpit sockets');
|
|
482
487
|
check('source.authored-seats', Number.isInteger(sourceMeasurements.seatHPoints)
|
|
483
488
|
&& (sourceMeasurements.seatHPoints === 2 || sourceMeasurements.seatHPoints === 4),
|
|
484
489
|
sourceMeasurements.seatHPoints ?? null, 'two or four H-points measured from authored seat geometry');
|
|
@@ -542,11 +547,11 @@ export function auditVehicleGlb(path, options = {}) {
|
|
|
542
547
|
{ materials: materials.length, mapped, textureCoverage: Number(coverage.toFixed(3)), images: doc.images?.length ?? 0,
|
|
543
548
|
sourceResolved, sourceMaterialTotal, sourceBindingCoverage: Number(sourceBindingCoverage.toFixed(3)) },
|
|
544
549
|
'embedded maps on half of exported materials, source PBR bindings on at least 75%, or valid Palette render readiness on at least 90%');
|
|
545
|
-
check('materials.palette-bindings', importQuality.materials?.paletteContract
|
|
550
|
+
check('materials.palette-bindings', SUPPORTED_PALETTE_CONTRACTS.includes(importQuality.materials?.paletteContract)
|
|
546
551
|
&& paletteBound / Math.max(1, materials.length) >= 0.9 && renderReadyCoverage >= 0.9,
|
|
547
552
|
{ materials: materials.length, paletteBound, renderReady, renderReadyCoverage: Number(renderReadyCoverage.toFixed(3)),
|
|
548
553
|
roles: finalRoles },
|
|
549
|
-
'helix-palette/3 projection with valid helix-material-binding/1 metadata and at least 90% render-ready material coverage');
|
|
554
|
+
'helix-palette/4 (or /3) projection with valid helix-material-binding/1 metadata and at least 90% render-ready material coverage');
|
|
550
555
|
const rear = semanticZ(doc, /(mainexhaust|exhaust|taillight|tailgate|trunk|boot|bumper[_-]?r)/i)
|
|
551
556
|
.filter((z) => Math.abs(z) >= Math.max(0.75, dimensions[2] * 0.25));
|
|
552
557
|
const exhaust = sockets.exhaust;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { basename, isAbsolute, relative, resolve, sep } from 'node:path';
|
|
2
2
|
import { sha256FileSync } from './file-identity.mjs';
|
|
3
|
+
import { SUPPORTED_PALETTE_CONTRACTS } from './palette-contract.mjs';
|
|
3
4
|
|
|
4
5
|
export const BEAMNG_VEHICLE_SOURCE_SCHEMA = 'helix.beamng-vehicle-source/1';
|
|
5
6
|
|
|
@@ -204,7 +205,7 @@ export function buildVehicleSourceManifest({ request, source, candidate, convers
|
|
|
204
205
|
definitions: materials.definitions ?? 0,
|
|
205
206
|
resolved: materials.resolved ?? 0,
|
|
206
207
|
mapped: materials.mapped ?? 0,
|
|
207
|
-
paletteContract: materials.paletteContract ??
|
|
208
|
+
paletteContract: materials.paletteContract ?? SUPPORTED_PALETTE_CONTRACTS[0],
|
|
208
209
|
declarationProvenance: materials.declarationProvenance ?? [],
|
|
209
210
|
stageConflicts: materials.stageConflicts ?? [],
|
|
210
211
|
sentinels: materials.sentinels ?? [],
|