@deepblend/dsh-blender-host 0.9.0 → 0.10.0
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/lib/geometry-inspection.js +16 -3
- package/lib/index.js +1 -1
- package/package.json +2 -2
|
@@ -63,16 +63,29 @@ export async function inspectRevisionGeometry(host, projectId, revision, selecti
|
|
|
63
63
|
if (fileSha256(snapshot) !== expected) refuse(BlenderErrorCode.SCENE_VALIDATION_FAILED, 'the staged native input differs from the saved source.')
|
|
64
64
|
const result = await host.runtime.inspectGeometry(request)
|
|
65
65
|
cancelled(signal)
|
|
66
|
+
if (selection.surfaceSamples !== undefined && result?.report?.schemaVersion === 'deepblend.geometry-inspection/v1') {
|
|
67
|
+
refuse(BlenderErrorCode.RUNTIME_UNAVAILABLE, 'the runtime does not support local surface samples; upgrade DeepBlend. Ordinary native geometry reads remain available.')
|
|
68
|
+
}
|
|
66
69
|
const native = verifyGeometryReport(result?.report, request)
|
|
67
70
|
verifySource()
|
|
68
|
-
|
|
71
|
+
const hasSamples = selection.surfaceSamples !== undefined
|
|
72
|
+
return { schemaVersion: hasSamples ? 'deepblend.scene-geometry/v2' : 'deepblend.scene-geometry/v1', projectId, sourceRevision: revision,
|
|
69
73
|
sourceDigest: digest, sourceSpecHash: manifest.specHashAfter, sourceCheckpointSha256: expected,
|
|
70
74
|
sourceUnchanged: true, frame: native.frame, objects: native.objects, blenderVersion: native.blenderVersion,
|
|
71
|
-
|
|
75
|
+
...(hasSamples ? { surfaceSamples: native.surfaceSamples } : {}),
|
|
76
|
+
excludedMeasurements: hasSamples ? ['globalWallThickness', 'assemblyClearance', 'minimumClearance', 'collision', 'selfIntersection'] :
|
|
77
|
+
['wallThickness', 'shellToLinerClearance', 'minimumClearance', 'collision'],
|
|
72
78
|
execution: { transport: 'batch' }, limitations: [
|
|
73
79
|
'World-axis spans include rotations, handles and protrusions; they are not intrinsic body dimensions.',
|
|
74
80
|
'This evaluates saved native mesh geometry, not shader displacement or rendered pixels.',
|
|
75
|
-
|
|
81
|
+
...(hasSamples ? [
|
|
82
|
+
'Surface samples are finite local chords along evaluated triangle-face normals, not shader or smoothed shading normals.',
|
|
83
|
+
'The normalSurfaceChordMm runs from source entry to source exit. Target normalRaySeparationMm runs from source EXIT to target entry along that inward normal and excludes the source chord. Other scene objects are not checked; this is not full assembly free clearance.',
|
|
84
|
+
'Closed connected consistently wound positive-volume geometry is required, but absence of self-intersections is not certified.',
|
|
85
|
+
'No global minimum wall thickness, minimum clearance, collision absence, manufacturing safety or artistic approval is established.',
|
|
86
|
+
'Unmeasured, missed, overlapping, occluded or unsupported samples must remain unavailable, never be replaced by zero or inferred from bounds.',
|
|
87
|
+
'Search distance is explicitly requested (0.01–500 mm); chord and target search limits are each 100 mm. Epsilon is 0.0001 mm; distances at or below twice epsilon are unavailable.',
|
|
88
|
+
] : ['No wall thickness, clearance, collision, topology or artistic approval is established.']),
|
|
76
89
|
'Do not subtract shell and liner extents or radii to report a gap: both bounds describe outer surfaces, and their difference includes wall material and depends on curvature and orientation.',
|
|
77
90
|
'Unchanged height, position or scale does not prove that wall thickness or clearance was preserved. Report those conditions as unmeasured unless a separate surface measurement verifies them.',
|
|
78
91
|
] }
|
package/lib/index.js
CHANGED
|
@@ -710,7 +710,7 @@ export default class BlenderStudio extends Service {
|
|
|
710
710
|
* whole spec on every turn spends its context on fields it is not changing.
|
|
711
711
|
*
|
|
712
712
|
* @param {string} projectId
|
|
713
|
-
* @param {{ revision?: string, full?: boolean, geometry?: { entityIds: string[], frame: number }, signal?: AbortSignal }} [options]
|
|
713
|
+
* @param {{ revision?: string, full?: boolean, geometry?: { entityIds: string[], frame: number, surfaceSamples?: object[] }, signal?: AbortSignal }} [options]
|
|
714
714
|
* @returns {Promise<Record<string, unknown>>}
|
|
715
715
|
*/
|
|
716
716
|
async getScene(projectId, options = {}) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepblend/dsh-blender-host",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "DeepBlend Host service: the blenderStudio business facade over the BlenderRuntime seam.",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"./package.json": "./package.json"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@deepblend/dsh-blender-contracts": "0.
|
|
23
|
+
"@deepblend/dsh-blender-contracts": "0.10.0",
|
|
24
24
|
"sharp": "0.35.5"
|
|
25
25
|
},
|
|
26
26
|
"license": "MIT",
|