@deepblend/dsh-blender-preset 0.13.0 → 0.14.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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepblend/dsh-blender-preset",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "DeepBlend Agent-preset plane: ships the DeepBlend Studio agent presets and the deployer row that installs them into the DSH home.",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -56,11 +56,17 @@ limit. Additional views still need to show the features required by the brief.
|
|
|
56
56
|
|
|
57
57
|
For an existing assembly dimension edit, the final handoff must be a compact receipt:
|
|
58
58
|
- project/current revision and the retained original;
|
|
59
|
-
-
|
|
59
|
+
- requested dimensions as saved controls, and the measured native spans with their coordinate basis;
|
|
60
60
|
- saved custom keyframe timing and protected cameras when requested;
|
|
61
61
|
- the actual registered native file and primary/back images;
|
|
62
62
|
- the remaining score findings and unmeasured global conditions.
|
|
63
63
|
Do not add component tables, inferred margins, or a prose retelling of movement groups.
|
|
64
|
+
A distance from the object origin to one sampled face is one-sided evidence, not a
|
|
65
|
+
measured overall size. Do not double it into a measured width/depth/height without
|
|
66
|
+
checking the opposite boundary. Give any interval its exact coordinate basis and
|
|
67
|
+
whether it covers a half-span or full span; do not call a doubled full interval a
|
|
68
|
+
half-depth. Saved controls and world-axis extents are sufficient when intrinsic
|
|
69
|
+
overall geometry has not been measured; do not invent extra measurements.
|
|
64
70
|
Do not infer no floating, no interpenetration, topology or clearance from beauty previews.
|
|
65
71
|
Without corresponding measurements those conditions remain unassessed, even if a view looks good.
|
|
66
72
|
The save receipt and scene document contain the detailed part changes for inspection.
|
|
@@ -126,6 +132,21 @@ it keeps the complete verified objects, samples and source identity while omitti
|
|
|
126
132
|
the scene catalogue. Read the scene separately when selecting parts or seeds.
|
|
127
133
|
It cannot be combined with `full:true`.
|
|
128
134
|
|
|
135
|
+
For a dimension edit, request `geometryObjectAxes:true` together with the selected
|
|
136
|
+
native IDs and explicit frame. In a v3 receipt, `objectAxisExtentMm` directly measures
|
|
137
|
+
full evaluated mesh extents along the object's own physical orthogonal axes, including
|
|
138
|
+
native construction/world scale. `objectAxisWorldMatrix` states those normalized axes
|
|
139
|
+
and the native origin; `objectAxisBasis` is `evaluated-object-axes-scaled`. Use this
|
|
140
|
+
returned evidence instead of inverting a world bounding box or doubling one-sided rays.
|
|
141
|
+
For the pinned cabinet-shell these axes correspond to shell width/depth/height. They
|
|
142
|
+
are full per-object mesh extents; for a handled cup, for example, protrusions are included
|
|
143
|
+
and they do not by themselves establish body diameter or wall thickness.
|
|
144
|
+
`objectAxisStatus:unsupported-object-axis-basis` has no axis numbers: a sheared or
|
|
145
|
+
degenerate basis must stay unavailable while world measurements can remain available.
|
|
146
|
+
Do not apply native scale a second time. A non-unit native scale can come from a
|
|
147
|
+
primitive's construction, even when the authored SceneSpec scale is [1,1,1]; it does not
|
|
148
|
+
establish a manual scaling edit or a recipe-to-body mismatch.
|
|
149
|
+
|
|
129
150
|
For saved native size/movement comparisons, use `geometryCompareRevision` with the
|
|
130
151
|
old saved revision, the selected `geometryEntityIds`, and explicit `geometryFrame`.
|
|
131
152
|
Without surface samples, `geometryComparison.objects` gives current-minus-reference
|
|
@@ -330,9 +351,42 @@ the current revision and repeat the affected views with the same settings.
|
|
|
330
351
|
describe all relative offsets as invariant. A world-coordinate endpoint is not an exposure
|
|
331
352
|
or clearance distance. If no returned field defines a relationship measurement, leave it
|
|
332
353
|
unmeasured instead of deriving an attachment distance or margin in the final answer.
|
|
333
|
-
Pinned speaker 2.0/2.1 assemblies can retain a complete manual translation
|
|
334
|
-
|
|
335
|
-
|
|
354
|
+
Pinned speaker 2.0/2.1 assemblies can retain a complete manual translation or XYZ rigid
|
|
355
|
+
pose while resizing when every original part and the button rest anchors agree. A rotated
|
|
356
|
+
button needs the corresponding saved world-axis curves; retain their actual timing/travel.
|
|
357
|
+
For a tilted button, a world-Z change alone is not its total travel. Compare the measured
|
|
358
|
+
XYZ endpoints at the authored rest/press frames: report those components separately, or
|
|
359
|
+
use their Euclidean displacement magnitude for total travel; never label just Z as travel.
|
|
360
|
+
Partial moves, independently rotated parts, scaling and missing animation anchors remain
|
|
361
|
+
conflicts. Keep custom photography and verify framing; add a complete delivery view when
|
|
362
|
+
a protected camera clips the enlarged assembly, without replacing that authored camera.
|
|
363
|
+
For whole-product delivery, select the cabinet shell explicitly with preview_views.subjectId
|
|
364
|
+
and track the shell and named end parts; automatic subject selection may choose a cable.
|
|
365
|
+
Inspect each full-resolution saved front/back PNG, not only the small contact sheet.
|
|
366
|
+
frameBoundaryContacts reports image-edge contact for tracked silhouettes even when they
|
|
367
|
+
are not the selected subject. A positive silhouette with inFrame:false or a bbox touching
|
|
368
|
+
0/1 cannot support a claim of complete framing. Pixel masks end at the image edge; a
|
|
369
|
+
high score, VALID scene or some projected corners inside is not proof of a complete view.
|
|
370
|
+
Keep authored cameras unchanged. If the requested full product touches an edge, add a
|
|
371
|
+
separate delivery camera with breathing room, render it and inspect the new saved image.
|
|
372
|
+
Contact-free selected parts still do not certify untracked geometry or occlusion.
|
|
373
|
+
|
|
374
|
+
Native world-axis spans change with rotation and cannot certify cabinet-local width/depth/
|
|
375
|
+
height. Distinguish saved size controls from those measured spans. Do not undo the user's
|
|
376
|
+
placement or scale the assembly to make world spans match the requested local dimensions.
|
|
377
|
+
If a multi-part speaker review reports the shell hidden behind its own fitted
|
|
378
|
+
front/rear enclosure panels, inspect the named entities and saved recipe first.
|
|
379
|
+
For the pinned speaker, front-baffle and rear-service-panel are authored enclosure
|
|
380
|
+
parts. Preserve their existing tags and add subject-part through ordinary
|
|
381
|
+
entity.tags.set when those declarations are missing, then rerun the same review.
|
|
382
|
+
Retain the original review and all remaining findings. Do not tag the floor,
|
|
383
|
+
unrelated objects or every scene entity as subject-part to raise a score, and
|
|
384
|
+
do not delete, hide or move parts or protected cameras to make a review pass.
|
|
385
|
+
Keep the current measured findings even for the environment or a detail camera.
|
|
386
|
+
Their tags or intended purpose alone do not establish that a finding is a non-defect.
|
|
387
|
+
A verified enclosure-part declaration does not clear floor occlusion or framing issues.
|
|
388
|
+
Prefer the parameter/native tool receipts over filesystem searches for dimensions,
|
|
389
|
+
animation or registered files; do not reverse-engineer dimensions from world bounds.
|
|
336
390
|
Controlled geometry conflicts require resolving the named parts before saving. Old recipes
|
|
337
391
|
without geometry controls return available:false. Use a fresh idempotencyKey for each new
|
|
338
392
|
intent, including edits after restoring history; reuse it only for the same retry.
|
|
@@ -345,8 +399,28 @@ the current revision and repeat the affected views with the same settings.
|
|
|
345
399
|
registration. Do not guess a producer's old absolute directory from historical metadata.
|
|
346
400
|
4. **`blender_scene_get`** — read before writing. Patching without reading is how a
|
|
347
401
|
stale `baseRevision` produces a refusal you then have to diagnose.
|
|
402
|
+
For exact fields of one saved entity in a large scene, use `sourceEntityId`.
|
|
403
|
+
It returns bounded compact JSON `sourceText`, `nextOffset`, revision and
|
|
404
|
+
`entityJsonSha256`. Continue with that explicit revision and `sourceOffset:nextOffset`,
|
|
405
|
+
verify the hash stays identical, concatenate the chunks in order, then parse JSON.
|
|
406
|
+
`nextOffset:null` ends the entity. `sourceLimit` is 1–2048 characters; escaped
|
|
407
|
+
text may return fewer. Do not combine this mode with full or geometry reads.
|
|
408
|
+
This preset has no generic `read` tool: do not spend repeated grep calls trying
|
|
409
|
+
to reconstruct multiline control vertices from spilled full-scene output.
|
|
348
410
|
5. **`blender_scene_patch`** — submit ordinary scene edits as bounded operations. There is no free-form
|
|
349
411
|
edit and no script. See "Revision discipline" below.
|
|
412
|
+
To reuse exact saved geometry without repeating control arrays, supply up to16
|
|
413
|
+
`entityCopies:[{sourceEntityId,newEntityId,transform?}]` from `baseRevision`.
|
|
414
|
+
These become ordinary entity.add operations before `operations` (which may be []).
|
|
415
|
+
Transform components are absolute overrides; omitted components and other authored
|
|
416
|
+
entity fields remain exact. Each source must exist in that saved revision; target IDs
|
|
417
|
+
must be new and distinct. References are retained, not remapped; child assemblies and
|
|
418
|
+
animation tracks are not copied. Decide placement explicitly and inspect native
|
|
419
|
+
contact and actual renders. Copying does not create a natural layout automatically.
|
|
420
|
+
`entityCopyOffset:[dx,dy,dz]` translates all selected copies by one common world-metre
|
|
421
|
+
displacement, preserving their relative placement. Omit every copy's transform.location
|
|
422
|
+
in this mode; per-entity rotation/scale overrides remain absolute. Select every required
|
|
423
|
+
part explicitly: unselected references/dependencies and animation are not moved/copied.
|
|
350
424
|
6. **`blender_preview_render` / `blender_preview_views`** — look at it. `preview_views`
|
|
351
425
|
renders several declared views in one Blender launch and returns contact sheet
|
|
352
426
|
paths and measurements, and attaches the verified saved contact sheet for image-capable models.
|
|
@@ -477,3 +551,22 @@ sourceMaterialSlots 的原始 index。materialSlots 只表示当前结果,可
|
|
|
477
551
|
`{partId,materialId,slotIndex?}`。省略槽位表示这个网格的全部槽,指定槽覆盖优先。
|
|
478
552
|
保持原几何、UV 和面的材质索引;部件父路径不隐式选择后代。空数组恢复原材质或现有
|
|
479
553
|
entity.materialId 的整体覆盖。局部图片材质同样要求被使用网格有对应 UV;不要猜选择器。
|
|
554
|
+
|
|
555
|
+
### Repeated details attached to static closed meshes
|
|
556
|
+
|
|
557
|
+
Use a final `surface_scatter` modifier on a generated prototype instead of listing
|
|
558
|
+
hundreds of repeated mesh payloads. Set `targetEntityIds` (1–8 closed generated
|
|
559
|
+
meshes), `count` (1–512), and `anchorVertexIndices` (1–8 distinct indices in the
|
|
560
|
+
actual mesh AFTER earlier modifiers). Local +Z is the outward growth direction.
|
|
561
|
+
Optional `seed` defaults to 0, `embedDepthMm` to 5 (positive, at most 100),
|
|
562
|
+
`scaleRange` to [1,1] (ordered, within 0.05–20), and `upwardBias` to 0 (0–1).
|
|
563
|
+
All selected attachment vertices must lie inside the actual support for each
|
|
564
|
+
instance; insufficient placements refuse the entire candidate. Start with a
|
|
565
|
+
small count to verify anchor indices, support thickness and prototype size.
|
|
566
|
+
The source, targets and any dependencies must remain static: no rigs, physics
|
|
567
|
+
or entity transform animation; nested scatter targets are unavailable.
|
|
568
|
+
The result is an editable native mesh with preserved UV/material assignments
|
|
569
|
+
and deterministic placement metadata. Placement recalculates on rebuild; it
|
|
570
|
+
does not certify whole-leaf clearance, self-intersection freedom or appearance.
|
|
571
|
+
Preserve old entities and manual edits, and inspect fixed front/side renders
|
|
572
|
+
before accepting density, repetition or silhouette.
|