# Grouper Tender: status Working name "Grouper". The user's blueprint: `reference/user_blueprint.jpg` ("DEEP SEA EXPLORER - SUBTUB CLASS", DS-ST-001), *"create me 3d model of this tender from this blueprint exactly"*; then the concept render `reference/user_concept.jpg` (*"Check this picture as a referance"*). Blueprint rules shape; concept rules the look. ## Done - 2026-10-22, Designer: zooms with rulers (`build/gr_zoom.py` -> `reference/z4_*.png`, concept zooms `z_concept_c_*.png`); silhouettes and drawn lines of every view (`build/gr_trace.py`, `gr_views.py` -> `reference/mask_*.png`, `lines_*.png`, `build/outline_tables.json`); every number in `build/gr_measure.py` (scale 0.0171 m/px, origin, clamp axis, hull loft tables, every part, cabin, moving parts, materials, the concept's strips, traces and lamps); check pictures `reference/trace_*.png` (`build/gr_tracecheck.py`); the design `design/DESIGN.md`. - 02:43-03:01 two copies of the Designer wrote here (the Administrator's mistake); reconciled at 03:05-03:20: one set of scripts (gr_masks.py removed, gr_views.py kept), masks and tables regenerated, `gr_measure.py` revised for the concept. ## Rebuild the readings `python build/gr_views.py && python build/gr_sil_tables.py && python build/gr_tracecheck.py` (Python 3.14, PIL, numpy). ## Next - Coder: build headless from `design/DESIGN.md` and `build/gr_measure.py` (the Mako's and Spearfish's pipeline copied into `build/` with a `gr_` prefix): hull loft, parts, collar as the Kazah clip, cabin, rig, checks (moon pool, carousel, clamp with the antenna raised and folded, motion, view), surfaces, UCX, FBX, side-by-side against the sheet and the concept. - Not measured yet: moon pool and carousel (the Coder's checks). ## Coder, 2026-10-22: geometry, rig, collision (done) `Tender_Grouper.blend`, built headless in 4 s: `blender -b --factory-startup --python build/run_build_headless.py` (rebuild on the saved file: `blender -b Tender_Grouper.blend --python build/run_build_headless.py`). 7.45 x 2.70 m, keel z -1.73 to the collar's lip 1.375 (antenna tip 1.83); origin 9 cm behind the clamp axis (0, -0.09). - Objects: `SM_Grouper_Hull` (skin, collar, trims, every static fitting; 83.7k tris, quads + 2 tris), `SM_Grouper_Glass` (2.1k), `SM_Grouper_Cabin` (11.9k), moving: `SM_Grouper_Hatch`, `SM_Grouper_Door_L` / `_R`, `SM_Grouper_Rotor`, `SM_Grouper_Antenna` (origins on their axes). 0 n-gons, 0 zero-area faces. 12 sockets (SOCKET_Clamp, _Seat_L/R_Eye, ...). - Rig on `Grouper_Root` (simple expressions, all valid): `hatch_open_deg` 0-100, `door_l_deg` / `door_r_deg` 0-95, `rotor_turns`, `antenna_fold_deg` 0-70 (fold it for docking), `lights` (for the surfaces pass). - Collision: 29 convex `UCX_SM_Grouper_Hull_NN` (2.8k tris, convex within 0.5 mm), "GROUPER | Collision (UCX)" hidden. - Materials (flat looks, names for the surfaces pass): M_Grouper_Gunmetal, _Band, _FrameDark, _Acrylic, _Strip (groove floors, the collar's ring, the duct's ring), _LampWhite, _ScannerLens, _DuctGlow, _Recess, _Steel, cabin _Cabin, _CabinFloor, _Seat, _Screen, _CabinDark (M_Grouper_Trace and _Marking exist, unused: traces and markings are texture work). Seam fields on the hull vertices: `seam_chine`, `seam_belly`. No UVs yet (surfaces pass). - Checks (`sh build/run_checks.sh`, results `build/checks/*.json`): motion 0 hits (hatch 4.7 mm, doors 3.1 mm, antenna 6 mm, rotor 4.9 mm least gaps); view: both eyes straight ahead through the front glass, 51 % of the cone through glass; cabin 0 crossings, 0 within 5 mm (least 11.8 mm); arm head (the Tiger's 20-pose dump): 0 hits, claws 5 mm from the lip, hatch 30 mm, antenna 80 mm raised / 319 mm folded; clash audit: 113 part-to-part contacts, intended joints; folds: 26 quads > 90 deg left (10 at each pod's nose tip, 14 inside the front glass trim's lower corners, 2 at the stern). - Previews: `previews/wb_*.png`, `previews/topo_*.png`, `previews/compare/sheet_side|top|front|back.png`. - Tools: `gr_preview.py`, `gr_compare_sheet.py`, `gr_section.py` + `gr_section_plot.py` (true sections), `gr_shot.py`, `gr_fold_audit.py`, `gr_clash_audit.py`, `gr_dump.py`. ## Next - Surfaces pass (UVs, baked masks, the strips' and traces' emissive masks, markings "Subtub 1", insignia, seal), the concept camera fit and `previews/compare/concept_pair.png`, ship checks (moon pool, carousel, 86-pose clamp in the arm and ship files, BOARD-to-POOL), FBX + layout JSON, studio renders. - Known: the junction ahead of the door where the band's front, the frame's corner, the pod's nose and the cheek meet (x 836-850) has wavy column flow and the 10 folded quads; the pods' tail cones bend in toward the hull (BACK draws them concentric) so they never hang free. ## Coder, 2026-10-22 (finishing step): fit checks against the ship and the arm (done) All at the current scale (S 0.0171, unchanged), results in `build/checks/`: - `gr_dump_tris.py` -> `grouper_tris.npz` / `grouper_points.npy` (docked: antenna folded 70 deg) and `_raised` (as drawn). - `gr_sweep_check.py` (ship file, read-only): moon pool at BOARD **1.455 m** to the deck well's lip (limit 1 m; Kazah 1.206); carousel table: side 0.834 m, roof 1.218 m (antenna raised: 0.783 m). `sweep_and_moonpool.json`. - `gr_carousel_bvh.py`: 360 placements, 0 crossings, no ship face within 0.6 m (both antenna poses). `carousel_bvh*.json`. - `gr_clamp_check.py`: arm file 86 poses 0 intersections, least gap 5 mm (claws to the collar's lip r 0.552); ship file 3 Tender places 0 intersections, 5 mm. Raised antenna: 73 mm from the ore hose (folded: 465 mm). `clamp_*.json`. - `gr_descent_check.py`: BOARD to POOL 9 steps, 0 crossings, least ship gap 1.337 m, arm 7.3 mm (claws). `descent.json`. ## Coder, 2026-10-22 (finishing step): surfaces, export, pictures, comparison sheets (done) - **Geometry added** (rebuild, `gr_doors.py`, `gr_clamp.py`): a door stop ring inside each doorway's sleeve 8 mm behind the leaf and a seat ring under the hatch's rim, so no line of sight runs through the 8 mm door gaps or the 6.7 mm hatch gap into the cabin (the side render saw through both doors; the cabin check now finds 0 cabin vertices visible from outside, was 8). Motion unchanged (0 hits), clash audit: intended joints only. Hull 86,148 tris. - **Surfaces** (`gr_decals_draw.py` then `gr_surfaces.py`, about 2.5 min): UVMap atlas (exterior 4096, cabin 2048) + UV_Tile; baked Masks / BevelNormal and the exterior **Emissive** map (strips, traces, duct glow, lamps, scanner cells); the concept's materials on the user's pack sets; mesh decals `SM_Grouper_Decals` ("Subtub 1", generic striped insignia, generic seal with a cyan circuit emblem, UI panels, the small stern insignia); 9 light drivers (`lights * k`, simple, valid). - **Export** (`gr_export.py`): `fbx/SM_Grouper_*.fbx` (10 files incl. `Grouper_Assembled.fbx`, hull with 29 UCX), checked by re-import (movers at their pivots); `Grouper_layout.json`. - **Pictures** (`gr_render.py -- v01 128 studio water concept lookalike`, `gr_preview.py -- wire tag=v01`, `gr_pairs.py`): `previews/v01_studio_*` (8), `v01_water_nose|stern`, `v01_topo_*` (8), `compare/concept_pair.png` (camera fitted by `gr_concept_fit.py`, 35.8 mm, rms 9.0 px main landmarks), `compare/lookalike.png`, `compare/cmp_.png` (IoU SIDE 0.938, TOP 0.948, FRONT 0.959, BACK 0.951, BOTTOM 0.864), `compare/side_inkover.png`. - `README.md`, `build/run_all.sh`, `build/run_checks.sh` (full chain). ## Next (open) - Topology: 26 folded quads (pod nose tips, front glass trim corners, stern), the wavy junction at SIDE x 836-850; the pods' tail cones bend in (BACK draws them concentric). No LODs; hull 86k tris; hull atlas fill 38 %. - The user's word on the look and the additions; Unreal import. ## Critique, round 1 (2026-10-22): verdict FIX `critique/round1.md` (pictures and scripts in `critique/round1/`; nothing in the model, scripts or .blend changed). Outline 88 % (IoU SIDE 0.935, 0.976 without the drum-mount box; TOP 0.945, FRONT 0.959, BACK 0.951), look 62 %. Seven MAJOR items: 1 the drum's mount is a wire cage, not the concept's solid bracket + bent tube (SIDE loses 0.75 m2 at x 845-925); 2 topology: dense 161 x 144 grid, 86k tris, wavy cheek flow, 26 folded quads, no LODs; 3 BACK: pods' tail cones are lumps, not ringed cones; 4 circuit traces are broken pixel dashes (draw them as vector lines); 5 light strips 3-5x too wide (concept 2-3 px vs model 8-14 px from the same camera); 6 windows dark, the concept's are full of lit cyan screens; 7 SECTION A-A seats are boxes. Twelve MINOR items (gloss, blotchy frames, porthole see-through, lamp beside the drum, drum ribs, stepped duct, collar pockets' finish, BACK plate, door latches/hinges, hidden faces, texel density, scale note to the user).