# Grouper Tender: Critique, round 2 (2026-10-22) I checked the model only against what the user asked for: *"create me 3d model of this tender from this blueprint exactly"*, and the concept render (*"Check this picture as a referance"*). The blueprint rules the shape, SIDE first. The concept rules the look. The user's standing rules for models also apply: look like the sheet, game-ready topology, real texture sets, no clipping, travel checked, and the moon pool's 1 m. The state checked is the Coder's fresh round 1 build (`sh build/run_all.sh r1 128`, files from 08:33 to 08:38). Blender ran headless and read-only and saved nothing. I changed nothing in the model, its scripts or the .blend. My scripts, pictures and numbers are in `critique/round2/`. ## Scores | | score | basis | |---|---|---| | **Outline (blueprint)** | **89 %** (round 1: 88) | Silhouette IoU against the Designer's masks, which I recomputed: SIDE 0.939, TOP 0.947, FRONT 0.954, BACK 0.953, BOTTOM 0.866. **SIDE:** 2,302 of its 3,049 missing sheet px (75 %) are still in the drum-mount box (x 845-925, y 395-475). Without that box SIDE is 0.976. **BOTTOM:** 0.908 at the best shift (8 px). The sheet draws BOTTOM 6 % wider than TOP (169 px against 160 px), and the model follows TOP, which is the right choice. **Part by part:** the door, porthole, oval latches, seal, flag, lettering, vents, stern fins, duct, slot, skeg, lamps, the pods' ringed tail cones, the FRONT windows and the drum all sit within 1-3 sheet px (2-5 cm) of the drawing. | | **Look (concept)** | **75 %** (round 1: 62) | **Fixed since round 1:** the light lines are thin, the circuit traces are clean vector lines, the hull is satin gunmetal, the seats are real bucket seats, and the side window now shows screens. **Still open:** from the concept's own camera the front window is black, and the screens clip to flat cyan. The drum still hangs on a scaffold of thin square tubes, not the concept's solid bracket. Close up, the collar's claw pockets are torn open. | Verdict: **fix**. Three MAJOR items are open. Only one of them (1) is new, and it is a geometry defect, not a matter of reading the drawing. ## Pictures and checks made for this review (`critique/round2/`) **Side-by-side pictures** - `pair_side_nose.png`, `pair_side_stern.png`, `pair_side_mid.png`, `pair_side_hump.png`, `pair_side_pod.png`, `pair_top.png`, `pair_top_pod.png`, `pair_bottom.png`, `pair_front.png`, `pair_back.png`: the sheet beside the model's lookalike render, with sheet-pixel rulers (`cr_pair.py`). - `z9_side_drum_mount.png`: a 9x zoom of the sheet's drum mount, with a 5 px grid. **Overlap** - `iou_diff_.png` and `iou.json`: overlap with the masks (`cr_iou.py`). Grey is both, red is the sheet only, green is the model only. **Renders** (`cr2_render.py`, using the Coder's own studio and water light set-ups) - `cr2_concept_windows_3x.png`: the windows from the fitted concept camera, rendered at 3x. - `pair_concept_windows.png`: that render beside the concept, cropped the same way. - `cr2_seats_from_nose.png`: inside the cabin, looking aft. - `cr2_mount_side.png` and `cr2_mount_low_front.png`: the drum mount. - `cr2_pocket_045/135/225/315.png`: the four claw pockets, tiled together in `cr2_pockets_4.png`. **Close-ups** of the Coder's renders - `zoom_flag_studio_side.png`, `zoom_pod_junction_side.png`, `zoom_pod_junction_qfore.png`, `zoom_collar_side.png`, `zoom_collar_qaft.png`, `zoom_collar_ring_edge.png`, `zoom_strip_front_window.png`. **Checks** - `audit.json` (`cr2_audit.py`): objects, n-gons, materials, the twist audit, the hull's pieces, and the decals' UV coverage of their alpha, which is 100 %. - `holes.json` (`cr2_holes.py`): rays from 400 eye points, 6,561 rays each. It records which faces are seen from behind from outside, and whether each one is flipped or seen through a gap. - `collar_rays.json` (`cr2_collar_rays.py`): dense rays at the four claw pockets. - `collar_edges.json` (`cr2_collar_edges.py`): the hull's open boundary loops round the collar. - `decal_dupes.json`, `decal_warp.json`, `decal_gaps.json` (`cr2_decal_*.py`): coincident decal faces, decal quad warp, and rays over each marking. - `checks/motion.json`: the motion check, re-run from a copy (`cr_motion_check.py`). It gives the Coder's numbers: 0 hits; least gaps hatch 4.1 mm, doors 3.0 / 3.0 mm, antenna 6 mm, rotor 4.9 mm. ## MAJOR (the user would send it back for these) **1. Collar / q_aft / top views: the claw pockets are torn, and the two aft pockets are see-through holes into the hull. (New.)** What the pictures show: - `cr2_pockets_4.png` (the pockets at 45, 135, 225 and 315 deg round the clamp axis) shows each pocket's floor as a crumpled, stair-stepped surface. - There are black voids at the outboard lower corners of the 45 deg and 135 deg pockets (the two aft ones). - `zoom_collar_side.png` shows lumpy blobs where the pocket chamfers meet the hull, at SIDE x 717-722 and 785-790. The sheet draws the hump as a smooth lens. The cause (`collar_edges.json`): - The hull's skin has an opening under the collar. Its open boundary is one loop of 60 edges, 4.60 m long, at z 1.055-1.226, reaching r 0.63 m from the clamp axis. Its edge is stair-stepped, because the faces were pruned one by one. - The collar's wall covers that edge everywhere except in the claw pockets. There the wall steps in to the Kazah wall at r 0.535, so the strip between r 0.535 and the skin's edge is open. The measurement (`collar_rays.json`, 24 eye points at each pocket, rays about 1 cm apart): - 336 rays at the 45 deg pocket and 337 at the 135 deg pocket go through the opening. They hit the inside of the far flank at (-0.86, 1.04, 0.83) and (0.86, 1.06, 0.83), and the cabin lining at (0.05, 0.56, 1.08). - The fore pockets let through 4 and 8 rays. - In Unreal, which culls back faces, these openings will look straight through the Tender. Also: the cyan collar ring's lower edge is a sawtooth with steps of about 1 cm (`zoom_collar_ring_edge.png`). The concept shows a clean glowing ring. Fix: - Close each pocket with a floor that belongs to the collar piece: a clean plate from the pocket wall (keep the Kazah profile, r 0.535, and the hook lip at r 0.552) out to the collar's skirt. - Build the collar's skirt as one swept ring whose lower edge is projected onto the skin with a small fillet, in the same way as the window frames. - Cut the skin's opening under the skirt as a clean grid ring, with no stair steps. - Anti-alias the ring's edge in the emissive map. - Re-run the ray test (target: 0 back-face hits at all four pockets) and the clamp check (86 poses plus the ship's 3 places; the floors must keep the claws' 5 mm). Re-render the four pockets. **2. SIDE / concept / q_fore: the drum still hangs on a tube scaffold. The drawn bracket plate is open. (Round 1 item 1, only partly done.)** The SIDE box at x 845-925, y 395-475: - The sheet has 5,412 px there. The model has 3,148 px (round 1: 2,856), and 2,302 px are missing. - In the bracket plate (x 880-925, y 400-455), 1,024 px are missing, about 0.30 m². - In the sled (x 845-880, y 440-475), 593 px are missing. What the model has (`cr2_mount_side.png`): - a bar 0.33 m tall at the chin's top (y 397-416.5); - a thin vertical plate on the drum's back; - an open U tube of square section; - ladder rails. What the sheet draws (`z9_side_drum_mount.png`): a plate with - its top edge at y 400 (x 903-921), with bolts at x 910-918; - its front edge on the drum's back ring at x 920-921, down to y 450; - its bottom at y 450 (x 905-921), with an X-marked clevis at (912, 445); - its aft edge a diagonal from (903, 401) down to about (888, 440). The concept (`reference/z_concept_c_nose.png`) shows the same thing as a solid dark block, as deep as the upper two thirds of the drum, with one bent round tube under it. From below (`cr2_mount_low_front.png`) and in `r1_studio_q_fore.png` the model reads as a ladder of thin square tubes with small hanger plates that look loose. Fix: - Fill the plate outline above as a solid block, 0.30-0.40 m wide in X, with its aft face sloped along the diagonal. Bolt the drum's back ring to its front face. - End the bent tube's forward arm in the block's clevis at (912, 445). - Give the tube a round section, as the concept shows it. - Keep the sled rails (the sheet draws them), but join them to the cheek plate cleanly. - Fold the small hanger plates into the block. - Expected SIDE IoU: 0.95 or better. Re-run the moon pool and carousel checks. **3. Concept camera: the front window is black, and the screens clip to flat cyan. (Round 1 item 6, only partly done.)** What the concept's camera sees: - `pair_concept_windows.png`: both of the concept's windows are full of cyan screens (and people, whom we leave out). In the model, the starboard window shows three flat cyan rectangles (the overhead screens' forward faces) and a sliver of the dashboard. The front window is black. - The camera looks at the front glass at 39 deg and at the starboard glass at 34 deg (from `concept_cam.json`). That is not grazing, so the black comes from what lies behind the glass, not from reflection. - Through the front glass the line of sight lands on the port half of the cabin: the port seat's front, the port wall and the rear bulkhead. Nothing there is lit. The screens: - With strength 5 over a lit cyan ground, the screens clip. In `cr2_seats_from_nose.png` the console screen and the side banks are uniform cyan, and the radar, bars and dials of `T_Grouper_Screens` cannot be read. The glass: - The front acrylic shows its dirt-roughness map as dark blotches (`cr2_concept_windows_3x.png`). Fix: - Add screens where the camera's sight lands, as the concept shows them behind and around the pilots: - a bank of 3-4 screens on the rear bulkhead's forward face, above and between the seat backs; - inboard-facing panels on both side walls, aft of the side windows; - a forward-tilted top row on the dashboard banks. - Lower the screen emission to about 1.5-2, so the UI reads (no channel clipped in a Standard render). - Raise the cabin glow so the seats read in the concept-camera render. - Take the acrylic's dirt roughness down to 0-0.05 on the front and side glass. - Re-render `concept_pair.png`: both windows should read lit, with several screens each. ## MINOR **m1. Flank markings: the seal's pad bites a triangle out of the flag. The flag's pad clips the seal's teeth.** - `zoom_flag_studio_side.png` shows it: the flag's lower forward corner (SIDE x about 704-716, y 331-337) shows bare hull in a triangle. The same corner is gone on both flanks in TOP. - The decal mesh covers it (`decal_gaps.json`: 0 missing). The cause is that insignia and seal copy the same 4 hull faces per side at the same 1.5 mm lift (`decal_dupes.json`: 8 coincident faces). The seal's transparent pad wins, and Unreal will z-fight there. - Separately, 79 of the 249 decal quads warp more than the lift (up to 11.2 mm; 90 % of them under 4.9 mm; `decal_warp.json`). If Unreal splits a quad on the other diagonal from the hull's, the hull pokes through. - Fix: - Trim each marking's faces to its own rectangle plus a pad that does not reach another marking, or give the markings separate lifts (1.5, 3 and 4.5 mm). - Export the decals and the hull with the same triangulation, or lift each face by more than its warp plus 1 mm. **m2. Faces seen from behind: these turn into see-through gaps in Unreal.** - `holes.json`: 1,874 of 696,892 rays from outside (0.27 %) see the back of a face. - **Drum:** a band of 32 faces round the scanner drum at y -3.131 (SIDE x 931, the first ring), r 0.54, is wound inward: their normals point at the drum's axis. 1,020 rays see it, and in Unreal it will be a slit round the drum. - **Windows:** 213 faces of the window frame band's inner edge are seen from behind through the glass (345 rays). The gap between the skin and the cabin lining is not closed at the window openings. - **Pods and belly:** 145 faces at the pods' lip rings and their fillets. - Fix: - Flip the drum band. - Close the window reveals with a strip from the frame's inner edge to the lining. - Make the lip rings closed solids. - Re-run `cr2_holes.py`. **m3. Topology: twisted quads.** - No folds, but 349 quads twist more than 20 deg, 254 more than 25 deg, and 102 more than 45 deg. - Several large quads are nearly folded: | where (x, y, z) | twist | area | |---|---|---| | (±0.725, -0.147, -1.491) | 84 deg | 105 cm² | | (±1.081, -0.147, -1.098) | 84 deg | 123 cm² | | (±1.054, -1.59, -1.118) | 79 deg | 346 cm² | | Band at (±1.126, -1.118, -0.956) | 80 deg | 194 cm² | | (±1.111, -1.532, -0.799) | 69 deg | 283 cm² | | front window frame at (±0.525, -2.416, 0.602) | 87 deg | | | duct ring join at (±0.221, 3.527, 0.557) and (±0.425, 3.527, -0.621) | 83-85 deg | | | the collar pocket chamfers, z 1.29-1.33 | 71-78 deg | | - The pod and cheek ones show as vertical shading smears on the cheek above the pod (`zoom_pod_junction_side.png`, SIDE x 790-830, y 410-440). - Fix: re-place the pins so the grid flows along one fillet loop where the pod meets the hull. Split a quad into triangles only where that cannot be done. Target: none over 45 deg. **m4. SIDE / concept: the drum reads as a tyre.** - The body is crowned, with four tread-like grooves (`cr2_mount_side.png`). Round 1 asked for grooves at the sheet's rib lines; that was the wrong word. - The sheet draws a straight drum (x 920-950) with small rounded corners (about 4 px, 7 cm) and thin ring lines. The concept shows a smooth dark cylinder with a thick ring round the lens. - Fix: a straight cylindrical body with an edge radius of about 0.06 m, and the four lines as thin raised rings (6-8 mm) instead of grooves. **m5. Concept: the lamp beside the drum is a stud of about 3 cm on the face's rim.** - The concept shows a clear round lamp there. - Fix: a lamp with an 8-10 cm lens in a short housing on the drum's lower side. Keep its fit landmark within about 10 px. **m6. TOP / SIDE: the pod vents and capsule.** - TOP draws the long vent at x 737-793 and the short one at x 808-840 (y 213-222). The model runs them from x 771 to 829. - They read as loose slanted tiles lying on the nacelle (`zoom_pod_junction_qfore.png`). - Fix: make them recessed slots with rounded ends, as TOP draws them, at TOP's lengths. Where the lip rings are in the way, end them on the lip rings. **m7. Concept: two large empty rectangle outlines on the trace panel in front of the door.** - They are about 0.2-0.3 m wide (the "UI outlines" in `r1_studio_side.png`). The concept has only thin traces there. - Fix: replace them with traces, or with a small UI decal like the one near the stern. **m8. Light lines have stair-stepped edges.** - The collar ring has steps of about 1 cm (`zoom_collar_ring_edge.png`). The strip over the front window is a comb (`zoom_strip_front_window.png`). - Fix: bake an anti-aliased line, by supersampling or from an analytic distance, or make the light lines their own thin geometry. ## Standards the user asked for before | check | result | |---|---| | Moon pool at BOARD | 1.457 m (limit 1 m). Coder's check; re-run it after item 1. | | Carousel | side 0.836 m, roof 1.21 m (antenna raised 0.789 m); triangle sweep 0 crossings. Coder's check. | | Clamp | 86 arm poses plus the ship's 3 places: 0 hits, least gap 5 mm. BOARD to POOL: 0 crossings. Coder's checks; re-run after item 1. | | Motion | Re-run by me: 0 hits through every travel. | | Cabin | 0 crossings, 0 cabin vertices seen from outside. Both seats look straight out through the front glass (52.3 %). | | Drivers | Simple expressions. The moving parts are separate objects with their origin on the axis. | | Topology | Quads only, 0 n-gons, 0 folds; the hull is 72 columns by 103 stations. The wireframes now show an even grid. LOD1 and LOD2 are present. Not met: 102 quads over 45 deg (m3). | | Holes | **Not met.** The two aft claw pockets are open (item 1). The drum band and the window reveals are seen from behind (m2). | | Clipping | No part-to-part clashes beyond the intended seatings (the Coder's clash audit). The coincident decal faces (m1) are a clipping fault. | | Textures | Real sets from the user's Season 2 pack (ScratchedMetal, BrushedMetal, StainedSteel) and the CC0 leather. Hull 304 px/m on its own 4096 atlas. Nothing downloaded. | | Brand names | None. The flag and the seal are generic, and the lettering is the sheet's "Subtub 1". | | Triangles | The exterior is about 55k. That is over round 1's suggested 35k, but the user set no budget and LODs exist. No action needed. | | Scale | The model is 7.45 m long because the collar sets the scale, while the sheet's label says 15,500 mm. Tell the user in one line with the delivery (as in round 1). | Verdict: **fix** (MAJOR 1-3).