fix cli redundant images

finger-xynova first design completed
This commit is contained in:
ykcheungab
2026-09-28 16:18:17 +08:00
parent 88922f21ef
commit 267334d543
40 changed files with 618899 additions and 263563 deletions
+53
View File
@@ -52,6 +52,59 @@ texture_patch:
thickness_px: 3
color: [1.0, 0.0, 0.0, 1.0] # red reference cross
# Multi-view production textures (`orisys-design texture-views`).
#
# `cam_uv_1` / `cam_uv_2` already existed in this blend; `uv_1` / `uv_2` and the seam were
# added to `sensing_surface`. Verified: the marked seam is a valid cut — 45 edges splitting
# the surface into 2 components of 308.314 / 308.311 mm^2 (50.0 / 50.0) — and at the default
# 62 degree limit the partition leaves 0.100 mm^2 of hole (fraction 0.0002), well inside
# max_hole_fraction. Coverage: 4960/5007 triangles owned, 20454 + 21483 fragments emitted.
#
# NOTE: this revision contains SIX sensing-surface variants (`sensing_surface`, `_0`, `_0918`,
# `_0928`, `_45`, `_918_s`). `_0928` is the only one carrying the seam and `uv_1`/`uv_2`, so
# `sensing_surface` is a copy of it. Two consequences to be aware of:
# 1. `_0928` is a COINCIDENT duplicate of `sensing_surface` at identical coordinates. The
# `EXCLUDE` collection has `exclude=False`, so it is not actually excluded from the view
# layer, and the raycast hits the duplicate instead of the target. That rejects every
# fragment and the region cameras return 0 — `texture-views` now fails loudly and names
# the intercepting object rather than writing blank textures. `_0928` is hidden.
# 2. The probe/render baseline (`build/probe/finger-xynova/r01/probe_frames.npz`) was built
# from the 2508-vertex `sensing_surface_918_s`, while `sensing_surface` has 2584 vertices.
# `tests/test_render.py::test_end_to_end_render_manifest` therefore fails on the vertex
# count. That is a fixture/stale-baseline mismatch, not a texture bug: either regenerate
# the probe frames for the current surface, or author the seam and the extra UV layouts
# on whichever surface is canonical. `expected.*` below would have caught this and is
# still read by nothing.
texture_patch_views:
enabled: true
pattern_camera: cam_sensor # the pattern every layout carries, same source as `compute`
pairs:
- id: uv_1
camera: cam_uv_1 # REGION camera
uv_map: uv_1
- id: uv_2
camera: cam_uv_2
uv_map: uv_2
merge:
mode: authored # honour the 45-edge seam marked on the mesh
incidence_limit_deg: 62.0 # measured on this part: hole fraction 0.0002 at 62 deg
min_footprint_mm2: 2.0e-3
min_triangle_coverage: 0.60
max_hole_fraction: 0.02
component_policy: best_coverage
seam:
boundary: use_seam
pins: []
# Empty band along the seam, to absorb two-pass registration error. Default total width is
# 2 x alignment_tolerance_mm = 0.2 mm, half per file; `total_mm` overrides the derivation.
gap:
enabled: false # false = hard butt at the seam, no band at all
apply: post_process # post_process = straight edge | geometry_trim = sawtooth
treatment: no_print # the band carries nothing
alignment_tolerance_mm: 0.1 # per-pass placement accuracy, mm
print:
base_fill: owned # white ground, clipped by the seam
# Post-generation printability inspection (`orisys-design inspect`). Advisory
# only: it reports a verdict but never blocks generation or changes exit codes.
# Millimetres are measured on the vector page declared above.