# Grouper: a Tender ("sub tub") after the user's blueprint and concept render Built on 2026-10-22 after the user's blueprint `reference/user_blueprint.jpg` ("DEEP SEA EXPLORER - SUBTUB CLASS, ORTHOGRAPHIC BLUEPRINT DS-ST-001": TOP, SIDE, BOTTOM, FRONT ELEVATION, BACK ELEVATION, two SECTION A-A cockpit views), with the user's words *"create me 3d model of this tender from this blueprint exactly"*, and the user's concept render of the same sub underwater, `reference/user_concept.jpg` (*"Check this picture as a referance"*). "Grouper" is a working name; the user has not named it. **The blueprint rules the shape** (SIDE first; TOP gives widths, FRONT/BACK what SIDE cannot show). **The concept rules the look**: materials, colours, lights, light strips, the markings' style, and how parts look and attach where the sheet is unclear. The Designer's readings and every number: `design/DESIGN.md`, `build/gr_measure.py`. Built headless (Blender 5.2.2). **Critique round 1 applied** (`critique/round1.md`; the state before it is in `versions/v01_before_critique_r1/`): the hull re-lofted at 72 columns (was a dense 144 x 161 grid), the pods straight nacelles with ringed tail cones, a solid bracket under the drum, bucket seats, screen banks, thin light strips, vector circuit traces, satin gunmetal, LODs. What changed and why: "Round 1" below. **Critique round 2 applied** (`critique/round2.md`; the state before it is in `versions/v02_before_critique_r2/`): the claw pockets closed (a floor plate and one skirt round the collar, the skin's opening a clean ring), the drum on a solid block with round bent tubes, the drum a straight cylinder with thin raised rings and a 10 cm lamp beside it, screens where the concept's camera looks through both windows (and the panes as slabs), anti-aliased light lines, the decals at separate lifts, the see-through gaps closed. What changed: "Round 2" below. ## Files | | | |---|---| | `Tender_Grouper.blend` | the model, rigged and textured | | `fbx/SM_Grouper_*.fbx` | one FBX per part; moving parts at the world origin, unturned (vertices relative to their pivot); the hull carries its 29 `UCX_` hulls | | `fbx/SM_Grouper_*_LOD1.fbx`, `_LOD2.fbx` | LODs of the hull, glass, doors, hatch and rotor (about 50 % and 20 %), same pivots (Unreal: LOD Settings > Import LOD) | | `fbx/Grouper_Assembled.fbx` | every mesh in place, at rest | | `Grouper_layout.json` | pivots, motion axes and ranges, sockets, the clamp interface, the lights rule, every check's result, textures, decals, LODs, UV densities, the concept camera (Unreal cm: `ue = (-y, -x, z) * 100`) | | `textures/` | `T_Grouper_Exterior_Masks` / `_BevelNormal` / `_Emissive` (4096, the hull), `T_Grouper_Parts_Masks` / `_BevelNormal` / `_Emissive` (2048: doors, hatch, glass, rotor, antenna), `T_Grouper_Cabin_Masks` / `_BevelNormal` (2048), `T_Grouper_Decals_BaseColor` (RGBA) / `_Emissive` (2048 x 2048), `T_Grouper_Screens`; `_src/` the trace mask and a decal preview | | `previews/r2_studio_*.png` | Cycles, bright studio light, Standard view transform: side, top, front, back, three-quarter fore and aft, the cabin through the open hatch and the open door | | `previews/r2_water_nose.png`, `r2_water_stern.png` | underwater, lights on | | `previews/r2_topo_*.png` | wireframes over the shading (Workbench) | | `previews/r2_cu_*.png` | round 2 close-ups (`build/gr_closeups.py`): the windows from the concept's camera at 3x, the seats from the nose, the drum mount (side, low front, three-quarter), the four claw pockets (`r2_cu_pockets_4.png`) and the collar from aft, the pod's junction and vents, the drum, the flank's flag and seal | | `previews/lods_hull.png` | the hull's LOD0, LOD1, LOD2 from the exported FBX files | | `previews/compare/concept_pair.png` | **the concept's crop beside the model from the concept's fitted camera** (dark water, lights on) | | `previews/compare/lookalike.png` | each sheet view beside the model rendered orthographically in the same framing; SECTION A-A beside the cut at the A plane | | `previews/compare/cmp_.png` | the model's outline (red) and the Designer's silhouette (yellow) over the sheet; IoU in the title | | `previews/compare/side_inkover.png` | the sheet's drawn lines (magenta) over the model's SIDE render | | `previews/compare/iou_diff_.png` | overlap with the Designer's masks at 3x (grey both, red sheet only, green model only; `build/gr_iou.py`) | | `previews/r1_*`, `v01_*`, `wb_*`, `topo_*`, `wip_*` | earlier rounds' and working pictures (stale) | | `reference/` | the sheet, the concept, zooms, the Designer's masks, line images and trace pictures | | `design/DESIGN.md` | the Designer's design (parts, how they attach, the disagreements table) | | `critique/round1.md`, `round2.md` | the Critique's rounds 1 and 2 | | `build/` | the scripts (below); `checks/` every check's result | ## What it is, part by part (SIDE first) - **Hull**: one quad grid, 72 columns round and 103 stations (round 1; it was 144 x 161), lofted from SIDE's top and keel lines and TOP's widths with superellipse sections; the stern eases to a circle round the duct, the nose's underside is flat. The columns are pinned to the drawn lines (grooves, the window frame's edge, the door, the windows, the collar's square); the free columns between the pins are smoothed along the hull. An hourglass **waist band** along each flank, recessed 30 mm, between two **grooves** (the sheet's double rim lines, walls 8 mm chamfers) whose floors carry a thin cyan **light line**; the upper groove runs on over the side window's frame and across the nose top, the lower one curves down over the pod to the belly. The raised window frame band ends in 30 mm chamfers. A chine on the upper aft body, a belly seam (baked). - **Stern duct** (SIDE x 516-543): a **stepped** shroud (round 1): its forward two thirds 14 mm under the drawn r 0.697, a 45 deg step at two thirds of its length, the lip ring at the drawn radius; the slot at x 530 on the forward part, following the shroud; its inner wall glowing cyan (fading to the lip), six stator spokes (BACK), a five-bladed rotor behind them (mine; moving). A slim skeg blade under the keel (its root no longer reads as a plate from behind), a dorsal ridge, stubby stern fins on mount plates, the two small slanted bilge plates BACK draws. - **Docking collar** (the sheet's top ring, SIDE x 753.4): it *is* the Kazah collar. The clamp axis at (0, -0.09); in the four claw pockets (45/135/225/315 deg, full depth +-13.5 deg) the wall is the Kazah profile (wall r 0.535, hook lip r 0.552, lip top z 1.375); an 8 deg chamfer each side down into each pocket (1 deg steps), the pockets dark (FrameDark), the cyan ring ending at each; between them the drawn wall and rim (rim r 0.553). (Round 2) Every section ends in one **skirt** at r 0.695 whose lower edge lies on the actual skin with a small fillet (+5.5 mm, +1.2 mm, 3 mm under it); in each pocket a **floor plate** runs from the Kazah wall's foot straight out to the skirt (the claws stay 28 mm or more above it); the skin under the collar is the grid's clean round hole (r 0.512), so the collar closes over it. The **hatch** (r 0.500, domed) inside it, a seat ring under its rim. - **Deck**: two lamp heads on short pylons, a boxy sensor on a stalk between them, the antenna aft of the collar (raked 23 deg, folds for docking). - **Nose**: the side windows and the big front window in thick dark frames (swept trims) with the heavy mullion, clear thick acrylic (each pane a closed 4 mm slab), the chin step; under it the **scanner drum** (round 2): a straight cylinder with 0.06 m rounded edges and SIDE's four lines as thin raised rings (6 mm proud, 8 mm wide), its face a faceted lens glowing blue in a thick rim; on the **mount** (round 2): a **solid block** 0.34 m wide on the centre line, its side outline the sheet's bracket plate (front on the flange's back face x 916.3 from y 401 to 450, bottom to x 906, a short lower-aft edge to (889, 440.5)) joined to the chin (top inside the chin from x 876 to the nose's front), its aft face sloped up into the chin; the flange bolted to its front face (bolts on its sides and round the flange's back); from each side of the block two **round stubs** out to the side planes (+-0.577 m, FRONT's frame) at (905, 407) and at the X-marked **clevis** (912, 445), each ending in a hub with a pin; between the two hubs the **bent round tube** (0.10 m) down the aft arm, round the bend at y 462-469 and up into the clevis; a cross tube under the drum joining the bends; the **sled**: a bracket plate on the cheek (x 848-866 up into the hull) and two rails from its front edge into the bend. The **lamp beside the drum** (round 2): a short housing on each side of the drum's lower front edge (axis r 0.53, 25 deg below the side) with a 10 cm lens 4 cm proud of the face. Cheek fins. - **Pods** (round 1): straight **nacelles** on their axis (+-1.017 m, z -1.382), r 0.333 at their fullest, the drawn taper aft. The middle is part of the hull grid (joined by two rolling-ball fillets); the **nose** (SIDE's rounded bottom outline, a dark bezel and a warm-white lamp) and the **tail cone** are revolves of their own, each starting with a dark lip ring. The tail cone steps in at BACK's rings (r 15, 11, 8 px) and ends in a cap r 5 px: from behind, four concentric circles on the pod's axis as BACK draws them; aft of x 747 it hangs clear of the hull; both pieces are closed solids (capped inside the lobe). TOP's two vents (round 2: **recessed slots** with rounded ends, a low lip round a dark floor, x 769.7-797 and 808-830.2, each ending on the lip ring in its way) and the raised capsule on each pod's upper outer side. - **Side doors** (both flanks, in the band): rounded rectangles 0.99 x 1.20 m with a deep **smoked** porthole and two **oval** latches, hinged at the aft edge on **flush** knuckles (r 11 mm, axis 4 mm outside the leaf, inside the band's recess); behind each leaf a door stop ring. - **Flank details**: a fill port, three slots and dots aft of the door, a flat trace panel in front of it (the hull's finish). - **Cabin** (SECTION A-A top right): two **bucket seats** side by side at X +-0.45 (pan and back lofted with raised side bolsters, a winged headrest on two posts, armrests, the outboard one with a control pad and a side stick), the **console column** between them with the **two-pad control box** (a pad angled to each seat), **screen banks** along the bottom of the front glass (three per pilot and one in the middle) and of each side window, **overhead screens** twice the area they had (status displays on their forward faces too), the centre overhead screen on the column, wall panels, **cyan ceiling glow strips**, a ladder under the hatch, the deck at z -1.198 inside a lining 113 mm under the skin. (Round 2, where the concept's camera looks in) a bank of **four screens on the rear bulkhead**, **wall screen panels** on both sides between the side window and the door and aft of the door, and a forward-tilted **top row of three status screens** on the dashboard's front edge (under z -0.07: the pilots' view is unchanged). The windows' inner flanges run 0.16 m out under the lining, following it. No figures. ## Markings (the concept's style, the sheet's places and sizes) Mesh decals, `SM_Grouper_Decals`: copies of the hull's outer skin faces under each marking, lifted 1.5 mm (round 2: the seal, which shares four hull faces with the insignia, at 3.0 mm), each quad split into two triangles on its ridge diagonal (so it stays over the hull whichever way Unreal splits the hull's quad), with the hull's shading normals and UV0 into the decal sheet (Unreal: Masked, opacity = alpha; cast no shadow; no collision). On both flanks, each reading from its own side, projected the way SIDE sees them (along X): **"Subtub 1"** (title case italic sans, light grey paint, the sheet's box x 725-790), a **generic striped insignia** (no national flag), a **generic round seal** with a cyan circuit emblem (no text, no official mark), a small **UI panel** forward of each stern fin, and the small insignia on the upper stern where BACK points. **Circuit traces** (round 1): drawn as vector polylines (`build/gr_decals_draw.py` TRACES: 10 mm lines, right-angle and 45 deg bends, 20 mm end dots) in the concept's zones: in front of the door (on the trace panel and the band under it, down toward the pod), round the vents and the panel aft of the door, down the cheek under the side window's aft corner; baked into the exterior emissive map by side projection. The first delivery projected the sheet's own strokes. (Round 2) The two empty outlined rectangles on the trace panel are gone; two short traces run there. ## Size, scale and axes - **7.45 m long** (duct lip to scanner face), **2.72 m wide** over the pods (hull 2.44 m), **3.11 m** from the keel (z -1.73) to the collar's lip (z 1.375); 3.56 m to the antenna tip raised, 3.15 m with it folded. - Scale 0.0171 m per sheet pixel: the sheet's top ring is the Kazah collar at this scale. **The sheet's largest dimension label says 15,500 mm**; its labels disagree with each other (10.4 to 36.5 mm/px) and with the drawing's own proportions (length to width 3.0 as drawn, 5.5 as labelled); the concept's pilots agree with 17 mm/px. The moon pool passes at this scale. - As the Kazah: 1 unit = 1 m, nose to -Y, port +X, Z up; origin on the centre line 9 cm behind the clamp axis. - Unreal: FBX forward -Y, up Z, import with Force Front X Axis, Convert Scene, scale 1; `ue_cm = (-y, -x, z) * 100` (nose +X). ## How it follows the sheet and the concept - Every number read from the sheet in pixels (`build/gr_measure.py`, the Designer's zooms, line runs, circle fits, masks). - `previews/compare/cmp_.png`: the model's silhouette against the Designer's sheet silhouettes, overlap (IoU); the numbers are in `build/checks/compare.json` and in "Round 1" below. `side_inkover.png`: the sheet's own lines over the side render. - `concept_pair.png`: the concept's camera fitted to 13 of the sub's landmarks (`build/gr_concept_fit.py`); the lamp beside the drum is now a landmark of its own (it was mistaken for the far pod's lamp). ## Where the views disagree, and what was chosen The Designer's table (`design/DESIGN.md` section 4) holds, among others: SIDE's collar place over TOP's; six stator spokes as BACK draws them; the seats at +-0.45 m so each pilot sees straight out of the front window; the concept's dark gunmetal over "titanium-ceramic"; the waist rims as grooves with light lines; the deck square as a sensor box; lamps in the pods' fronts; the drum face a glowing faceted lens; the collar 3 cm taller than drawn so the claws clear the hull by 5.3 cm. Also: BOTTOM's two "SUBTUB 1" rows are the flank lettering of both sides; the flag and the seal are generic. Round 1 added: the drum mount's two arms follow SIDE's 8x zoom (21 and 35 deg, not quite parallel, as drawn); TOP's pod vents start forward of the tail cone's lip ring (TOP draws the long one from x 737, where the drawn taper is only 0.11 m) and the short one ends at the nose's lip ring. ## Added for the game (not on the sheet) The rotor, the hatch's and the doors' hinges, the antenna's fold, the cabin's interior detail (the screens' forward-facing status displays, the bulkhead and wall screens, the dashboard's top row, the glow strips), the door stops and the hatch seat (no line of sight through the gaps), the lamps beside the drum (the concept's), the mount's stubs and hubs (the sheet's plate and tubes joined mechanically), 14 sockets. ## Checks (scripts in `build/`, results in `build/checks/`; `sh build/run_checks.sh`) | check | result | limit or comparison | |---|---|---| | moon pool at BOARD (launch arm, the interior fork's deck well) | **1.457 m** from the well's lip | the user's 1 m (Kazah 1.206 m) | | carousel sweep, three stowed Tenders, 2 deg steps (margins table) | side **0.836 m**, roof 1.204 m (antenna raised: roof 0.786 m) | no contact (Kazah: side 0.366, roof 1.114) | | carousel sweep with triangles, 360 placements, 63 ship meshes | 0 crossings; no ship face within 0.6 m (both antenna poses) | | | docking clamp, `DockArm_Carousel.blend`, 86 poses (lowered 0..5.3 m, claws shut, open and part-way, reach_in to POOL, both headings) | **0 intersections**, least 5 mm (claws to the collar's lip, gaps both ways); antenna raised: hose 73 mm | | | docking clamp, ship file, the three `_Tender` places | 0 intersections, least 5 mm | | | BOARD to POOL descent, 9 steps | 0 crossings, least 1.248 m to the ship; arm 7.1 mm (claws) | | | hatch 0..100 deg, 2.5 deg steps | 0 intersections, least 4.1 mm | | | doors 0..95 deg, 2.5 deg steps | 0 intersections, least 3.0 / 3.0 mm | | | antenna 0..70 deg | 0 intersections, least 6 mm | | | rotor through one blade pitch | 0 intersections, least 4.9 mm | | | cabin inside the skin | 0 crossings (round 2: the windows' long flanges run 16 mm under the lining; 11 hull vertices of them within 5 mm of it, least 2.1 mm); **0 cabin vertices seen from outside** | | | seats' view | both eyes straight ahead through the front glass; 52.3 % of the view cone (yaw +-40, pitch -25..+15) through glass | half | | drivers | every driver a simple expression, valid (5 movers, light drivers on the glowing materials) | the user's Blender runs no Python | | clash audit | 173 pieces in the hull mesh; 163 part-to-part contacts (147 in round 1), all intended seatings (lens ribs, hinge parts, vent rims, the pods' pieces on the lobe, the hatch seat in the bore; new: the mount's block on the flange, its bolts, stubs, hubs, the tube's ends in the hubs, the rails in the plate and the bend, the lamp housings on the drum's rim) | | | fold and twist audit (`checks/folds.json`) | 0 folded; **0 quads twisted more than 45 deg** (round 2: the 105 that were, split into their two triangles on the diagonal that bends less: 210 triangles, the critique's fallback); over 25 deg 181, over 20 deg 286 of 25,979 quads; the skin grid alone 96 / 162 of 8,664 | the critique: none over 45 | | see-through test (`gr_holes.py`, the Critique's `cr2_holes.py`: 699k rays from 400 eyes, glass skipped) | **315** rays see the back of a face (0.045 %; round 1: 1,874): drum 2 (was 1,020), windows 88 (was 345), pods and belly 78, elsewhere 147 (small: frame-band corners at the chin, the pod's fillet junction, the duct ring's groove ends, 10 at the decals' edges) | | | claw pockets (`gr_collar_rays.py`, the Critique's: about 3,500 rays per pocket from 24 eyes) | back faces seen: 45 deg **1**, 135 deg **3**, 225 deg 0, 315 deg 1 (round 1: 336 / 337 / 4 / 8; the remaining ones graze the lip's edge) | target 0 | | decals (`gr_decal_dupes/warp/gaps.py`, the Critique's) | 0 coincident faces (was 8); 0 quads (498 triangles, ridge-split); 0 missing over any marking | | | silhouette IoU (`gr_iou.py`, the Critique's `cr_iou.py`, masks by the Designer) | SIDE **0.957** (round 1: 0.939), TOP 0.948, FRONT 0.954, BACK 0.953, BOTTOM 0.867 | the critique: SIDE 0.95 | ## Moving parts (own objects, origin on the axis, rotation 0, scale 1; drivers on `Grouper_Root`) | object | moves | handle | |---|---|---| | `SM_Grouper_Hatch` | about Blender X (Unreal Y) at its forward edge (0, -0.59, 1.392), 0..100 deg, lifting its aft edge | `hatch_open_deg` | | `SM_Grouper_Door_L` / `_R` | about a vertical axis at the aft edge 4 mm outside the leaf (+-1.191, 0.157, -0.151), 0..95 deg, outward | `door_l_deg`, `door_r_deg` | | `SM_Grouper_Rotor` | spins about Blender Y (Unreal X) at (0, 3.696, -0.076) | `rotor_turns` | | `SM_Grouper_Antenna` | folds aft about Blender X at its foot (0, 0.712, 1.260), 0 (as drawn) .. 70 deg; **fold it (70) for docking** | `antenna_fold_deg` | | emission | every glowing material's strength = map x strength x lights | `lights` (0 off .. 1 on) | Drivers are simple expressions (`p*0.0174533`, `lights * 3.00`, ...). The exact pivots are in `Grouper_layout.json`. ## Meshes and materials - Triangles (LOD0, round 2): `SM_Grouper_Hull` 52,168 (25,979 quads and 210 triangles: the 105 quads that twisted more than 45 deg, split; the skin grid with the duct's rings and the chin's cap, the collar (128 azimuths), trims, sleeves and flanges, stops, every static fitting; hidden fittings pruned; the skin under the collar now kept), `SM_Grouper_Glass` 1,944 (slabs), `SM_Grouper_Cabin` 10,914, `SM_Grouper_Decals` 498, `SM_Grouper_Hatch` 1,900, `SM_Grouper_Door_L` / `_R` 1,864 each, `SM_Grouper_Rotor` 940, `SM_Grouper_Antenna` 172; the exterior about 59k. LOD1 / LOD2: hull 26,083 / 10,430, glass 972 / 388, doors 932 / 372, hatch 950 / 380, rotor 470 / 188 (`previews/lods_hull.png`). No n-gons, no booleans, no sliver faces (the nose's flat front and the cabin's end walls are Coons grids). Custom normals on the skin from the analytic surface. 29 convex `UCX_SM_Grouper_Hull_NN` (2,704 triangles), collection hidden. - UV0 `UVMap`: the hull alone on the 4096 Exterior atlas, **304 px/m** (was 239; its skin one arc-length island the build writes, `UV_Grid`, kept in the .blend for reruns of the surfaces pass and left out of the FBX); doors 510, hatch 586, glass 180, rotor 426, antenna 767 px/m on the 2048 Parts atlas; the cabin 232 px/m on its 2048 atlas; the screens map onto `T_Grouper_Screens`, the decals onto the decal sheet. UV1 `UV_Tile`: metres, for the tiling sets. - Baked (Cycles, HIP GPU): Masks (R occlusion, G edges, B crevices and the seam lines), BevelNormal (edges rounded 12 mm, seams as grooves), and Emissive for the Exterior and Parts atlases: the **light lines** (a line up to 28 mm along the middle of each groove floor, the collar's ring and the duct's ring, from the build's `strip_v` / `strip_w` vertex fields; round 2: always 3 mm short of its face's edges, with a 5 mm soft edge, the emissive map baked at twice the atlas size and box-filtered down: no texel staircase), the circuit traces, the duct's inner glow, the lamps and the scanner's crystal cells. - Materials (the concept's look; the user's Season 2 pack sets read in place from `models/vessel-interior/textures`, nothing downloaded): `M_Grouper_Gunmetal` (dark **satin** gunmetal over ScratchedMetal: clear coat 0.06 at roughness 0.32, base roughness 0.38-0.46, tint about 0.08; worn bare edges, dark crevices), `_Band` (darker, BrushedMetal), `_FrameDark` (near-black titanium, StainedSteel tiled 0.30 m with its contrast flattened), `_Steel`, `_Recess`, `_Acrylic` (clear acrylic, IOR 1.49, roughness 0.02 with no smudge map since round 2; each pane a 4 mm slab), `_AcrylicDark` (the porthole, smoked; a slab too), `_Strip` (dark satin floor), `_DuctGlow`, `_LampWhite`, `_ScannerLens`, `_Marking` (decals), cabin `_Cabin`, `_CabinFloor`, `_CabinDark`, `_Seat` (CC0 leather, dark), `_Screen` (cyan instruments on a lit cyan ground, drawn as a texture whose brightest ink is 0.52, mapped upright on both broad faces of each screen), `_CabinGlow` (cyan); `M_Grouper_Part*` and `M_Grouper_Cabin*` copies where a material is used on two atlases. Emission strengths x lights: traces 2.5, strips 3, duct 1.5, lamps 8, lens 3, screens 1.8 (peak 0.94: nothing clips in a Standard render), cabin glow 9, decals 2.5. ## Build Headless, one Blender at a time: `sh build/run_all.sh r2 128` (7.5 min: a new file every time, every check, the drawn decal sheet and trace mask, the surfaces pass, the see-through test again with the decals, landmarks and the concept camera, Cycles pictures, wireframes, comparison sheets, IoU, close-ups, and the export with LODs last so `Grouper_layout.json` quotes every check). Steps: `build/run_build_headless.py` (`build_grouper.py`: `gr_shape`, `gr_hull`, `gr_parts`, `gr_clamp`, `gr_fittings`, `gr_doors`, `gr_cabin`, `gr_finish` with `gr_collision`), `run_checks.sh`, `gr_decals_draw.py` (Python + Pillow), `gr_surfaces.py`, `gr_landmarks.py` + `gr_concept_fit.py`, `gr_export.py`, `gr_render.py -- TAG SAMPLES studio water concept lookalike`, `gr_preview.py -- wire tag=TAG`, `gr_pairs.py`, `gr_iou.py`, `gr_closeups.py -- TAG SAMPLES SHOT...`, `gr_lods_preview.py`; round 2's copies of the Critique's tests: `gr_holes.py`, `gr_collar_rays.py`, `gr_decal_dupes.py`, `gr_decal_warp.py`, `gr_decal_gaps.py` (results in `build/checks/`). While working on the geometry: `sh build/gr_quick.sh TAG` (build, fold audit, wireframes). The ship and docking-arm files are opened read-only by the checks and never saved. ## Round 1 (2026-10-22): what changed | item | what was done | |---|---| | M1 drum mount | a solid bracket block (0.30 m wide, SIDE x 876-923, y 397-416.5, aft face sloped, four bolts a side) instead of the thin upper arms; the bent tubes re-read from an 8x zoom of SIDE; sled rails on a cheek plate; hangers | | M2 topology | 72 columns x 103 stations (was 144 x 161); free columns smoothed along the hull, station pairs kept consistent, the relaxing pins faded at the nose's front; groove walls 8 mm, frame band chamfers 30 mm; the lower groove rides the nacelle's own circle; the chin's front and the cabin's end walls Coons grids (no slivers); the collar 6 deg steps with 8 deg pocket chamfers; folds 0 (was 26); hull 47.3k triangles, quads only (was 86.1k); LOD1 and LOD2 | | M3 pods | straight nacelles; nose and ringed tail cone as revolves; the grid's lobe sinks only inside them | | M4 traces | vector polylines in the concept's zones (no sheet pixels); the trace panel in the hull's finish | | M5 strips | only a 28 mm line glows in each groove floor and on the duct's and collar's rings; strength 3 (was 4 on the whole floor) | | M6 windows | screen banks at the bottom of the front and side glass, overhead screens twice the area with status displays on their fronts, a console front screen, cyan UI (no amber) on a lit ground, ceiling glow strips; screens strength 5 | | M7 seats | bucket seats with bolsters, winged headrests, armrests with a control pad and side stick; the console's two-pad control box; the centre overhead screen on the column | | m1 | satin gunmetal (coat 0.06 at 0.32, roughness 0.38-0.46, tint 0.08) | | m2 | StainedSteel on the frames tiled 0.30 m, contrast 0.97-1.03 | | m3 | the porthole smoked (`M_Grouper_AcrylicDark`) | | m4 | a lamp beside the drum's face on its lower rim each side (r 0.505, 26 deg below the side), placed with the fitted camera: its ray through the concept's lamp crosses the face plane inside the rim, so a lamp further aft would be hidden by the drum | | m5 | four grooves round the drum body | | m6 | the stepped duct | | m7 | dark chamfered claw pockets, the ring ending at each | | m8 | the skeg's root slimmed (6 px half width, was 17) | | m9 | oval latches; flush hinges | | m10 | hidden faces pruned: fittings deeper than 15 mm under the actual skin, the grid under the pods' pieces and the collar | | m11 | the hull's own 4096 atlas, its skin an arc-length island: 304 px/m | | m12 | the scale note above (and in the report) | Also: TOP's pod vents and raised capsule built (the first README listed them, the model had none); the decal sheet square (2048 x 2048, pad 0.26 m: the coarser hull faces under the decals reach further). ## Round 2 (2026-10-22): what changed | item | what was done | |---|---| | M1 claw pockets | the skin under the collar is no longer pruned face by face (its opening is the grid's clean round hole, r 0.512); every collar section ends in one skirt at r 0.695 fitted to the faceted skin with a small fillet; each pocket has a floor plate from the Kazah wall (r 0.535, lip r 0.552 kept) to the skirt, a crisp corner at the wall; pockets in 2.25 deg steps, chamfers in 1 deg. Pocket rays 1 / 3 / 0 / 1 (were 336 / 337 / 4 / 8); clamp 86 poses + 3 ship places: 0 hits, 5 mm; moon pool 1.457 m | | M2 drum mount | a convex solid block (0.34 m wide) to the sheet's plate outline joined to the chin, bolted to the flange; round stubs to hubs at (905, 407) and the clevis (912, 445); the bent tube round (0.10 m), its forward arm ending in the clevis; the sled a cheek plate and rails into the bend; the hangers, square tubes, cross bars and flange clamps gone. SIDE IoU 0.957 (was 0.939) | | M3 windows | screens where the concept camera's sight lands: four on the rear bulkhead, wall panels both sides between the side window and the door and aft of the door, a top row of three on the dashboard's front edge (under z -0.07: the view check is unchanged, 52.3 %); screens at 1.8 over a sheet peaking at 0.52 (the UI reads, nothing clips); cabin glow 9; the clear acrylic at roughness 0.02 with no smudge map; **each pane a 4 mm slab**: a single refracting surface had bent the camera's rays toward the dashboard, which is why the front window looked black. From the concept's camera 27 % of the rays through the front glass and 25 % through the side glass now end on a screen (were 9 % and 7 %) | | m1 markings | the seal at a 3.0 mm lift where it shares hull faces with the insignia (1.5 mm): 0 coincident faces; every decal quad split on its ridge diagonal (0 quads left to warp) | | m2 see-through | the drum's profile rebuilt (its inward band gone); the windows' inner flanges 0.16 m long following the lining (shorter under the side windows and on the front glass's lower half, never past the cabin's front end wall), the lining fitted to the trims with round 1's 5 cm flanges so it runs on over them; the pods' nose and tail pieces closed (capped); the porthole a slab; every lofted part's end caps turned out by a ray-parity test (the seats' fronts were wound inward); the side screens under the side windows 8 cm lower (clear of the flange). Back-face rays 315 of 699k (were 1,874) | | m3 twist | the collar's chamfer morph eased (the undercut opens inward), the window trims' corners in 6 deg steps; the remaining 105 quads over 45 deg split into triangles (the critique's fallback); the pod fillet's grid itself was **not** re-pinned | | m4 drum | a straight cylinder, 0.06 m edges, four raised rings 6 mm proud, 8 mm wide | | m5 drum lamp | a housing r 0.064 with a 10 cm lens 4 cm proud, axis r 0.53 at 25 deg below the side; through the concept camera 8.3 px from the concept's lamp | | m6 pod vents | recessed slots with rounded ends (a 5 mm lip round a dark floor), x 769.7-797 and 808-830.2, ending on the lip rings | | m7 trace panel | the two empty rectangles replaced by short traces | | m8 light lines | lines inset 3 mm from their faces' edges with 5 mm soft edges, emissive baked at 2x and box-filtered | ## Open - **Twists**: none over 45 deg as quads (105 were split into triangles), but 181 quads twist more than 25 deg and 286 more than 20 (96 / 162 on the skin grid): the pod's fillet where the lower groove crosses it, the frame band's chamfered corners round the front glass, the duct ring's groove ends. Re-pinning the grid along one fillet loop at the pod and the cheek (the critique's first choice) was not done. - **See-through**: 315 rays of 699k still see the back of a face (0.045 %): the frame band's corners at the chin's chamfer, the pod's fillet junction above the nacelle (the near-folded quads there), the windows' corners where the lining's opening is widest, the duct ring's groove ends. The four claw pockets let 0-3 grazing rays through at the lip's edge. - **Triangles**: the hull is 52.2k at LOD0 (round 1: 47.3k), the exterior about 59k: the denser collar, the skin kept under it, the new mount, the long flanges and the slabs. LOD1 26.1k, LOD2 10.4k. - **The front window** from the concept's camera shows one large wall screen and the small top-row and overhead displays; the side window shows several. Through the front glass most of the cabin seen is the port wall, the door's inner side and the seat. - SIDE's mask still counts the open water inside the bent tube, between the sled's rails and behind the block as hull (the sheet's line drawing filled in): 1,233 of SIDE's 1,972 missing pixels are in the mount's box x 845-925, y 395-475 (round 1: 2,302; the model now covers 4,231 of the box's 5,412); the concept shows those gaps open. - Not in Unreal; no import script or actor. The Kazah's axes, so the Kazah's path can be used. - My additions (rotor, hinges, antenna fold, door stops, hatch seat, cabin detail and screens, the lamps beside the drum, the mount's stubs and hubs, UI panel decals) wait for the user's word. "Grouper" is a working name; "Subtub 1" is the sheet's own lettering. Scale: the model is 7.45 m long (the collar sets the scale); the sheet's label says 15,500 mm.