feat: add Cesium semantic inspection mode

This commit is contained in:
2026-08-05 13:24:39 +08:00
parent 400525dd07
commit 607d8fc0b1
18 changed files with 542 additions and 56 deletions

View File

@@ -0,0 +1,32 @@
#!/usr/bin/env node
"use strict";
const assert = require("assert");
const fs = require("fs");
const os = require("os");
const path = require("path");
const { writeCompressedMetadata } = require("./compress-glb");
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "compress-glb-"));
const source = path.join(tempDir, "scene.json");
const output = path.join(tempDir, "scene-compressed.json");
const compressedGlb = path.join(tempDir, "scene-compressed.glb");
fs.writeFileSync(source, `${JSON.stringify({
asset: "scene.glb",
assets: [
{ id: "main", label: "Scene", type: "model", url: "scene.glb", enabled: true },
{ id: "roads", label: "道路", type: "model", url: "scene-roads.glb", enabled: false, category: "semantic" },
],
}, null, 2)}\n`);
writeCompressedMetadata(source, compressedGlb, output);
const metadata = JSON.parse(fs.readFileSync(output, "utf8"));
assert.equal(metadata.asset, "scene-compressed.glb");
assert.deepEqual(metadata.assets.map((asset) => asset.id), ["main", "roads"]);
assert.equal(metadata.assets[0].url, "scene-compressed.glb");
assert.equal(metadata.assets[1].url, "scene-roads.glb");
assert.equal(metadata.assets[1].category, "semantic");
fs.rmSync(tempDir, { recursive: true, force: true });
console.log("GLB compression metadata tests passed.");