@hypersoniclabs/helix-cli 0.1.25-helix3.525 → 0.1.25-helix3.527
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/itemLod/artifact.d.ts +40 -0
- package/dist/itemLod/artifact.js +106 -22
- package/dist/itemLod/artifact.js.map +1 -1
- package/dist/itemLod/cardTruth.d.ts +93 -0
- package/dist/itemLod/cardTruth.js +203 -0
- package/dist/itemLod/cardTruth.js.map +1 -0
- package/dist/itemLod/command.d.ts +2 -0
- package/dist/itemLod/command.js +10 -2
- package/dist/itemLod/command.js.map +1 -1
- package/dist/itemLod/glbFixtures.d.ts +5 -0
- package/dist/itemLod/glbFixtures.js +3 -1
- package/dist/itemLod/glbFixtures.js.map +1 -1
- package/dist/itemLod/index.d.ts +3 -1
- package/dist/itemLod/index.js +8 -1
- package/dist/itemLod/index.js.map +1 -1
- package/dist/sceneImport/spawnProbe.d.ts +4 -3
- package/dist/sceneImport/spawnProbe.js +1 -1
- package/dist/sceneImport/spawnProbe.js.map +1 -1
- package/dist/sceneSplit/chunk.js +25 -0
- package/dist/sceneSplit/chunk.js.map +1 -1
- package/dist/sceneSplit/geometryQueries.d.ts +2 -0
- package/dist/sceneSplit/geometryQueries.js +15 -0
- package/dist/sceneSplit/geometryQueries.js.map +1 -1
- package/dist/sceneSplit/source.js +48 -10
- package/dist/sceneSplit/source.js.map +1 -1
- package/dist/sceneSplit/split.js +2 -2
- package/dist/sceneSplit/split.js.map +1 -1
- package/dist/sceneSplit/types.d.ts +2 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/docs/item-lod.md +31 -0
- 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
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ImpostorFraming, type ImpostorShading } from './impostor';
|
|
2
2
|
import { type GBufferPasses } from './gbuffer';
|
|
3
|
+
import { type CardCensus, type CardVerdict } from './cardTruth';
|
|
3
4
|
import { type LevelTextureSpec, type WrittenLevel, type WrittenTexture } from './levelGlb';
|
|
4
5
|
import { type ItemModel } from './model';
|
|
5
6
|
import { type ItemLodProfile, type SimplifiedLevel } from './simplify';
|
|
@@ -23,6 +24,23 @@ export declare const ITEM_LOD_COMPILER = "item-lod/3";
|
|
|
23
24
|
*/
|
|
24
25
|
export declare const ITEM_LOD_COMPILER_FOR_SHADING: Readonly<Record<ImpostorShading, string>>;
|
|
25
26
|
export declare const ITEM_LOD_GBUFFER_COMPILER = "item-lod/5";
|
|
27
|
+
/**
|
|
28
|
+
* `item-lod/6`: `item-lod/5` (shading `gbuffer/1`) with card truth applied (`cardTruth: 'apply'`, see `cardTruth.ts`). An item whose card cannot be truthful (see-through
|
|
29
|
+
* glass or water, a mirror, thin emissive parts) is compiled WITHOUT its impostor and with a mesh that is guaranteed to draw; every other item compiles to the same bytes as `/5`.
|
|
30
|
+
* The backend queues it only for the items the `/5` compile reports as `cardTruth.suppress`, and serves it to the same clients as `/5`, ahead of it.
|
|
31
|
+
*/
|
|
32
|
+
export declare const ITEM_LOD_CARD_TRUTH_COMPILER = "item-lod/6";
|
|
33
|
+
/** True in a CLI that implements `cardTruth` (a worker checks this before it compiles `item-lod/6`, so an older CLI never writes a card under a contract that forbids it). */
|
|
34
|
+
export declare const ITEM_LOD_CARD_TRUTH = true;
|
|
35
|
+
/** The runtime skips a level whose measured error is over this share of the bounds diagonal (`itemLod.ts` in the engine); a document with no level that passes it needs a model of at most this many triangles to draw. */
|
|
36
|
+
export declare const ITEM_LOD_LEVEL_ERROR_RATIO = 0.1;
|
|
37
|
+
/**
|
|
38
|
+
* Card truth prefers the item itself over an approximation: a level whose measured error is within this share of the bounds diagonal is faithful enough to stand in for it, and a source of at most
|
|
39
|
+
* `ITEM_LOD_OWN_MODEL_MAX_TRIANGLES` triangles whose levels are not that close is drawn as itself (the Black Frame Glass Wall's 66 triangle LOD1 is 20 cm off a 30 cm wall: 2.4 percent of an 8.4 m diagonal, inside
|
|
40
|
+
* the runtime's 10 percent rule, but not the wall).
|
|
41
|
+
*/
|
|
42
|
+
export declare const ITEM_LOD_FAITHFUL_ERROR_RATIO = 0.02;
|
|
43
|
+
export declare const ITEM_LOD_OWN_MODEL_MAX_TRIANGLES = 4000;
|
|
26
44
|
/** Caps the artifact must hold (SCENE-PIPELINE-DESIGN section 4.5). */
|
|
27
45
|
export declare const ITEM_LOD_CAPS: {
|
|
28
46
|
readonly lod1TriangleRatio: number;
|
|
@@ -193,6 +211,16 @@ export interface ItemLodReport {
|
|
|
193
211
|
emissive: number | null;
|
|
194
212
|
};
|
|
195
213
|
};
|
|
214
|
+
/** The card-truth verdict (gbuffer/1 compiles with `cardTruth` set): `suppress` is the rule's answer, `suppressed` is whether this artifact actually has no card. */
|
|
215
|
+
cardTruth?: {
|
|
216
|
+
mode: 'apply' | 'observe';
|
|
217
|
+
suppress: boolean;
|
|
218
|
+
suppressed: boolean;
|
|
219
|
+
reasons: string[];
|
|
220
|
+
mesh: 'level' | 'own-model' | 'none';
|
|
221
|
+
census: CardCensus;
|
|
222
|
+
thinEmissive: CardVerdict['thinEmissive'];
|
|
223
|
+
};
|
|
196
224
|
caps: CapCheck;
|
|
197
225
|
warnings: string[];
|
|
198
226
|
millis: {
|
|
@@ -240,6 +268,11 @@ export interface CompileItemLodOptions {
|
|
|
240
268
|
* as bright, so the backend keeps an albedo rendition next to the lit one and serves each to the clients that can draw it.
|
|
241
269
|
*/
|
|
242
270
|
shading?: ImpostorShading;
|
|
271
|
+
/**
|
|
272
|
+
* Card truth (`gbuffer/1` only). `'apply'` leaves the impostor out (`impostor: null`, the reason in `warnings`) of an item whose card cannot be truthful (see `cardTruth.ts`) when a mesh is
|
|
273
|
+
* guaranteed; `'observe'` changes nothing in the artifact and only records the verdict in `report.cardTruth` (what the backend reads to decide who gets an `item-lod/6` row).
|
|
274
|
+
*/
|
|
275
|
+
cardTruth?: 'apply' | 'observe';
|
|
243
276
|
/** `gbuffer/1` capture: the four G-buffer passes; defaults to the headless placements capture host. Injected by tests. */
|
|
244
277
|
captureGBuffer?: (captureGlb: Uint8Array, framing: ImpostorFraming, size?: number) => Promise<GBufferPasses>;
|
|
245
278
|
/** Atlas capture; defaults to the headless placements capture host. Injected by tests. */
|
|
@@ -257,6 +290,13 @@ export declare function writeSmallerLevel(model: ItemModel, simplified: Simplifi
|
|
|
257
290
|
}>;
|
|
258
291
|
/** Compile a static GLB into an item-lod/1 artifact and its objects. Deterministic: the same bytes give the same CIDs. */
|
|
259
292
|
export declare function compileItemLods(glb: Uint8Array, options: CompileItemLodOptions): Promise<ItemLodBuild>;
|
|
293
|
+
/**
|
|
294
|
+
* Which mesh the runtime draws at range when the item has no card, from the measured error of the emitted levels: `'level'` when a level is faithful (error at most 2 percent of the bounds
|
|
295
|
+
* diagonal), else `'own-model'` when the source is small enough (at most 4000 triangles) for the runtime to draw the item itself from a document with no levels, else `'level'` when a level
|
|
296
|
+
* at least passes the runtime's rule (at most 10 percent of the diagonal), else `'none'` (the card must stay). Older engines draw exactly this: with levels they draw a level that passes the
|
|
297
|
+
* 10 percent rule (else the least-wrong one), with no levels and no impostor they draw the source model when it is at most 4000 triangles.
|
|
298
|
+
*/
|
|
299
|
+
export declare function meshGuarantee(levelErrors: readonly number[], diagonal: number, sourceTriangles: number): 'level' | 'own-model' | 'none';
|
|
260
300
|
export declare const itemLodObjectPath: (object: ItemLodObject) => string;
|
|
261
301
|
/** `artifact.json` (the canonical bytes whose CID is `artifactCid`), `objects/<sha256>.<ext>`, `report.json` and previews. */
|
|
262
302
|
export declare function writeItemLodOutput(directory: string, build: ItemLodBuild): Promise<{
|
package/dist/itemLod/artifact.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.itemLodObjectPath = exports.ITEM_LOD_CAPS = exports.ITEM_LOD_GBUFFER_COMPILER = exports.ITEM_LOD_COMPILER_FOR_SHADING = exports.ITEM_LOD_COMPILER = exports.ITEM_LOD_SCHEMA = void 0;
|
|
3
|
+
exports.itemLodObjectPath = exports.ITEM_LOD_CAPS = exports.ITEM_LOD_OWN_MODEL_MAX_TRIANGLES = exports.ITEM_LOD_FAITHFUL_ERROR_RATIO = exports.ITEM_LOD_LEVEL_ERROR_RATIO = exports.ITEM_LOD_CARD_TRUTH = exports.ITEM_LOD_CARD_TRUTH_COMPILER = exports.ITEM_LOD_GBUFFER_COMPILER = exports.ITEM_LOD_COMPILER_FOR_SHADING = exports.ITEM_LOD_COMPILER = exports.ITEM_LOD_SCHEMA = void 0;
|
|
4
4
|
exports.checkItemLodCaps = checkItemLodCaps;
|
|
5
5
|
exports.validateItemLodArtifact = validateItemLodArtifact;
|
|
6
6
|
exports.writeSmallerLevel = writeSmallerLevel;
|
|
7
7
|
exports.compileItemLods = compileItemLods;
|
|
8
|
+
exports.meshGuarantee = meshGuarantee;
|
|
8
9
|
exports.writeItemLodOutput = writeItemLodOutput;
|
|
9
10
|
const promises_1 = require("node:fs/promises");
|
|
10
11
|
const node_path_1 = require("node:path");
|
|
@@ -12,6 +13,7 @@ const helix_manifest_1 = require("@hypersoniclabs/helix-manifest");
|
|
|
12
13
|
const impostor_1 = require("./impostor");
|
|
13
14
|
const gbuffer_1 = require("./gbuffer");
|
|
14
15
|
const atlas_1 = require("./atlas");
|
|
16
|
+
const cardTruth_1 = require("./cardTruth");
|
|
15
17
|
const flat_1 = require("./flat");
|
|
16
18
|
const levelGlb_1 = require("./levelGlb");
|
|
17
19
|
const model_1 = require("./model");
|
|
@@ -37,6 +39,23 @@ exports.ITEM_LOD_COMPILER = 'item-lod/3';
|
|
|
37
39
|
*/
|
|
38
40
|
exports.ITEM_LOD_COMPILER_FOR_SHADING = { albedo: 'item-lod/3', 'lit/1': 'item-lod/4', 'gbuffer/1': 'item-lod/5' };
|
|
39
41
|
exports.ITEM_LOD_GBUFFER_COMPILER = 'item-lod/5';
|
|
42
|
+
/**
|
|
43
|
+
* `item-lod/6`: `item-lod/5` (shading `gbuffer/1`) with card truth applied (`cardTruth: 'apply'`, see `cardTruth.ts`). An item whose card cannot be truthful (see-through
|
|
44
|
+
* glass or water, a mirror, thin emissive parts) is compiled WITHOUT its impostor and with a mesh that is guaranteed to draw; every other item compiles to the same bytes as `/5`.
|
|
45
|
+
* The backend queues it only for the items the `/5` compile reports as `cardTruth.suppress`, and serves it to the same clients as `/5`, ahead of it.
|
|
46
|
+
*/
|
|
47
|
+
exports.ITEM_LOD_CARD_TRUTH_COMPILER = 'item-lod/6';
|
|
48
|
+
/** True in a CLI that implements `cardTruth` (a worker checks this before it compiles `item-lod/6`, so an older CLI never writes a card under a contract that forbids it). */
|
|
49
|
+
exports.ITEM_LOD_CARD_TRUTH = true;
|
|
50
|
+
/** The runtime skips a level whose measured error is over this share of the bounds diagonal (`itemLod.ts` in the engine); a document with no level that passes it needs a model of at most this many triangles to draw. */
|
|
51
|
+
exports.ITEM_LOD_LEVEL_ERROR_RATIO = 0.1;
|
|
52
|
+
/**
|
|
53
|
+
* Card truth prefers the item itself over an approximation: a level whose measured error is within this share of the bounds diagonal is faithful enough to stand in for it, and a source of at most
|
|
54
|
+
* `ITEM_LOD_OWN_MODEL_MAX_TRIANGLES` triangles whose levels are not that close is drawn as itself (the Black Frame Glass Wall's 66 triangle LOD1 is 20 cm off a 30 cm wall: 2.4 percent of an 8.4 m diagonal, inside
|
|
55
|
+
* the runtime's 10 percent rule, but not the wall).
|
|
56
|
+
*/
|
|
57
|
+
exports.ITEM_LOD_FAITHFUL_ERROR_RATIO = 0.02;
|
|
58
|
+
exports.ITEM_LOD_OWN_MODEL_MAX_TRIANGLES = 4000;
|
|
40
59
|
/** Caps the artifact must hold (SCENE-PIPELINE-DESIGN section 4.5). */
|
|
41
60
|
exports.ITEM_LOD_CAPS = {
|
|
42
61
|
lod1TriangleRatio: simplify_1.ITEM_LOD1.maxRatio,
|
|
@@ -307,41 +326,92 @@ async function compileItemLods(glb, options) {
|
|
|
307
326
|
aboveBytes = attempt.written.bytes.length;
|
|
308
327
|
}
|
|
309
328
|
const framing = (0, impostor_1.impostorFraming)(model.bounds);
|
|
310
|
-
const captureGlb = await (0, levelGlb_1.writeLevelGlb)(model, model.groups, cache, { mode: 'capture', textures: levelGlb_1.LOD1_TEXTURES });
|
|
311
329
|
const shading = options.shading ?? impostor_1.IMPOSTOR_SHADING;
|
|
312
|
-
|
|
330
|
+
// Card truth (gbuffer/1 only): glass, a mirror or thin emissive parts have no truthful card. The material half is decided before the capture (no browser needed, and the capture is
|
|
331
|
+
// skipped when the card is dropped); the thin-emissive half needs the capture. A card is dropped only when a mesh is guaranteed to draw instead (`meshGuarantee`).
|
|
332
|
+
const cardMode = shading === gbuffer_1.GBUFFER_SHADING ? options.cardTruth : undefined;
|
|
333
|
+
const diagonal = Math.hypot(...[0, 1, 2].map(axis => model.bounds.max[axis] - model.bounds.min[axis]));
|
|
334
|
+
let census = null, verdict = null, cardSuppressed = false, meshKind = 'none';
|
|
335
|
+
const cardNotes = [];
|
|
336
|
+
const guarantee = meshGuarantee(emitted.map(level => level.simplified.maxErrorM), diagonal, model.triangles);
|
|
337
|
+
if (cardMode) {
|
|
338
|
+
census = await (0, cardTruth_1.cardCensus)(model, cache);
|
|
339
|
+
verdict = (0, cardTruth_1.materialVerdict)(census);
|
|
340
|
+
meshKind = guarantee;
|
|
341
|
+
}
|
|
342
|
+
/** Drops the card for `reasons`, and the levels that cannot draw when the item's own model is the guaranteed mesh. */
|
|
343
|
+
const dropCard = (reasons) => {
|
|
344
|
+
cardSuppressed = true;
|
|
345
|
+
cardNotes.push(...reasons.map(reason => `no card: ${reason}`));
|
|
346
|
+
if (meshKind === 'own-model') {
|
|
347
|
+
for (const level of emitted.splice(0, emitted.length)) {
|
|
348
|
+
const reason = `LOD${level.lod} dropped: its measured error is over ${percent(exports.ITEM_LOD_FAITHFUL_ERROR_RATIO)} of the bounds diagonal, so the ${model.triangles} triangle model itself draws instead`;
|
|
349
|
+
omitted.push({ lod: level.lod, reason, triangles: level.simplified.triangles, bytes: level.written.bytes.length });
|
|
350
|
+
progress(reason);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
};
|
|
354
|
+
if (cardMode === 'apply' && verdict?.suppress) {
|
|
355
|
+
if (meshKind !== 'none')
|
|
356
|
+
dropCard(verdict.reasons);
|
|
357
|
+
else
|
|
358
|
+
cardNotes.push(`card kept: ${verdict.reasons.join('; ')}, but no level passes the runtime's ${percent(exports.ITEM_LOD_LEVEL_ERROR_RATIO)} error rule and the model has ${model.triangles} triangles (over ${exports.ITEM_LOD_OWN_MODEL_MAX_TRIANGLES}), so no mesh can draw instead`);
|
|
359
|
+
}
|
|
360
|
+
const captureGlb = await (0, levelGlb_1.writeLevelGlb)(model, model.groups, cache, { mode: 'capture', textures: levelGlb_1.LOD1_TEXTURES });
|
|
313
361
|
// One impostor, as one or three KTX2 maps: the colour (or albedo) map is the artifact's `impostor.object`; a gbuffer/1 impostor adds its surface map and,
|
|
314
362
|
// when the item glows or has a clear coat, an emissive map. Every map is an `ItemLodObject` with its own role.
|
|
315
|
-
let atlas, impostorBytes, maps = null, preview;
|
|
316
|
-
if (
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
363
|
+
let atlas = null, impostorBytes = new Uint8Array(0), maps = null, preview = [];
|
|
364
|
+
if (!cardSuppressed) {
|
|
365
|
+
progress('capturing impostor (64 views)');
|
|
366
|
+
if (shading === gbuffer_1.GBUFFER_SHADING) {
|
|
367
|
+
const passes = await (options.captureGBuffer ?? gbuffer_1.captureGBufferPasses)(captureGlb.bytes, framing, impostor_1.IMPOSTOR_SIZE);
|
|
368
|
+
if (cardMode && verdict) {
|
|
369
|
+
verdict = (0, cardTruth_1.withThinEmissive)(verdict, (0, cardTruth_1.thinEmissiveTexels)(passes));
|
|
370
|
+
if (cardMode === 'apply' && verdict.suppress && meshKind !== 'none') {
|
|
371
|
+
const thinOnly = verdict.reasons.filter(reason => reason.startsWith('thin emissive'));
|
|
372
|
+
dropCard(thinOnly);
|
|
373
|
+
}
|
|
374
|
+
else if (cardMode === 'apply' && verdict.suppress && !cardNotes.length) {
|
|
375
|
+
cardNotes.push(`card kept: ${verdict.reasons.join('; ')}, but no mesh is guaranteed to draw instead`);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
const packed = (0, gbuffer_1.packGBuffer)(passes, impostor_1.IMPOSTOR_SIZE), encoded = await (0, gbuffer_1.encodeGBufferAtlases)(packed, impostor_1.IMPOSTOR_SIZE);
|
|
379
|
+
atlas = packed.albedo;
|
|
380
|
+
impostorBytes = encoded.albedo;
|
|
381
|
+
maps = { surface: encoded.surface, emissive: encoded.emissive, clearcoat: packed.clearcoat };
|
|
382
|
+
const images = await (0, gbuffer_1.gbufferPreviewPng)(packed, impostor_1.IMPOSTOR_SIZE);
|
|
383
|
+
preview = [{ name: 'impostor.png', bytes: images.albedo }, { name: 'impostor-surface.png', bytes: images.surface }];
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
atlas = await (options.captureAtlas ?? impostor_1.captureImpostorAtlas)(captureGlb.bytes, framing, impostor_1.IMPOSTOR_SIZE, shading);
|
|
387
|
+
impostorBytes = await (0, impostor_1.encodeImpostorAtlas)(atlas);
|
|
388
|
+
preview = [{ name: 'impostor.png', bytes: await (0, impostor_1.impostorPreviewPng)(atlas) }];
|
|
389
|
+
}
|
|
329
390
|
}
|
|
330
391
|
const mapBytes = (maps?.surface.length ?? 0) + (maps?.emissive?.length ?? 0), totalImpostorBytes = impostorBytes.length + mapBytes;
|
|
331
|
-
|
|
392
|
+
if (atlas)
|
|
393
|
+
progress(`impostor encoded (${totalImpostorBytes} bytes${maps ? ` in ${maps.emissive ? 3 : 2} maps` : ''})`);
|
|
332
394
|
// An impostor that is not smaller than the model it stands in for costs more to fetch than the model: leave it out. A gbuffer/1 impostor weighs three maps
|
|
333
395
|
// and a tiny item's own model is cheaper to draw than a billboard is to fetch, so it is left out only for an item that is both tiny and at least
|
|
334
396
|
// GBUFFER_BYTES_SLACK times its source in bytes; anything over GBUFFER_MIN_TRIANGLES keeps it whatever it weighs (its far placements are two triangles each).
|
|
335
|
-
const impostorOmitted = shading === gbuffer_1.GBUFFER_SHADING
|
|
397
|
+
const impostorOmitted = cardSuppressed || (shading === gbuffer_1.GBUFFER_SHADING
|
|
336
398
|
? model.triangles <= gbuffer_1.GBUFFER_MIN_TRIANGLES && totalImpostorBytes >= gbuffer_1.GBUFFER_BYTES_SLACK * glb.length
|
|
337
|
-
: impostorBytes.length >= glb.length;
|
|
338
|
-
if (
|
|
399
|
+
: impostorBytes.length >= glb.length);
|
|
400
|
+
if (cardSuppressed) {
|
|
401
|
+
progress(cardNotes.join('; '));
|
|
402
|
+
impostorNotes.push(...cardNotes);
|
|
403
|
+
}
|
|
404
|
+
else if (impostorOmitted) {
|
|
339
405
|
const reason = shading === gbuffer_1.GBUFFER_SHADING
|
|
340
406
|
? `impostor omitted: ${model.triangles} triangles is at most ${gbuffer_1.GBUFFER_MIN_TRIANGLES} and its maps are ${totalImpostorBytes} bytes, at least ${gbuffer_1.GBUFFER_BYTES_SLACK} times the source model (${glb.length} bytes)`
|
|
341
407
|
: `impostor omitted: its atlas is ${impostorBytes.length} bytes, not smaller than the source model (${glb.length} bytes)`;
|
|
342
408
|
progress(reason);
|
|
343
409
|
impostorNotes.push(reason);
|
|
410
|
+
if (cardNotes.length)
|
|
411
|
+
impostorNotes.push(...cardNotes);
|
|
344
412
|
}
|
|
413
|
+
else if (cardNotes.length)
|
|
414
|
+
impostorNotes.push(...cardNotes);
|
|
345
415
|
const impostorObjects = impostorOmitted ? [] : [
|
|
346
416
|
{ cid: (0, helix_manifest_1.cidFromBytes)(impostorBytes), bytes: impostorBytes, mediaType: 'image/ktx2', role: 'impostor' },
|
|
347
417
|
...(maps ? [{ cid: (0, helix_manifest_1.cidFromBytes)(maps.surface), bytes: maps.surface, mediaType: 'image/ktx2', role: 'impostor-surface' }] : []),
|
|
@@ -396,11 +466,25 @@ async function compileItemLods(glb, options) {
|
|
|
396
466
|
report: {
|
|
397
467
|
sourceTriangles: model.triangles, sourceBytes: glb.length, materials: model.materials.length, images: model.images.length,
|
|
398
468
|
extensionsUsed: model.extensionsUsed, profile, lod1: reported(1), lod2: reported(2), omitted,
|
|
399
|
-
impostor: { bytes: totalImpostorBytes, coverage: Math.round((0, impostor_1.impostorCoverage)(atlas) * 1e4) / 1e4, shading, ...(maps ? { maps: { surface: maps.surface.length, emissive: maps.emissive?.length ?? null } } : {}), ...(impostorOmitted ? { omitted: true } : {}) }, caps, warnings,
|
|
469
|
+
impostor: { bytes: totalImpostorBytes, coverage: atlas ? Math.round((0, impostor_1.impostorCoverage)(atlas) * 1e4) / 1e4 : 0, shading, ...(maps ? { maps: { surface: maps.surface.length, emissive: maps.emissive?.length ?? null } } : {}), ...(impostorOmitted ? { omitted: true } : {}) }, caps, warnings,
|
|
470
|
+
...(cardMode && census && verdict ? { cardTruth: { mode: cardMode, suppress: verdict.suppress, suppressed: cardSuppressed, reasons: verdict.reasons, mesh: meshKind, census, thinEmissive: verdict.thinEmissive } } : {}),
|
|
400
471
|
millis: { total: Date.now() - started },
|
|
401
472
|
},
|
|
402
473
|
};
|
|
403
474
|
}
|
|
475
|
+
/**
|
|
476
|
+
* Which mesh the runtime draws at range when the item has no card, from the measured error of the emitted levels: `'level'` when a level is faithful (error at most 2 percent of the bounds
|
|
477
|
+
* diagonal), else `'own-model'` when the source is small enough (at most 4000 triangles) for the runtime to draw the item itself from a document with no levels, else `'level'` when a level
|
|
478
|
+
* at least passes the runtime's rule (at most 10 percent of the diagonal), else `'none'` (the card must stay). Older engines draw exactly this: with levels they draw a level that passes the
|
|
479
|
+
* 10 percent rule (else the least-wrong one), with no levels and no impostor they draw the source model when it is at most 4000 triangles.
|
|
480
|
+
*/
|
|
481
|
+
function meshGuarantee(levelErrors, diagonal, sourceTriangles) {
|
|
482
|
+
if (levelErrors.some(error => error <= exports.ITEM_LOD_FAITHFUL_ERROR_RATIO * diagonal))
|
|
483
|
+
return 'level';
|
|
484
|
+
if (sourceTriangles <= exports.ITEM_LOD_OWN_MODEL_MAX_TRIANGLES)
|
|
485
|
+
return 'own-model';
|
|
486
|
+
return levelErrors.some(error => error <= exports.ITEM_LOD_LEVEL_ERROR_RATIO * diagonal) ? 'level' : 'none';
|
|
487
|
+
}
|
|
404
488
|
const extensionOf = (object) => (object.mediaType === 'model/gltf-binary' ? 'glb' : 'ktx2');
|
|
405
489
|
const itemLodObjectPath = (object) => `objects/${object.cid.slice('cid:sha256:'.length)}.${extensionOf(object)}`;
|
|
406
490
|
exports.itemLodObjectPath = itemLodObjectPath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/itemLod/artifact.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/itemLod/artifact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { GBufferPasses } from './gbuffer';
|
|
2
|
+
import type { ItemModel } from './model';
|
|
3
|
+
import { TextureCache } from './textures';
|
|
4
|
+
/**
|
|
5
|
+
* Where a card (the `gbuffer/1` octahedral impostor) tells the truth, and where it cannot.
|
|
6
|
+
*
|
|
7
|
+
* A card stores one albedo, normal, roughness and metalness per 3.6 cm-ish texel and the scene lights it. Three kinds of item
|
|
8
|
+
* have no truthful card, whatever the engine does with it:
|
|
9
|
+
*
|
|
10
|
+
* - see-through glass or water (alpha BLEND, or transmission, which the reader turns into BLEND): a card is a cutout, so a pane is
|
|
11
|
+
* either solid or stippled, never see-through;
|
|
12
|
+
* - a mirror (an opaque material that is metallic and smooth: `MI_Glass_Opaque_01F` of the Black Frame Glass Wall is metallic 0.949,
|
|
13
|
+
* roughness 0): it looks like the sky it reflects, and a card re-lights a few degrees of normal error into a flat grey panel;
|
|
14
|
+
* - thin emissive parts (a neon tube 1.5 cm wide in a texel 3.6 cm wide): the card holds a coverage of 0.2 to 0.4 and never a solid
|
|
15
|
+
* line, so the glowing area is a third too small and dim.
|
|
16
|
+
*
|
|
17
|
+
* For those items the far representation is a mesh. `compileItemLods({ cardTruth: true })` leaves the impostor out (`impostor: null`)
|
|
18
|
+
* with the reason in `warnings`, but only when a mesh is guaranteed (see `meshGuarantee` in artifact.ts): the document format does
|
|
19
|
+
* not change, so every engine that reads an item-lod document already draws a document with no impostor.
|
|
20
|
+
*
|
|
21
|
+
* The census is by SURFACE AREA: the sum of triangle areas of the material over the sum of every triangle (double-sided counts once).
|
|
22
|
+
* It is sampled, never exhaustive: at most `MAX_SAMPLES_PER_MATERIAL` triangles per material, spread evenly, each standing for the
|
|
23
|
+
* triangles around it. Texture-driven values (alpha, metallic-roughness, emissive) are read from the triangle's centroid UV.
|
|
24
|
+
*
|
|
25
|
+
* The thresholds come from the census of the 1,091 distinct models behind the 1,167 public item-lod versions on helix3 (2026-10-13,
|
|
26
|
+
* `scripts/item-lod-card-census.mjs`, `item-lod-thin-emissive.mjs`): each sits in a gap of the real distribution, not on a guess.
|
|
27
|
+
* - glass: 15 items at 0.21 to 1.00 of area; the next is 0.12 (a Lamborghini and a McLaren, whose windows are not what makes their card wrong), then 0.09.
|
|
28
|
+
* - mirror: 3 items at 0.33 to 0.88 (a chrome coffee machine, the glass wall, a chrome statue); the next are 0.25 and 0.21, glossy car paint and chrome trim on cars.
|
|
29
|
+
* - thin emissive: 3 items at 0.78 to 0.98 of their glowing texels thin (the neon figure sign and two glass lamps); the next is 0.32, a table lamp.
|
|
30
|
+
*/
|
|
31
|
+
export declare const CARD_TRUTH: {
|
|
32
|
+
/** A BLEND or transmission material that is really translucent (0.03 < alpha < 0.9) covering at least this share of the area. */
|
|
33
|
+
readonly glassShare: 0.15;
|
|
34
|
+
/** An opaque material that is a mirror covering at least this share of the area. */
|
|
35
|
+
readonly mirrorShare: 0.3;
|
|
36
|
+
readonly mirrorMetallic: 0.9;
|
|
37
|
+
readonly mirrorRoughness: 0.1;
|
|
38
|
+
/** An alpha under this is invisible (not glass), at or over `glassAlphaMax` it is a solid with a BLEND flag (not glass either). */
|
|
39
|
+
readonly glassAlphaMin: 0.03;
|
|
40
|
+
readonly glassAlphaMax: 0.9;
|
|
41
|
+
/**
|
|
42
|
+
* Thin emissive (read from the capture, so it needs a capture): of the covered texels that glow, the ones with a coverage under
|
|
43
|
+
* `thinCoverage` outnumber the ones at or over it, AND the glowing texels are at least `emissiveShare` of every covered texel
|
|
44
|
+
* (a lamp post with one glowing lens is not a neon sign).
|
|
45
|
+
*/
|
|
46
|
+
readonly thinCoverage: 0.5;
|
|
47
|
+
readonly emissiveShare: 0.01;
|
|
48
|
+
};
|
|
49
|
+
export interface CardCensus {
|
|
50
|
+
/** Total surface area in square metres. */
|
|
51
|
+
area: number;
|
|
52
|
+
/** Share of the area that is translucent BLEND / transmission material, 0..1. */
|
|
53
|
+
glass: number;
|
|
54
|
+
/** Share of the area that is a mirror, 0..1. */
|
|
55
|
+
mirror: number;
|
|
56
|
+
/** Share of the area whose material glows (reported for the census; the thin-emissive rule itself reads the capture). */
|
|
57
|
+
emissive: number;
|
|
58
|
+
/** The materials that carry the glass and mirror shares, largest first, for the warning text. */
|
|
59
|
+
glassMaterials: string[];
|
|
60
|
+
mirrorMaterials: string[];
|
|
61
|
+
}
|
|
62
|
+
/** The area-weighted material census of a model (see the file comment). Deterministic: no randomness, fixed stride. */
|
|
63
|
+
export declare function cardCensus(model: ItemModel, cache?: TextureCache): Promise<CardCensus>;
|
|
64
|
+
export interface ThinEmissive {
|
|
65
|
+
/** Covered texels (coverage > 0) over every view. */
|
|
66
|
+
covered: number;
|
|
67
|
+
/** Covered texels that glow. */
|
|
68
|
+
glowing: number;
|
|
69
|
+
/** Glowing texels whose coverage is under `thinCoverage`: a tube narrower than a texel. */
|
|
70
|
+
thin: number;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Thin emissive parts from the capture. A texel glows when its emissive radiance reaches the same floor the emissive map uses (6 of 765);
|
|
74
|
+
* the capture's alpha is the texel's coverage (the supersampled share the item fills), so a 1.5 cm tube in a 3.6 cm texel reads 0.2 to 0.4.
|
|
75
|
+
*/
|
|
76
|
+
export declare function thinEmissiveTexels(passes: GBufferPasses): ThinEmissive;
|
|
77
|
+
export interface CardVerdict {
|
|
78
|
+
/** True when the item should have no card. */
|
|
79
|
+
suppress: boolean;
|
|
80
|
+
/** One entry per rule that fired, in warning wording ("mirror 0.71 of area (MI_Glass_Opaque_01F)"). */
|
|
81
|
+
reasons: string[];
|
|
82
|
+
glass: number;
|
|
83
|
+
mirror: number;
|
|
84
|
+
thinEmissive: {
|
|
85
|
+
covered: number;
|
|
86
|
+
glowing: number;
|
|
87
|
+
thin: number;
|
|
88
|
+
} | null;
|
|
89
|
+
}
|
|
90
|
+
/** The geometry-and-material half of the verdict: glass and mirror. No capture needed. */
|
|
91
|
+
export declare function materialVerdict(census: CardCensus): CardVerdict;
|
|
92
|
+
/** Adds the thin-emissive rule once a capture exists. */
|
|
93
|
+
export declare function withThinEmissive(verdict: CardVerdict, thin: ThinEmissive): CardVerdict;
|