105 lines
4.4 KiB
YAML
105 lines
4.4 KiB
YAML
sensor: finger
|
|
revision: r01
|
|
status: experimental
|
|
|
|
# Authoring unit in Blender (mm). Export converts using meters_per_source_unit.
|
|
authoring_unit: mm
|
|
meters_per_source_unit: 0.001
|
|
|
|
source_blend: source/geometry.blend
|
|
|
|
# Expected sensing surface topology for r01 (from shipped 30fps-0703 runtime).
|
|
# First exports from geometry.blend may differ until topology is locked.
|
|
expected:
|
|
sensing_vertices: 1032
|
|
sensing_triangles: 1974
|
|
|
|
frames:
|
|
sensor: origin_sensor
|
|
|
|
objects:
|
|
sensing_surface: sensing_surface
|
|
cam_sensor: cam_sensor
|
|
origin_sensor: origin_sensor
|
|
|
|
# Headless colored-patch texture generation (`orisys-design texture`).
|
|
# UV unwrapping is still done in the Blender GUI: the headless run consumes the
|
|
# UV maps already stored in source_blend and never creates or unwraps one.
|
|
# One PNG/SVG/PDF set is written per UV map below. All maps and formats share
|
|
# the settings and patch colours, so they differ only by UV layout.
|
|
# These are the revision defaults; CLI flags override every value.
|
|
texture_patch:
|
|
mesh: sensing_surface
|
|
camera: cam_sensor
|
|
uv_outputs:
|
|
produce: patch_texture_produce.png # hardware production layout
|
|
compute: patch_texture_compute.png # compute/runtime layout
|
|
width: 3280 # 1640*2
|
|
height: 3200 # 1600*2
|
|
nx: 80
|
|
ny: 45
|
|
color_r: 0.05
|
|
edge_sample_grid: 5
|
|
seed: 7 # fixed so PNG/SVG/PDF share one reproducible colour set
|
|
vector:
|
|
width_mm: 16.4 # editable SVG/PDF production page width
|
|
height_mm: 16.0 # editable SVG/PDF production page height
|
|
cross:
|
|
enabled: true
|
|
length_px: 40
|
|
thickness_px: 3
|
|
color: [1.0, 0.0, 0.0, 1.0] # red reference cross
|
|
|
|
# Multi-view production textures (`orisys-design texture-views`). STEP 1 ONLY: each pair
|
|
# writes its own independent PNG/SVG/PDF. There is no ownership partition, no seam handling
|
|
# and no merge, so the two layouts may cover the same surface region and that overlap is
|
|
# deliberately left unresolved.
|
|
#
|
|
# The PATTERN is grounded on the sensing camera, not on the production views. `uv_1` and
|
|
# `uv_2` are two different *parameterisations* of the one surface pattern that
|
|
# `texture_compute` carries, so the printed marker stays a single pattern across the whole
|
|
# surface. `cam_uv_1` / `cam_uv_2` are the AUTHORING cameras used in Blender (Project from
|
|
# View (Bounds)) to create those layouts — they are not pattern sources. Passing cam_sensor
|
|
# as the projection camera with uv_1 / uv_2 as the interpolated layers is exactly what
|
|
# patch_projection.build_patch_geometry already supports.
|
|
#
|
|
# Rendering settings (page size, grid, palette, seed) come from `texture_patch` above,
|
|
# because they are decisions about the printed page rather than about a particular layout.
|
|
# `produce`/`compute` and `orisys-design texture` are untouched.
|
|
#
|
|
# Scope note: `uv_1`/`uv_2` are related by roughly a 90 degree rotation with a flip — no
|
|
# rigid or affine transform maps one onto the other, because each is a different projection
|
|
# of a curved surface. Resolving the overlap therefore has to happen in surface space and is
|
|
# a later step; see src/orisys_sensor_design/texture_views.py.
|
|
texture_patch_views:
|
|
enabled: true
|
|
pattern_camera: cam_sensor # same pattern source as `compute`
|
|
pairs:
|
|
- id: uv_1 # layout authored from cam_uv_1
|
|
uv_map: uv_1
|
|
- id: uv_2 # layout authored from cam_uv_2
|
|
uv_map: uv_2
|
|
|
|
# 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.
|
|
printability:
|
|
printer_dpi: 600 # target UV printer resolution
|
|
min_dots: 2 # printer dots required across the smallest feature
|
|
min_feature_mm: 0.10 # smallest acceptable feature width
|
|
min_edge_mm: 0.05 # shortest acceptable polygon edge
|
|
max_sliver_ratio: 4.0 # longest edge / minimum width
|
|
min_patch_area_mm2: 1.0e-4 # area above which a polygon is a material feature
|
|
|
|
collections:
|
|
frames: FRAMES
|
|
export_compute: EXPORT_COMPUTE
|
|
assembly: ASSEMBLY
|
|
design_sim: DESIGN_SIM
|
|
exclude: EXCLUDE
|
|
|
|
notes: |
|
|
Canonical source is geometry.blend with named collections and objects.
|
|
Compute export uses sensing_surface + cam_sensor relative to origin_sensor.
|
|
Studio observation cameras are derived from mesh bounds; no cam_viz required.
|