# Tiger: a Tender (sub) after the user's concept picture Built on 2026-10-22 after one perspective picture from the user, `reference/user_picture.jpg` (827 x 803). It shows an orange shark-like sub with a glass nose bubble, an orange collar and shell, a red jaw with gill grooves, big grey fins, a dorsal fin and a tail fin, and a dark rear body. The user wrote *"create me 3model of this picture exactly"*. The same day: *"Make it a Tender: add docking clips where the arm can hold it and run the moon pool, carousel and clamp checks."* "Tiger" is a working name; the user has not named it. It is the same design as the four-view sheet behind the **Mako** (`models/tender-mako`). This model follows the picture, not the sheet, and the two differ in proportion. The picture's big fins hang down and out with almost no sweep. Its dorsal fin is taller and further forward, and its canopy is smaller. The Mako was not touched. The model before it became a Tender is in `versions/v1_before_tender.blend` (with its layout JSON). ## Files | | | |---|---| | `Tender_Tiger.blend` | the model, textured, rigged (the tool arm), the picture's camera ("TIGER \| Picture camera") and a studio light | | `fbx/SM_Tiger_Hull.fbx` | the opaque outside with the clips, and its 26 `UCX_SM_Tiger_Hull_NN` collision hulls | | `fbx/SM_Tiger_ToolArm.fbx` | the stern's tool arm at its own pivot (the hinge), with `UCX_SM_Tiger_ToolArm_00` | | `fbx/SM_Tiger_Glass.fbx`, `fbx/SM_Tiger_Cabin.fbx` | the canopy and rear-window glass; the cockpit and the rear bay's contents | | `fbx/Tiger_Assembled.fbx` | all four in place | | `Tiger_layout.json` | bounds, axes, the clamp interface, the moving part, every check's result, mesh stats, textures, the picture camera | | `textures/` | `T_Tiger_Exterior_Masks` / `_BevelNormal` (4096), `T_Tiger_Cabin_Masks` / `_BevelNormal` (2048), `T_Tiger_Screens` | | `previews/compare/v2_pair.png` | **the picture beside the model rendered from the picture's own camera** (`v2_blend.png`: the two mixed 50 %) | | `previews/v2_tender_sheet.png` | the Tender: hero, the clips close up, side, front, the stern with the tool arm aft and folded | | `previews/v2_studio_*.png`, `v2_topo_*.png` | studio views; the wireframe over the shading | | `previews/compare/grid.png`, `canopy_fit.png`, `mako_over.png` | the fitted camera's frame, the canopy's fit, the Mako through this camera | | `reference/` | the picture, its colour classes, the ruler zooms the numbers were read from | | `build/` | the scripts (below), `build/checks/` every check's result; `previews/compare/work/` the fitting rounds | ## How it follows one picture 1. **The camera** (`build/tg_fit.py` -> `build/cam.json`). The picture's camera and the model's key points were fitted together: nose, dorsal and tail fin tips, ventral fin tip, belly box corner, prong tips, and the two big fin tips (a mirrored pair; the far fin is the blade at the picture's lower left). Points start from the Mako sheet's readings and may move where the picture needs it. An 84 mm lens about 12 m from the hull, 42 deg ahead of abeam on the port side, a little below, rolled about 7 deg. 2. **Outlines cast through the camera** onto the plane they lie in (`build/tg_geom.py`): the ridge, the dorsal, tail and ventral fins, the shell's lower edge, the jaw's keel, the prongs. Details are cast onto the surface they sit on (`tg_geom.cast`). 3. **The canopy** was fitted on its own (`build/tg_fit_canopy.py` -> `build/canopy.json`, Nelder-Mead on the overlay). 4. **The big fins** from the near and the far fin together: a mirrored pair is a stereo pair, so each fin edge is solved in 3D. 5. **Checked by overlay** (`build/tg_try.py`, class renders without Blender) and by Cycles renders from the picture's camera. ## What it is - **Canopy**: a glass bubble with a pointed nose, cut along the sill, a dark navy frame round its rear rim (0.16 m) and along both sills; milky glass in a band over the top and at the thick lip under the nose. Inside: a flat cockpit floor between the jaw's inner walls, a dark bulkhead with a wide cyan display, a seat with a red cushion, a low console with two screens, struts. - **Brow and collar**: a thin orange visor on the glass's crest that rises into the shell; a thick orange collar round the glass's back and down to the jaw; a white plate with a dark mark on its top. - **Shell**: the orange cape from the collar to the stern, with the dorsal and tail fins and one plate seam (baked). - **Jaw**: a red wedge on a narrow keel, two gill grooves (real 3 cm channels in its grid, black), a recessed navy oval intake at its rear, two flat prongs under it. - **Behind the collar**: the lit grey recess with a big round cover, a dark port and a lamp bar; the dark lower body under it. - **Big fins**: faceted blades, a broad root panel along the flank from under the collar to the rear body, and the spike. - **Rear body**: a blue-grey capsule over a dark belly, a diagonal stripe, the low glass blister window with a white box and an orange canister in its bay (standing on the skin), a black belly box, a ventral fin. - **Stern**: a steel ring round the capsule's end, a thin raked plate over it, a dark box under it with an orange lens each side, and the **tool arm** on a knuckle at the ring's back (below). The rear window is in, as the picture shows it (for the Mako the user said *"no need a glass window remove that just plain metal"*; here the request was "exactly this picture"). It is its own part (`window`, `window_frame`, `bay_*` in `build/tg_details.py`), easy to drop. ## Where the holder clips are The docking arm (`models/docking-arm`) hangs a Tender with its wrist 1.94 m over the Tender's origin and closes four claws round the clamp axis, 9 cm ahead of the origin (the Kazah's convention). Probed in the arm's file (`build/tg_probe_arm.py`): the claws never come below z 1.213 (shut r 0.558-0.693, open r 0.61-0.79), the landing feet stay at z 1.405 (r 0.41-0.53). - **A clip** is the Mako's, the Kazah collar's outer profile only where a claw closes: a curved steel plate 2.9 cm thick (r 0.506-0.535), 22 deg long at 45/135/225/315 deg, a wall up to z 1.335 and a lip (r 0.552, top z 1.375), a yellow mark on top. The hold is the collar's, as for the Kazah and the Mako: the shut claws stand 14 mm off the lip, they do not hook under it. A real catch would change the arm and every Tender's interface. - **The clamp axis** is at the collar's back edge, just behind the glass (station -0.25 of the picture's frame), found against the arm's head, claws and hose in all its poses (`build/tg_clamp_place.py`). Aft of about -0.20 the dorsal fin comes within 0.1 m of the ore hose, which hangs over the Tender's aft side (0.011 m at -0.05). Forward of -0.25 the fore clips would stand over the bare glass. Raising the Tiger on the arm (for shorter fairings) brought the claws down on the shell. - **The fore pair** grows out of the shell's front edge behind the glass on raked orange crests (0.30 m) and reaches forward over the visor; **the aft pair** stands on orange fairings (0.19 m) on the shell behind the collar. - The whole model was moved **0.16 m aft** of the picture's frame so the axis lies at (0, -0.09) of the Tender's frame. ## Checks (scripts in `build/`, results in `build/checks/`; `sh build/run_checks.sh`) The ship (`../M_Ship_v2_interior_season2.blend`) and the arm (`../docking-arm/DockArm_Carousel.blend`) are opened read-only and never saved. The Tiger is checked with its tool arm folded (docked). A Critique agent tried to refute the first round (2026-10-22). Its additions are in: the gaps measured both ways, the extra arm poses, the descent, the triangle sweep, the cabin. | check | result | limit or comparison | |---|---|---| | **moon pool** at BOARD (launch arm, the deck well's lip read from the ship) | **1.029 m** (the stern plate) | the user's 1 m; with the tool arm pointing aft only 0.634 m: **fold it before BOARD** | | **carousel** sweep, three stowed Tenders, 2 deg steps (the Mako's margins table) | side **0.256 m** (tail fin tip), roof 0.438 m | the Kazah: side 0.366, roof 1.114 | | carousel with triangles, 3 deg steps, 63 ship meshes round the bay | **0 crossings**, least 3D clearance **0.188 m** | | | **clamp**, arm file: 86 poses (let down 0-5.3 m, claws shut, open and part-way, reach_in 2.34 down to POOL, both headings) | **0 intersections**; least gaps (both ways): claws **14.2 mm** (to the clips), head 26 mm, ore hose 0.10 m | the Mako: 17 mm | | clamp, ship file: the Tiger in the three Tender places | 0 intersections, the same gaps | | | let down from BOARD to POOL through the well, 9 steps, 496 ship meshes | 0 crossings, least **1.035 m** (the deck round the well); arm 0 hits | | | tool arm 0 to 90 deg, 2.5 deg steps | 0 intersections, least 5 mm (its eye between the knuckle's cheeks) | | | cockpit and bay inside the skin | 0 crossings, **0 cabin vertices seen from outside**; 7 vertices seated within 5 mm (the bulkhead's foot on the floor, the bay box on the skin) | the Mako: 0 within 5 mm | The carousel's side margin is less than the reference Tenders'. 5 % larger, the Tiger would have 0.06 m; 10 % larger, it would touch the hull lining. ## Moving part (own object, origin on its axis, rotation 0, scale 1) | object | moves | handle on `Tiger_Root` | |---|---|---| | `SM_Tiger_ToolArm` | folds about its hinge (Blender X) at (0, 4.80, 0.13): 0 = pointing aft as the picture draws it, 90 deg = folded straight down | `tool_arm_down_deg` | The driver is a simple expression (`-d * 0.0174533`; this Blender runs no Python in files). The picture's pose is the default; the Tender docks with it at 90. ## Size, scale and axes - **7.29 m long** with the tool arm aft (6.87 m folded), **3.63 m span** (fin tips), **3.67 m high** (fin tips to the dorsal fin). - As the Kazah and the Mako: 1 unit = 1 m, nose to -Y, port +X, Z up; origin on the centre line 9 cm behind the clamp axis, z 0 the Mako's datum (the arm's wrist 1.94 m over it). Scale as the Mako (1 Mako sheet px = 7.5 mm). - Unreal: FBX forward -Y, up Z, import with Force Front X Axis; `ue_cm = (-y, -x, z) * 100` (nose +X). ## Meshes and materials - `SM_Tiger_Hull` 14,176 triangles (quads plus the lofts' triangulated end caps, no n-gons), `SM_Tiger_Glass` 3,689, `SM_Tiger_Cabin` 384, `SM_Tiger_ToolArm` 188. Parts that meet (fin roots, prongs, visor under the shell, the clips' fairings) are separate closed pieces running into each other, as kit-built hard-surface assets are. No booleans. Edges over 40 deg sharp. - Two UV layers: `UVMap` (UV0, the atlas for the baked masks and bevel normals) and `UV_Tile` (UV1, metres, the tiling sets). - Surfaces as the Mako and the Spearfish have them (`build/tg_surfaces.py`): the user's Season 2 pack sets read in place from `models/vessel-interior/textures`, the CC0 leather on the seat, nothing downloaded. Paints in the picture's colours; steel clips with yellow marks; the canopy and window glass thin (low IOR). ## Build (headless, one Blender at a time) ``` blender -b --factory-startup -t 0 --python build/tg_build.py (geometry from tg_geom.py, clips, tool arm and its rig, UCX, camera) python build/tg_make_surfaces.py (writes tg_surfaces.py from tg_surfaces_head.py + the Spearfish's pass) blender -b Tender_Tiger.blend -t 0 --python build/tg_surfaces.py (UVs, bakes, materials; saves) sh build/run_checks.sh (dump, then every check) blender -b Tender_Tiger.blend -t 0 --python build/tg_export.py (FBX, Tiger_layout.json with the checks) blender -b Tender_Tiger.blend -t 0 --python build/tg_render.py -- v2 96 all ; python build/tg_pair.py v2 ``` A geometry rebuild always needs the surfaces pass and the checks again. The geometry is plain numpy (`tg_geom.py`, `tg_canopy.py`, `tg_jaw.py`, `tg_details.py`, `tg_clips.py`); `python build/tg_try.py TAG` checks it against the picture. ## Open - **No way in.** The Tiger has no hatch, so there is no hatch check (the Mako has one, the Manta has none on the user's word). Whether it needs one is the user's call. - The clips add hardware the picture does not show: the four steel plates on orange crests over the collar. - From the picture's view it still differs in painted detail: the bright sky reflections on the canopy, a rounder recess pod, a busier stern, a lighter highlight band on the rear body. The far side copies the near one. - Not in Unreal; no import script or actor (same axes and docking convention as the Kazah and the Mako).