@helix3/helix-cli 0.1.18-helix3.278 → 0.1.18-helix3.280
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/bakeBodyRegionsCli.d.ts +19 -0
- package/dist/bakeBodyRegionsCli.js +25 -0
- package/dist/bakeBodyRegionsCli.js.map +1 -0
- package/dist/bridge/characterAddon.d.ts +1 -0
- package/dist/bridge/characterAddon.js +6 -1
- package/dist/bridge/characterAddon.js.map +1 -1
- package/dist/bridge/internal/builtInExecution.js +4 -1
- package/dist/bridge/internal/builtInExecution.js.map +1 -1
- package/dist/character/bakeBodyRegions.d.ts +80 -0
- package/dist/character/bakeBodyRegions.js +190 -0
- package/dist/character/bakeBodyRegions.js.map +1 -0
- package/dist/character/bodyRegionHide.d.ts +18 -2
- package/dist/character/bodyRegionHide.js +24 -3
- package/dist/character/bodyRegionHide.js.map +1 -1
- package/dist/character/importCharacter.d.ts +4 -3
- package/dist/character/importCharacter.js +5 -3
- package/dist/character/importCharacter.js.map +1 -1
- package/dist/character/stages/conform.d.ts +9 -4
- package/dist/character/stages/conform.js +38 -4
- package/dist/character/stages/conform.js.map +1 -1
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/docs/bridge.md +3 -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_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
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type BakeBodyRegionsReport } from './character/bakeBodyRegions';
|
|
2
|
+
export interface BakeBodyRegionsCliOptions {
|
|
3
|
+
/** The base body GLB to bake — read only, never mutated on disk. */
|
|
4
|
+
input: string;
|
|
5
|
+
/** Where to write the baked copy. May equal `input`'s directory but never overwrites it in place. */
|
|
6
|
+
output: string;
|
|
7
|
+
}
|
|
8
|
+
export interface BakeBodyRegionsCliResult extends BakeBodyRegionsReport {
|
|
9
|
+
inputPath: string;
|
|
10
|
+
outputPath: string;
|
|
11
|
+
outputSizeBytes: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* One-off tool: bake `_REGION` onto a base body GLB and write the result. See `bakeBodyRegions.ts` for what
|
|
15
|
+
* this does and why. Every accessor other than the new `_REGION` attribute is passed through byte-for-byte —
|
|
16
|
+
* this reads and re-serializes the SAME document instance gltf-transform parsed, mutating nothing but adding
|
|
17
|
+
* one primitive attribute per skinned mesh.
|
|
18
|
+
*/
|
|
19
|
+
export declare function bakeBodyRegionsCli(options: BakeBodyRegionsCliOptions): Promise<BakeBodyRegionsCliResult>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bakeBodyRegionsCli = bakeBodyRegionsCli;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const core_1 = require("@gltf-transform/core");
|
|
6
|
+
const extensions_1 = require("@gltf-transform/extensions");
|
|
7
|
+
const bakeBodyRegions_1 = require("./character/bakeBodyRegions");
|
|
8
|
+
/**
|
|
9
|
+
* One-off tool: bake `_REGION` onto a base body GLB and write the result. See `bakeBodyRegions.ts` for what
|
|
10
|
+
* this does and why. Every accessor other than the new `_REGION` attribute is passed through byte-for-byte —
|
|
11
|
+
* this reads and re-serializes the SAME document instance gltf-transform parsed, mutating nothing but adding
|
|
12
|
+
* one primitive attribute per skinned mesh.
|
|
13
|
+
*/
|
|
14
|
+
async function bakeBodyRegionsCli(options) {
|
|
15
|
+
const io = new core_1.NodeIO().registerExtensions(extensions_1.ALL_EXTENSIONS);
|
|
16
|
+
const document = await io.readBinary((0, node_fs_1.readFileSync)(options.input));
|
|
17
|
+
const report = (0, bakeBodyRegions_1.bakeBodyRegions)(document);
|
|
18
|
+
if (report.primitivesBaked === 0) {
|
|
19
|
+
throw new Error(`bake-body-regions: '${options.input}' has no skinned mesh primitive to bake onto.`);
|
|
20
|
+
}
|
|
21
|
+
const bytes = await io.writeBinary(document);
|
|
22
|
+
(0, node_fs_1.writeFileSync)(options.output, bytes);
|
|
23
|
+
return { ...report, inputPath: options.input, outputPath: options.output, outputSizeBytes: bytes.length };
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=bakeBodyRegionsCli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bakeBodyRegionsCli.js","sourceRoot":"","sources":["../src/bakeBodyRegionsCli.ts"],"names":[],"mappings":";;AAwBA,gDAUC;AAlCD,qCAAsD;AACtD,+CAA8C;AAC9C,2DAA4D;AAC5D,iEAA0F;AAe1F;;;;;GAKG;AACI,KAAK,UAAU,kBAAkB,CAAC,OAAkC;IACzE,MAAM,EAAE,GAAG,IAAI,aAAM,EAAE,CAAC,kBAAkB,CAAC,2BAAc,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,IAAA,sBAAY,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,IAAA,iCAAe,EAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,CAAC,KAAK,+CAA+C,CAAC,CAAC;IACvG,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAA,uBAAa,EAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AAC5G,CAAC"}
|
|
@@ -28,7 +28,7 @@ function validateCharacterAddonProfile(value) {
|
|
|
28
28
|
throw new Error('Character add-on profile must be an object.');
|
|
29
29
|
}
|
|
30
30
|
const row = value;
|
|
31
|
-
const allowed = new Set(['schemaVersion', 'title', 'slug', 'hostItemId', 'hostSha256', 'slotType', 'socket', 'nodes', 'ops', 'palette', 'hideRegions']);
|
|
31
|
+
const allowed = new Set(['schemaVersion', 'title', 'slug', 'hostItemId', 'hostSha256', 'slotType', 'socket', 'nodes', 'ops', 'palette', 'hideRegions', 'fit']);
|
|
32
32
|
const unknown = Object.keys(row).filter((key) => !allowed.has(key));
|
|
33
33
|
if (unknown.length > 0)
|
|
34
34
|
throw new Error(`Character add-on profile has unsupported field(s): ${unknown.join(', ')}.`);
|
|
@@ -52,6 +52,10 @@ function validateCharacterAddonProfile(value) {
|
|
|
52
52
|
throw new Error('Character add-on profile slotType must use the runtime character.<slot>@1 vocabulary.');
|
|
53
53
|
}
|
|
54
54
|
const socket = requiredString(row.socket, 'socket');
|
|
55
|
+
const fit = row.fit === undefined ? 'canonical' : row.fit;
|
|
56
|
+
if (fit !== 'canonical' && fit !== 'host-aligned') {
|
|
57
|
+
throw new Error("Character add-on profile fit must be 'canonical' or 'host-aligned'.");
|
|
58
|
+
}
|
|
55
59
|
const rawNodes = stringList(row.nodes, 'nodes');
|
|
56
60
|
const rawOps = row.ops === undefined ? [] : row.ops;
|
|
57
61
|
if (!Array.isArray(rawOps))
|
|
@@ -89,6 +93,7 @@ function validateCharacterAddonProfile(value) {
|
|
|
89
93
|
hostSha256,
|
|
90
94
|
slotType,
|
|
91
95
|
socket,
|
|
96
|
+
fit,
|
|
92
97
|
nodes,
|
|
93
98
|
...(palette === undefined ? {} : { palette }),
|
|
94
99
|
fits: validated.fits,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"characterAddon.js","sourceRoot":"","sources":["../../src/bridge/characterAddon.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"characterAddon.js","sourceRoot":"","sources":["../../src/bridge/characterAddon.ts"],"names":[],"mappings":"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"}
|
|
@@ -284,9 +284,11 @@ async function executeCharacterAddon(plan, outputDir, options, sourcePath) {
|
|
|
284
284
|
output: outputDir,
|
|
285
285
|
name: profile.slug,
|
|
286
286
|
canonical: hostPath,
|
|
287
|
+
...(options.map ? { map: (0, node_path_1.resolve)(options.map) } : {}),
|
|
287
288
|
rigScope: 'addon',
|
|
288
|
-
fit:
|
|
289
|
+
fit: profile.fit,
|
|
289
290
|
splitFace: false,
|
|
291
|
+
...(profile.slotType === 'character.hair@1' ? { pushOut: false } : {}),
|
|
290
292
|
...(profile.palette === undefined ? {} : { palette: { path: palettePath, selection: profile.palette } }),
|
|
291
293
|
onProgress: options.onProgress,
|
|
292
294
|
});
|
|
@@ -300,6 +302,7 @@ async function executeCharacterAddon(plan, outputDir, options, sourcePath) {
|
|
|
300
302
|
hostItemId: profile.hostItemId,
|
|
301
303
|
hostSha256,
|
|
302
304
|
slotType: profile.slotType,
|
|
305
|
+
fit: profile.fit,
|
|
303
306
|
fits: profile.fits,
|
|
304
307
|
ops: profile.ops,
|
|
305
308
|
lodTriangles: result.lodTris,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtInExecution.js","sourceRoot":"","sources":["../../../src/bridge/internal/builtInExecution.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builtInExecution.js","sourceRoot":"","sources":["../../../src/bridge/internal/builtInExecution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Document } from '@gltf-transform/core';
|
|
2
|
+
import { type HelixBodyRegion } from './bodyRegionHide';
|
|
3
|
+
/**
|
|
4
|
+
* Bakes a `_REGION` per-vertex glTF attribute into a HELIX canonical base body, so the platform's already-built
|
|
5
|
+
* `hide` grants (`character-slot-pack.ts` / `characterBase.ts`) can actually suppress the body region a garment
|
|
6
|
+
* covers — WITHOUT adding a single draw call.
|
|
7
|
+
*
|
|
8
|
+
* ── WHY BAKED DATA, NOT MORE PRIMITIVES ────────────────────────────────────────────────────────────────────────
|
|
9
|
+
* The obvious way to make "hide the thigh" real is to split the body mesh into a separate thigh primitive that
|
|
10
|
+
* can be toggled invisible. That is the wrong shape here: HELIX's own character draw-call budget is single
|
|
11
|
+
* digits per character (`docs/proposals/character-mesh-composition-optimization.md`, hero tier <= 6, target 4),
|
|
12
|
+
* multiplied by every character in a room, so turning ONE body draw into fifteen (one per `HELIX_BODY_REGIONS`
|
|
13
|
+
* entry) is a real, multiplied regression, not a style choice. Baking the region as VERTEX DATA and collapsing
|
|
14
|
+
* hidden triangles at runtime (`helix-web-engine-new`'s `applyComposition`) keeps the body at exactly the draw
|
|
15
|
+
* calls it already has — the same technique this codebase already uses for vehicle parts
|
|
16
|
+
* (`vehicleBatchedDraw.ts`'s "the part stays in the graph, it just stops being submitted").
|
|
17
|
+
*
|
|
18
|
+
* ── WHY THE COLLAPSE IS AN INDEX REWRITE, NOT A SHADER ────────────────────────────────────────────────────────
|
|
19
|
+
* A per-instance-uniform + `onBeforeCompile` shader patch was the first idea and the wrong one: this engine's
|
|
20
|
+
* own recent history is the reason why. `vehicleBatchedDraw.ts`'s emissive-colour patch relies on exactly that
|
|
21
|
+
* technique, and `WebGPURenderer` silently skips every `onBeforeCompile` patch — "every batched car rendered
|
|
22
|
+
* white" until the WebGPU renderer was detected and the batch gracefully degraded (helix-web-engine-new
|
|
23
|
+
* `11075018`, "car paint on WebGPU"). Collapsing a hidden triangle's three indices to a single shared vertex
|
|
24
|
+
* index, instead, needs no shader at all: it is the same index-buffer data on WebGL, WebGPU, or any future
|
|
25
|
+
* renderer, because a triangle whose three corners are the same point has zero area under ANY rasteriser by
|
|
26
|
+
* definition — there is no renderer-specific code path to keep in parity because there is no renderer-specific
|
|
27
|
+
* code at all.
|
|
28
|
+
*
|
|
29
|
+
* ── WHAT THIS TOOL DOES AND DOES NOT TOUCH ────────────────────────────────────────────────────────────────────
|
|
30
|
+
* Adds ONE custom glTF vertex attribute (`_REGION`, one unsigned byte per vertex — an index into
|
|
31
|
+
* `HELIX_BODY_REGIONS`, `255` for a vertex this classifier could not place). Every other accessor, node name,
|
|
32
|
+
* skin, material, and socket is byte-for-byte unchanged, which is the point: every add-on's `fits` already
|
|
33
|
+
* requires specific node/socket names from this exact body, and this must republish as a COMPATIBLE version,
|
|
34
|
+
* never a breaking one.
|
|
35
|
+
*
|
|
36
|
+
* ── THE HIP/TORSO SPLIT: A JOINT BOUNDARY, WIDENED BY THE BLEND ZONE THE RIG ITSELF PAINTED ──────────────────
|
|
37
|
+
* `body_hip` (pelvis-dominant: glutes, hip crest, lower abdomen, the ring a waistband sits on) is distinguished
|
|
38
|
+
* from `body_torso` (spine/clavicle-dominant: ribs, chest, upper stomach) using the rig's OWN skin weights, not
|
|
39
|
+
* an authored world-space height — a height threshold is population-specific (Base Male and Base Female differ
|
|
40
|
+
* in proportions) and would need re-tuning per body, where the rig's own weight painting needs none.
|
|
41
|
+
*
|
|
42
|
+
* A pure "which joint has the single highest weight" argmax is NOT enough on its own, though — MEASURED on the
|
|
43
|
+
* real Base Female against the real Sinth Ascetic Pants that motivated this file: the argmax boundary sits at
|
|
44
|
+
* world Y ~1.02 (of a ~1.67m-tall rest pose, i.e. ~61% up), but that pants' actual waistband reaches Y=1.057 —
|
|
45
|
+
* 3.5cm ABOVE where argmax alone would have drawn the line. Hiding only up to the argmax boundary would have
|
|
46
|
+
* left exactly the residual poke-through this file exists to close.
|
|
47
|
+
*
|
|
48
|
+
* The fix is still entirely rig-driven: any vertex where PELVIS carries at least `HIP_BLEND_WEIGHT_THRESHOLD`
|
|
49
|
+
* of its total skin weight is `body_hip`, even where spine_01 is nominally the single largest contributor — the
|
|
50
|
+
* blend zone between two joints is real geometry the rig already describes, and reading it (rather than only
|
|
51
|
+
* the winning joint) is what recovers the missing 3.5cm. Measured on the same body: vertices where pelvis
|
|
52
|
+
* weight >= 0.1 reach up to Y=1.068, comfortably (~1.1cm) above that pants' waistband, while >= 0.25 only
|
|
53
|
+
* reaches Y=1.044 (still short) and "any nonzero pelvis weight at all" reaches Y=1.093 (too far, starting to
|
|
54
|
+
* eat into unambiguous stomach/ribs territory) — 0.1 is the threshold with headroom on the one real garment
|
|
55
|
+
* measured against it. This is an empirical property of THIS rig's weight painting, not a universal constant:
|
|
56
|
+
* re-verify (the poke-through tool's own region breakdown, or a debug region-colour render) against a real
|
|
57
|
+
* high-rise or low-rise pants item before trusting it unchanged on a differently-proportioned future body.
|
|
58
|
+
*/
|
|
59
|
+
/** See "THE HIP/TORSO SPLIT" above — the empirically-chosen pelvis-weight blend threshold. */
|
|
60
|
+
export declare const HIP_BLEND_WEIGHT_THRESHOLD = 0.1;
|
|
61
|
+
/** `_REGION` encodes "no confident classification" as 255 (an unsigned byte, so this is the natural sentinel —
|
|
62
|
+
* never a valid `HELIX_BODY_REGIONS` index, since the vocabulary has far fewer than 255 entries). */
|
|
63
|
+
export declare const UNCLASSIFIED_REGION_INDEX = 255;
|
|
64
|
+
/** The region for a canonical joint name, or `null` if this classifier cannot confidently place it. */
|
|
65
|
+
export declare function regionForJoint(jointName: string): HelixBodyRegion | null;
|
|
66
|
+
export interface BakeBodyRegionsReport {
|
|
67
|
+
/** Skinned mesh primitives that received a `_REGION` attribute. */
|
|
68
|
+
primitivesBaked: number;
|
|
69
|
+
/** Vertices across every baked primitive. */
|
|
70
|
+
verticesTotal: number;
|
|
71
|
+
/** Vertices whose dominant joint could not be classified into a region (baked as 255). */
|
|
72
|
+
verticesUnclassified: number;
|
|
73
|
+
/** Vertex count per region name, for a sanity check against the mesh's expected proportions. */
|
|
74
|
+
regionCounts: Readonly<Record<string, number>>;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Bakes `_REGION` onto every skinned primitive in `document`, mutating it in place. Returns a report for the
|
|
78
|
+
* caller to log/verify; throws only if a skinned mesh has no skin (never expected for a HELIX canonical body).
|
|
79
|
+
*/
|
|
80
|
+
export declare function bakeBodyRegions(document: Document): BakeBodyRegionsReport;
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UNCLASSIFIED_REGION_INDEX = exports.HIP_BLEND_WEIGHT_THRESHOLD = void 0;
|
|
4
|
+
exports.regionForJoint = regionForJoint;
|
|
5
|
+
exports.bakeBodyRegions = bakeBodyRegions;
|
|
6
|
+
const bodyRegionHide_1 = require("./bodyRegionHide");
|
|
7
|
+
/**
|
|
8
|
+
* Bakes a `_REGION` per-vertex glTF attribute into a HELIX canonical base body, so the platform's already-built
|
|
9
|
+
* `hide` grants (`character-slot-pack.ts` / `characterBase.ts`) can actually suppress the body region a garment
|
|
10
|
+
* covers — WITHOUT adding a single draw call.
|
|
11
|
+
*
|
|
12
|
+
* ── WHY BAKED DATA, NOT MORE PRIMITIVES ────────────────────────────────────────────────────────────────────────
|
|
13
|
+
* The obvious way to make "hide the thigh" real is to split the body mesh into a separate thigh primitive that
|
|
14
|
+
* can be toggled invisible. That is the wrong shape here: HELIX's own character draw-call budget is single
|
|
15
|
+
* digits per character (`docs/proposals/character-mesh-composition-optimization.md`, hero tier <= 6, target 4),
|
|
16
|
+
* multiplied by every character in a room, so turning ONE body draw into fifteen (one per `HELIX_BODY_REGIONS`
|
|
17
|
+
* entry) is a real, multiplied regression, not a style choice. Baking the region as VERTEX DATA and collapsing
|
|
18
|
+
* hidden triangles at runtime (`helix-web-engine-new`'s `applyComposition`) keeps the body at exactly the draw
|
|
19
|
+
* calls it already has — the same technique this codebase already uses for vehicle parts
|
|
20
|
+
* (`vehicleBatchedDraw.ts`'s "the part stays in the graph, it just stops being submitted").
|
|
21
|
+
*
|
|
22
|
+
* ── WHY THE COLLAPSE IS AN INDEX REWRITE, NOT A SHADER ────────────────────────────────────────────────────────
|
|
23
|
+
* A per-instance-uniform + `onBeforeCompile` shader patch was the first idea and the wrong one: this engine's
|
|
24
|
+
* own recent history is the reason why. `vehicleBatchedDraw.ts`'s emissive-colour patch relies on exactly that
|
|
25
|
+
* technique, and `WebGPURenderer` silently skips every `onBeforeCompile` patch — "every batched car rendered
|
|
26
|
+
* white" until the WebGPU renderer was detected and the batch gracefully degraded (helix-web-engine-new
|
|
27
|
+
* `11075018`, "car paint on WebGPU"). Collapsing a hidden triangle's three indices to a single shared vertex
|
|
28
|
+
* index, instead, needs no shader at all: it is the same index-buffer data on WebGL, WebGPU, or any future
|
|
29
|
+
* renderer, because a triangle whose three corners are the same point has zero area under ANY rasteriser by
|
|
30
|
+
* definition — there is no renderer-specific code path to keep in parity because there is no renderer-specific
|
|
31
|
+
* code at all.
|
|
32
|
+
*
|
|
33
|
+
* ── WHAT THIS TOOL DOES AND DOES NOT TOUCH ────────────────────────────────────────────────────────────────────
|
|
34
|
+
* Adds ONE custom glTF vertex attribute (`_REGION`, one unsigned byte per vertex — an index into
|
|
35
|
+
* `HELIX_BODY_REGIONS`, `255` for a vertex this classifier could not place). Every other accessor, node name,
|
|
36
|
+
* skin, material, and socket is byte-for-byte unchanged, which is the point: every add-on's `fits` already
|
|
37
|
+
* requires specific node/socket names from this exact body, and this must republish as a COMPATIBLE version,
|
|
38
|
+
* never a breaking one.
|
|
39
|
+
*
|
|
40
|
+
* ── THE HIP/TORSO SPLIT: A JOINT BOUNDARY, WIDENED BY THE BLEND ZONE THE RIG ITSELF PAINTED ──────────────────
|
|
41
|
+
* `body_hip` (pelvis-dominant: glutes, hip crest, lower abdomen, the ring a waistband sits on) is distinguished
|
|
42
|
+
* from `body_torso` (spine/clavicle-dominant: ribs, chest, upper stomach) using the rig's OWN skin weights, not
|
|
43
|
+
* an authored world-space height — a height threshold is population-specific (Base Male and Base Female differ
|
|
44
|
+
* in proportions) and would need re-tuning per body, where the rig's own weight painting needs none.
|
|
45
|
+
*
|
|
46
|
+
* A pure "which joint has the single highest weight" argmax is NOT enough on its own, though — MEASURED on the
|
|
47
|
+
* real Base Female against the real Sinth Ascetic Pants that motivated this file: the argmax boundary sits at
|
|
48
|
+
* world Y ~1.02 (of a ~1.67m-tall rest pose, i.e. ~61% up), but that pants' actual waistband reaches Y=1.057 —
|
|
49
|
+
* 3.5cm ABOVE where argmax alone would have drawn the line. Hiding only up to the argmax boundary would have
|
|
50
|
+
* left exactly the residual poke-through this file exists to close.
|
|
51
|
+
*
|
|
52
|
+
* The fix is still entirely rig-driven: any vertex where PELVIS carries at least `HIP_BLEND_WEIGHT_THRESHOLD`
|
|
53
|
+
* of its total skin weight is `body_hip`, even where spine_01 is nominally the single largest contributor — the
|
|
54
|
+
* blend zone between two joints is real geometry the rig already describes, and reading it (rather than only
|
|
55
|
+
* the winning joint) is what recovers the missing 3.5cm. Measured on the same body: vertices where pelvis
|
|
56
|
+
* weight >= 0.1 reach up to Y=1.068, comfortably (~1.1cm) above that pants' waistband, while >= 0.25 only
|
|
57
|
+
* reaches Y=1.044 (still short) and "any nonzero pelvis weight at all" reaches Y=1.093 (too far, starting to
|
|
58
|
+
* eat into unambiguous stomach/ribs territory) — 0.1 is the threshold with headroom on the one real garment
|
|
59
|
+
* measured against it. This is an empirical property of THIS rig's weight painting, not a universal constant:
|
|
60
|
+
* re-verify (the poke-through tool's own region breakdown, or a debug region-colour render) against a real
|
|
61
|
+
* high-rise or low-rise pants item before trusting it unchanged on a differently-proportioned future body.
|
|
62
|
+
*/
|
|
63
|
+
/** See "THE HIP/TORSO SPLIT" above — the empirically-chosen pelvis-weight blend threshold. */
|
|
64
|
+
exports.HIP_BLEND_WEIGHT_THRESHOLD = 0.1;
|
|
65
|
+
/** `_REGION` encodes "no confident classification" as 255 (an unsigned byte, so this is the natural sentinel —
|
|
66
|
+
* never a valid `HELIX_BODY_REGIONS` index, since the vocabulary has far fewer than 255 entries). */
|
|
67
|
+
exports.UNCLASSIFIED_REGION_INDEX = 255;
|
|
68
|
+
const REGION_INDEX = new Map(bodyRegionHide_1.HELIX_BODY_REGIONS.map((region, index) => [region, index]));
|
|
69
|
+
/**
|
|
70
|
+
* Canonical-skeleton joint name -> body region, for every joint whose skin-weight dominance should classify a
|
|
71
|
+
* vertex. A joint absent here (finger sub-segments beyond the metacarpal, twist helpers not listed, etc.)
|
|
72
|
+
* falls through to the regex fallback in `regionForJoint`, and failing that, `UNCLASSIFIED_REGION_INDEX`.
|
|
73
|
+
*/
|
|
74
|
+
const JOINT_TO_REGION = {
|
|
75
|
+
head: 'body_head',
|
|
76
|
+
neck_01: 'body_neck', neck_02: 'body_neck',
|
|
77
|
+
// Spine + clavicles: everything ABOVE the pelvis's own weight zone. See the file header for why this joint
|
|
78
|
+
// boundary, not an authored height, is the hip/torso split.
|
|
79
|
+
spine_01: 'body_torso', spine_02: 'body_torso', spine_03: 'body_torso', spine_04: 'body_torso', spine_05: 'body_torso',
|
|
80
|
+
clavicle_l: 'body_torso', clavicle_r: 'body_torso',
|
|
81
|
+
pelvis: 'body_hip',
|
|
82
|
+
upperarm_l: 'body_upperarm_l', upperarm_twist_01_l: 'body_upperarm_l', upperarm_twist_02_l: 'body_upperarm_l',
|
|
83
|
+
upperarm_r: 'body_upperarm_r', upperarm_twist_01_r: 'body_upperarm_r', upperarm_twist_02_r: 'body_upperarm_r',
|
|
84
|
+
lowerarm_l: 'body_forearm_l', lowerarm_twist_01_l: 'body_forearm_l', lowerarm_twist_02_l: 'body_forearm_l',
|
|
85
|
+
lowerarm_r: 'body_forearm_r', lowerarm_twist_01_r: 'body_forearm_r', lowerarm_twist_02_r: 'body_forearm_r',
|
|
86
|
+
thigh_l: 'body_thigh_l', thigh_twist_01_l: 'body_thigh_l',
|
|
87
|
+
thigh_r: 'body_thigh_r', thigh_twist_01_r: 'body_thigh_r',
|
|
88
|
+
calf_l: 'body_shin_l', calf_twist_01_l: 'body_shin_l',
|
|
89
|
+
calf_r: 'body_shin_r', calf_twist_01_r: 'body_shin_r',
|
|
90
|
+
foot_l: 'body_foot_l', ball_l: 'body_foot_l',
|
|
91
|
+
foot_r: 'body_foot_r', ball_r: 'body_foot_r',
|
|
92
|
+
};
|
|
93
|
+
/** The region for a canonical joint name, or `null` if this classifier cannot confidently place it. */
|
|
94
|
+
function regionForJoint(jointName) {
|
|
95
|
+
const direct = JOINT_TO_REGION[jointName];
|
|
96
|
+
if (direct)
|
|
97
|
+
return direct;
|
|
98
|
+
if (/(pinky|ring|thumb|middle|index|hand)/.test(jointName)) {
|
|
99
|
+
if (jointName.endsWith('_l'))
|
|
100
|
+
return 'body_hand_l';
|
|
101
|
+
if (jointName.endsWith('_r'))
|
|
102
|
+
return 'body_hand_r';
|
|
103
|
+
}
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Bakes `_REGION` onto every skinned primitive in `document`, mutating it in place. Returns a report for the
|
|
108
|
+
* caller to log/verify; throws only if a skinned mesh has no skin (never expected for a HELIX canonical body).
|
|
109
|
+
*/
|
|
110
|
+
function bakeBodyRegions(document) {
|
|
111
|
+
let primitivesBaked = 0;
|
|
112
|
+
let verticesTotal = 0;
|
|
113
|
+
let verticesUnclassified = 0;
|
|
114
|
+
const regionCounts = {};
|
|
115
|
+
for (const node of document.getRoot().listNodes()) {
|
|
116
|
+
const mesh = node.getMesh();
|
|
117
|
+
const skin = node.getSkin();
|
|
118
|
+
if (!mesh || !skin)
|
|
119
|
+
continue;
|
|
120
|
+
const joints = skin.listJoints();
|
|
121
|
+
const jointNames = joints.map((j) => j.getName());
|
|
122
|
+
const jointRegionIndex = jointNames.map((name) => {
|
|
123
|
+
const region = regionForJoint(name);
|
|
124
|
+
return region === null ? exports.UNCLASSIFIED_REGION_INDEX : REGION_INDEX.get(region);
|
|
125
|
+
});
|
|
126
|
+
const pelvisJointIndex = jointNames.indexOf('pelvis');
|
|
127
|
+
const hipRegionIndex = REGION_INDEX.get('body_hip');
|
|
128
|
+
const torsoRegionIndex = REGION_INDEX.get('body_torso');
|
|
129
|
+
for (const prim of mesh.listPrimitives()) {
|
|
130
|
+
const pos = prim.getAttribute('POSITION');
|
|
131
|
+
if (!pos)
|
|
132
|
+
continue;
|
|
133
|
+
const count = pos.getCount();
|
|
134
|
+
const region = new Uint8Array(count).fill(exports.UNCLASSIFIED_REGION_INDEX);
|
|
135
|
+
const sets = [];
|
|
136
|
+
for (const s of [0, 1]) {
|
|
137
|
+
const j = prim.getAttribute(`JOINTS_${s}`);
|
|
138
|
+
const w = prim.getAttribute(`WEIGHTS_${s}`);
|
|
139
|
+
if (j && w)
|
|
140
|
+
sets.push({ j, w });
|
|
141
|
+
}
|
|
142
|
+
const jBuf = [0, 0, 0, 0];
|
|
143
|
+
const wBuf = [0, 0, 0, 0];
|
|
144
|
+
for (let i = 0; i < count; i++) {
|
|
145
|
+
let dominantWeight = -1;
|
|
146
|
+
let dominantJoint = -1;
|
|
147
|
+
let weightSum = 0;
|
|
148
|
+
let pelvisWeight = 0;
|
|
149
|
+
for (const { j, w } of sets) {
|
|
150
|
+
j.getElement(i, jBuf);
|
|
151
|
+
w.getElement(i, wBuf);
|
|
152
|
+
for (let k = 0; k < 4; k++) {
|
|
153
|
+
const weight = wBuf[k];
|
|
154
|
+
weightSum += weight;
|
|
155
|
+
if (pelvisJointIndex >= 0 && jBuf[k] === pelvisJointIndex)
|
|
156
|
+
pelvisWeight += weight;
|
|
157
|
+
if (weight > dominantWeight) {
|
|
158
|
+
dominantWeight = weight;
|
|
159
|
+
dominantJoint = jBuf[k];
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
let regionIndex = dominantJoint >= 0 ? jointRegionIndex[dominantJoint] : exports.UNCLASSIFIED_REGION_INDEX;
|
|
164
|
+
// The pelvis/spine blend-zone widening — see "THE HIP/TORSO SPLIT" above. Only ever pulls a vertex
|
|
165
|
+
// FROM torso INTO hip; every other region (thigh, arm, ...) is left exactly as the dominant joint says.
|
|
166
|
+
if (regionIndex === torsoRegionIndex && weightSum > 0 && pelvisWeight / weightSum >= exports.HIP_BLEND_WEIGHT_THRESHOLD) {
|
|
167
|
+
regionIndex = hipRegionIndex;
|
|
168
|
+
}
|
|
169
|
+
region[i] = regionIndex;
|
|
170
|
+
verticesTotal++;
|
|
171
|
+
if (regionIndex === exports.UNCLASSIFIED_REGION_INDEX) {
|
|
172
|
+
verticesUnclassified++;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
const name = bodyRegionHide_1.HELIX_BODY_REGIONS[regionIndex];
|
|
176
|
+
regionCounts[name] = (regionCounts[name] ?? 0) + 1;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
const buffer = pos.getBuffer();
|
|
180
|
+
const regionAccessor = document.createAccessor()
|
|
181
|
+
.setType('SCALAR')
|
|
182
|
+
.setArray(region)
|
|
183
|
+
.setBuffer(buffer);
|
|
184
|
+
prim.setAttribute('_REGION', regionAccessor);
|
|
185
|
+
primitivesBaked++;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return { primitivesBaked, verticesTotal, verticesUnclassified, regionCounts };
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=bakeBodyRegions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bakeBodyRegions.js","sourceRoot":"","sources":["../../src/character/bakeBodyRegions.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,8 +24,24 @@
|
|
|
24
24
|
* `bodyRegionHide.spec.ts` locks every entry down, so a platform-side rename is a failing test here rather
|
|
25
25
|
* than a hide op the server rejects as "not covered by fits.requires.nodes".
|
|
26
26
|
*/
|
|
27
|
-
/**
|
|
28
|
-
|
|
27
|
+
/**
|
|
28
|
+
* The canonical body-region node vocabulary a HELIX base body's publish-time classifier assigns.
|
|
29
|
+
*
|
|
30
|
+
* ── THIS ARRAY'S ORDER IS A WIRE FORMAT, NOT JUST A LIST ──────────────────────────────────────────────────────
|
|
31
|
+
* `bakeBodyRegions.ts` bakes each vertex's region as its INDEX INTO THIS ARRAY (a `_REGION` glTF vertex
|
|
32
|
+
* attribute), and `helix-web-engine-new`'s runtime decodes that index back into a region name through the
|
|
33
|
+
* IDENTICAL array (`characterBase.ts`'s `HELIX_BODY_REGIONS`, hand-synced with this one exactly like
|
|
34
|
+
* `character-slot-pack.ts`/`characterBase.ts` already are for grants). A body baked under one order and read
|
|
35
|
+
* under another silently mislabels regions — never reorder or remove an entry; only ever append. `body_hip`
|
|
36
|
+
* was appended here (not inserted after `body_torso`) for exactly that reason, even though it reads more
|
|
37
|
+
* naturally next to `body_torso`.
|
|
38
|
+
*
|
|
39
|
+
* `body_hip` (added for the waistband poke-through fix): the pelvis-dominant skin-weight zone — glutes, hip
|
|
40
|
+
* crest, lower abdomen, the ring a garment's waistband sits on — as distinct from `body_torso` (spine-dominant:
|
|
41
|
+
* ribs, chest, upper stomach, materially ABOVE where a waistband ever sits). See `bakeBodyRegions.ts`'s header
|
|
42
|
+
* for exactly why the pelvis/spine skin-weight boundary is the split line, not an authored height threshold.
|
|
43
|
+
*/
|
|
44
|
+
export declare const HELIX_BODY_REGIONS: readonly ["body_head", "body_neck", "body_torso", "body_upperarm_l", "body_upperarm_r", "body_forearm_l", "body_forearm_r", "body_hand_l", "body_hand_r", "body_thigh_l", "body_thigh_r", "body_shin_l", "body_shin_r", "body_foot_l", "body_foot_r", "hair_base", "body_hip"];
|
|
29
45
|
export type HelixBodyRegion = (typeof HELIX_BODY_REGIONS)[number];
|
|
30
46
|
/**
|
|
31
47
|
* `character.<slot>@1` -> the region globs that slot type's platform grant permits it to hide, copied
|
|
@@ -28,7 +28,23 @@
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.DEFAULT_HIDE_REGIONS_BY_SLOT_TYPE = exports.HELIX_BODY_REGIONS = void 0;
|
|
30
30
|
exports.defaultHideRegionsForSlotType = defaultHideRegionsForSlotType;
|
|
31
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* The canonical body-region node vocabulary a HELIX base body's publish-time classifier assigns.
|
|
33
|
+
*
|
|
34
|
+
* ── THIS ARRAY'S ORDER IS A WIRE FORMAT, NOT JUST A LIST ──────────────────────────────────────────────────────
|
|
35
|
+
* `bakeBodyRegions.ts` bakes each vertex's region as its INDEX INTO THIS ARRAY (a `_REGION` glTF vertex
|
|
36
|
+
* attribute), and `helix-web-engine-new`'s runtime decodes that index back into a region name through the
|
|
37
|
+
* IDENTICAL array (`characterBase.ts`'s `HELIX_BODY_REGIONS`, hand-synced with this one exactly like
|
|
38
|
+
* `character-slot-pack.ts`/`characterBase.ts` already are for grants). A body baked under one order and read
|
|
39
|
+
* under another silently mislabels regions — never reorder or remove an entry; only ever append. `body_hip`
|
|
40
|
+
* was appended here (not inserted after `body_torso`) for exactly that reason, even though it reads more
|
|
41
|
+
* naturally next to `body_torso`.
|
|
42
|
+
*
|
|
43
|
+
* `body_hip` (added for the waistband poke-through fix): the pelvis-dominant skin-weight zone — glutes, hip
|
|
44
|
+
* crest, lower abdomen, the ring a garment's waistband sits on — as distinct from `body_torso` (spine-dominant:
|
|
45
|
+
* ribs, chest, upper stomach, materially ABOVE where a waistband ever sits). See `bakeBodyRegions.ts`'s header
|
|
46
|
+
* for exactly why the pelvis/spine skin-weight boundary is the split line, not an authored height threshold.
|
|
47
|
+
*/
|
|
32
48
|
exports.HELIX_BODY_REGIONS = [
|
|
33
49
|
'body_head',
|
|
34
50
|
'body_neck',
|
|
@@ -46,6 +62,7 @@ exports.HELIX_BODY_REGIONS = [
|
|
|
46
62
|
'body_foot_l',
|
|
47
63
|
'body_foot_r',
|
|
48
64
|
'hair_base',
|
|
65
|
+
'body_hip',
|
|
49
66
|
];
|
|
50
67
|
/**
|
|
51
68
|
* `character.<slot>@1` -> the region globs that slot type's platform grant permits it to hide, copied
|
|
@@ -57,8 +74,8 @@ exports.HELIX_BODY_REGIONS = [
|
|
|
57
74
|
*/
|
|
58
75
|
exports.DEFAULT_HIDE_REGIONS_BY_SLOT_TYPE = {
|
|
59
76
|
'character.top@1': ['body_torso', 'body_upperarm_*'],
|
|
60
|
-
'character.bottom@1': ['body_thigh_*', 'body_shin_*'],
|
|
61
|
-
'character.outfit@1': ['body_torso', 'body_upperarm_*', 'body_forearm_*', 'body_thigh_*', 'body_shin_*'],
|
|
77
|
+
'character.bottom@1': ['body_hip', 'body_thigh_*', 'body_shin_*'],
|
|
78
|
+
'character.outfit@1': ['body_torso', 'body_hip', 'body_upperarm_*', 'body_forearm_*', 'body_thigh_*', 'body_shin_*'],
|
|
62
79
|
'character.footwear@1': ['body_foot_*'],
|
|
63
80
|
'character.gloves@1': ['body_hand_*', 'body_forearm_*'],
|
|
64
81
|
'character.socks@1': ['body_shin_*'],
|
|
@@ -66,6 +83,10 @@ exports.DEFAULT_HIDE_REGIONS_BY_SLOT_TYPE = {
|
|
|
66
83
|
'character.mask@1': ['body_head'],
|
|
67
84
|
'character.hair@1': ['hair_base'],
|
|
68
85
|
'character.head@1': ['body_head'],
|
|
86
|
+
// NOTE: 'body_hip' is deliberately NOT included here. character-slot-pack.ts's `look.body` grant was left
|
|
87
|
+
// at its pre-existing hide set (only 'bottom' and 'outfit' were widened for the waistband fix) — adding
|
|
88
|
+
// it to this default without a matching platform grant would emit a hide op the server rejects outright
|
|
89
|
+
// ("not covered by fits.requires.nodes"). If look.body's grant is ever widened, widen this to match.
|
|
69
90
|
'character.look@1': ['body_torso', 'body_upperarm_*', 'body_thigh_*', 'body_shin_*'],
|
|
70
91
|
};
|
|
71
92
|
/** The default hide-region globs for `slotType`, or `[]` when the platform grants that slot no `hide` at all. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bodyRegionHide.js","sourceRoot":"","sources":["../../src/character/bodyRegionHide.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;
|
|
1
|
+
{"version":3,"file":"bodyRegionHide.js","sourceRoot":"","sources":["../../src/character/bodyRegionHide.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;AAoEH,sEAEC;AApED;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,kBAAkB,GAAG;IAChC,WAAW;IACX,WAAW;IACX,YAAY;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,gBAAgB;IAChB,gBAAgB;IAChB,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;IACd,aAAa;IACb,aAAa;IACb,aAAa;IACb,aAAa;IACb,WAAW;IACX,UAAU;CACF,CAAC;AAIX;;;;;;;GAOG;AACU,QAAA,iCAAiC,GAAgD;IAC5F,iBAAiB,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACpD,oBAAoB,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,aAAa,CAAC;IACjE,oBAAoB,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,CAAC;IACpH,sBAAsB,EAAE,CAAC,aAAa,CAAC;IACvC,oBAAoB,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACvD,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,sBAAsB,EAAE,CAAC,WAAW,CAAC;IACrC,kBAAkB,EAAE,CAAC,WAAW,CAAC;IACjC,kBAAkB,EAAE,CAAC,WAAW,CAAC;IACjC,kBAAkB,EAAE,CAAC,WAAW,CAAC;IACjC,0GAA0G;IAC1G,wGAAwG;IACxG,wGAAwG;IACxG,qGAAqG;IACrG,kBAAkB,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,CAAC;CACrF,CAAC;AAEF,iHAAiH;AACjH,SAAgB,6BAA6B,CAAC,QAAgB;IAC5D,OAAO,yCAAiC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC3D,CAAC"}
|
|
@@ -58,9 +58,10 @@ export interface ImportCharacterOptions {
|
|
|
58
58
|
lockBorder?: boolean;
|
|
59
59
|
/** Force (true) or disable (false) the weld+unwrap+rebake path; undefined = auto-detect micro-chart atlases. */
|
|
60
60
|
bake?: boolean;
|
|
61
|
-
/** 'source'
|
|
62
|
-
*
|
|
63
|
-
|
|
61
|
+
/** 'source' fits a canonical rig to source joints; 'canonical' reposes geometry to the pinned
|
|
62
|
+
* rest; 'host-aligned' preserves geometry already authored in the host's mesh coordinates while
|
|
63
|
+
* rebinding to its exact skeleton. The last mode validates mapped anatomical anchors. */
|
|
64
|
+
fit?: 'source' | 'canonical' | 'host-aligned';
|
|
64
65
|
/** Seam-weld fallback for floored far LODs on the non-bake path (default true; LOD0 never welds there). */
|
|
65
66
|
weld?: boolean;
|
|
66
67
|
/** Slice head-weighted triangles into a separate 'FaceMesh' node per LOD (default true), so the
|