# Mako: a Tender ("sub tub") after the user's reference sheet Built on 2026-10-20 after the user's four-view sheet `reference/user_reference.webp` (TOP, FRONT, SIDE, REAR: an orange shark-like sub with a glass nose bubble, a thick orange collar, dark side pods, a dorsal fin, drooped grey fins and a tool cluster at the stern), with a red line over the canopy's rear and the collar. The user's words: *"can you create me a 3d tender model that can be usable as an real asset in the descent vessel. try to create similiar from that referance picture. red line indicates where the the arm holder clips place so arms can hold the sub tub."* "Mako" is a working name after the dorsal fin; the user has not named it. **v03 (the current state), the same day**, after the user sent v02 back: *"well this isnt look like the referance picture do it more precisely and accordingly take your time fix the glass fins also the holder clips smaller thinner"*. v02 is kept in `versions/v02_first_delivery/` (the .blend, FBX, textures, scripts and its renders). Built headless (the open Blender held another session's unsaved Spearfish file, which was left alone). ## Files | | | |---|---| | `Tender_Mako.blend` | the model, textured | | `fbx/SM_Mako_*.fbx` | one FBX per part, vertices relative to the part's pivot; the hull carries its 26 `UCX_` collision hulls | | `fbx/Mako_Assembled.fbx` | everything in place, for a quick look | | `Mako_layout.json` | pivots, motion axes and ranges, sockets, clamp interface, every check's result, textures (Unreal cm) | | `textures/` | `T_Mako_Exterior_Masks` / `_BevelNormal` (4096), `T_Mako_Cabin_Masks` / `_BevelNormal` (2048), `T_Mako_Screens` | | `previews/compare/lookalike.png` | **the sheet's four views beside the model in the same views** (Cycles, studio light) | | `previews/compare/cmp_*.png` | the model's outline (red) over each view of the sheet | | `previews/v03_studio_*.png` | studio renders; `v03_*.png` the same in the underwater light; `topo_*.png` wireframe over the shading | | `reference/` | the sheet, its colour classes (`classes.png`) and the ruler zooms (`z_*.png`) the numbers were read from | | `build/` | the scripts (below) and `checks/` with every check's result | | `versions/` | `v01_first_renders`, `v02_first_delivery` | ## What v03 changed (the user's points) - **Glass.** The canopy is glass from the nose right to the collar, as all four views draw it (v02 had an orange hood over its top-rear). Light blue and clear, as drawn, with the sheet's frames: an arc across the front (a circle in plan in TOP), a belt along each side at the widest line (SIDE), two orange rails over the top that rise toward the collar, a seam on the nose. Its lower edge was re-read: v02 had taken the dark cockpit drawn inside the glass for the glass's edge and put it up to 15 cm too high, so the jaw was too tall. - **Fins.** Rooted along the side pods as SIDE draws them (the root rising from front-low under the canopy to rear-high at the pod, the broad pale root panel, the trailing edge dropping almost straight, then the spike), drooped about 60 degrees (FRONT, REAR), 16 cm thick at the root. v02's hung low on the flank as thin plates. - **Holder clips smaller and thinner** (below): curved plates 2.9 cm thick and 22 degrees long, no disc, no saddle (v02: 15 cm thick, 40 degrees, on a 1.06 m disc on a saddle). - **More precisely after the sheet**, view by view: a thick orange collar ring (7 cm proud, chamfered) round the glass only, the dark lower body under it; behind the collar a narrow orange roof with a raised dorsal spine, a black intake slot either side and big dark side pods outboard, each with an intake oval and a round nozzle at the back (REAR's big round nozzles); the shell's plate seams (TOP) and the rear hull's side panel (SIDE) drawn in; the long framed rear window; a redder orange on the jaw, one fang each side and a dark keel tooth (FRONT); colours after the sheet (saturated orange, light blue-grey fins, dark slate). - The hatch moved to the back behind the dorsal fin (the glass is under the clips now). ## Where the holder clips are (the red line) The red loop on the TOP view is centred at sheet x 292, where the canopy's glass meets the orange collar: that is the clamp axis. The docking arm's head closes four claws at 45/135/225/315 degrees round it, wrist 1.94 m over the Tender origin, which is 9 cm behind it, as on every Tender (the Kazah's convention). Probed in the arm's file (`build/probe_head.py`): the claws never come below z 1.213 (shut r 0.558-0.693, about 10 degrees either side of each diagonal), the landing feet stay at z 1.405. - A clip is the Kazah collar's profile only where a claw closes: a wall at r 0.535 m from z 1.19 to 1.335 and the hook lip (r 0.552, top z 1.375) the claw catches when the arm lifts; inner face r 0.506, so 2.9 cm thick; 22 degrees long (the claw is 20); its top corners chamfered; a yellow mark where the foot comes down. - The two aft clips stand on the collar (0.24 m from the collar's top). The two fore clips stand on short tapered pylons on the canopy's top rails (0.41 m from the rail), which keeps the glass clear between them. - To keep the clips short, the whole Tender sits 10 cm higher on the arm than v02 (the hull's top at the clamp axis at z 1.10); the claws still pass the collar with room, and every clamp pose is clean (below). ## Size, scale and axes - **6.77 m long** (nose point to the stowed stern tools), **3.41 m span** (fin tips), **3.67 m high** (fin tips to the dorsal fin). The Kazah is 6.9 m long, the Remora 8.72, the Manta 9.5, the Spearfish 9.55. - Scale 1 sheet pixel = 7.5 mm, the largest at which the whole Tender stays 1 m inside the deck well at BOARD (the user's limit since the Manta). The clips' place is fixed by the user's line, so the Tender hangs off-centre on the arm; the stern tools and the fin tips set the size. The well is an oval 6.3 x 12.3 m round the origin (`build/probe_ship.py`). - 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; `ue_cm = (-y, -x, z) * 100` (nose +X). ## How it follows the sheet Measured in pixels: colour runs down every column of each view (`build/mk_runs.py`; orange, glass, grey, dark and the red line told apart, `reference/classes.png`) and 2-3x zooms with rulers. Every number is in `build/mk_measure.py`, with the reading. `previews/compare/lookalike.png` sets each view of the sheet beside the model rendered the same way; `cmp_all.png` lays the outlines over the sheet (TOP and SIDE match within a few pixels). Where the views disagree (an AI-drawn sheet), the choice made: | what | views | built | |---|---|---| | big fins' tips | TOP: x 711; SIDE: x 600 | x 662, nearer TOP (the planform view); lateral from TOP, height from SIDE | | canopy's shape | TOP 1.65 m wide; FRONT a round dome; SIDE 1.2 m glass at the collar | TOP and SIDE outlines; the glass reaches down to SIDE's sill | | frame bars over the top | TOP: dark bands 0.41 m out; SIDE: an orange band near the top | orange rails 0.375 m out (under the fore clips) | | fangs | SIDE: two lines; FRONT: one tooth a side | one a side, at FRONT's 0.165 m | | pods | TOP/SIDE/REAR differ in size | SIDE's length and height, TOP's outer edge, REAR's round nozzle | ## Added for the game (not on the sheet) - The **holder clips** (above); the **hatch** on the back; a **cockpit** (deck below the glass's edge, one reclined pilot seat, a low console with three screens, side consoles with sticks, a bulkhead with a crawl door); a **rear equipment bay** (deck, rack, light, the hatch's trunk) behind the side windows; two **lamps** on the jaw; two stowable **manipulators** in the stern cluster. ## Checks (scripts in `build/`, results in `build/checks/`) | check | result | limit or comparison | |---|---|---| | moon pool at BOARD (launch arm, interior fork's deck well) | **1.014 m** from the well's edge (a stern tool's tip) | the user's 1 m; Kazah 1.206 | | carousel sweep, three stowed Tenders, 2 degree steps | side **0.497 m**, roof 0.601 m | no contact; Kazah 0.366 / 1.114 | | docking clamp, `DockArm_Carousel.blend`, 20 poses (lowered 0 to 5.3 m, claws shut and open, both headings) | 0 intersections, least 17.0 mm | | | docking clamp, ship file, the three Tender places | 0 intersections, least 17.0 mm | | | hatch 0 to 100 deg, 2.5 deg steps | 0 intersections, least 2.6 mm | | | stern arms 0 to 90 deg | 0 intersections, least 4.0 cm; 0.35 m between them | | | rotor through one blade pitch | 0 intersections, 5 mm | | | cockpit and bay inside the skin | 0 cabin vertices within 5 mm of the skin or the glass (the lining itself excepted) | | Run: `sh build/run_checks.sh` (the ship and arm files are opened read-only and never saved). ## Moving parts (own objects, origin on the axis, rotation 0, scale 1) | object | moves | driver on `Mako_Root` | |---|---|---| | `SM_Mako_Hatch` | swings up about the hinge across its fore edge (Blender X), 0 .. 100 deg, toward the tail | `hatch_open_deg` | | `SM_Mako_Rotor` | spins about the long axis (Blender Y) | `rotor_turns` | | `SM_Mako_Arm_L` / `_R` | swing out about a vertical axis at the shoulder, 0 (stowed aft) .. 90 deg | `arms_out_deg` | Drivers are simple expressions (this Blender runs no Python in files). The moon pool's 1 m holds with the arms stowed. ## Meshes and materials - `SM_Mako_Hull` (static, one mesh: skin, frames and sleeves, collar, jaw, pods, fins, spine, belly pack, stern housing and duct, lamps, canopy frames and rails, the four clips, the hatch's coaming), `SM_Mako_Cabin`, `SM_Mako_Glass`, the hatch, the rotor and the two arms. Quads, no booleans, no n-gons. Triangles: hull 21,244 (all quads), cabin 11,176, glass 3,388 (the nose point's fan is its only triangles), hatch 1,116, rotor 548, arms 972 each (39,416 in all). 26 convex `UCX_SM_Mako_Hull_NN` hulls (1,502 triangles), the collection "MAKO | Collision (UCX)" hidden in the viewport. - **Topology** (the Spearfish's clean method): one quad grid of 64 columns and 82 stations for the hull; the canopy, the jaw, the side windows and the hatch are regions of whole grid faces whose edge columns are pinned to the measured outlines (and held through the collar, so its band stays square); every opening has a frame in the hull's own faces and a sleeve to the lining. The collar is a raised band of the grid with chamfered faces; the orange shell stands 10 mm proud of the dark lower hull on a pair of columns 3 mm apart. Custom normals on the skin from the analytic surface. Wireframes: `previews/topo_*.png`. - Two UV layers: `UVMap` (UV0, the atlas: baked occlusion/edges/crevices and bevel normals) and `UV_Tile` (UV1, metres). The shell's plate seams and the side panel's outline are drawn in the bake from their measured lines (crisp at the atlas's size). - Surfaces: the user's Season 2 pack sets (`models/vessel-interior/textures`) under the paints, nothing downloaded: orange clear coat (shell, collar, spine, dorsal and tail fins, rails, pylons), redder orange (jaw, fangs), dark slate (lower hull, pods), black gloss (intakes, slots, grooves), light blue-grey (big and ventral fins), light blue glass, steel clips, graphite fittings, the CC0 leather on the seat, FloorPanel_A on the decks. ## Build Headless, one Blender at a time: `sh build/run_all.sh v03` (build in place, checks, surfaces, export, underwater previews), then `blender -b Tender_Mako.blend --python build/mk_lookalike.py -- v03 64` and `python build/mk_lookalike_sheet.py` (studio renders and the side-by-side sheet), `build/run_wire.py` (wireframes), `build/run_views.py` + `python build/mk_compare.py` (outlines). `build_mako.py` runs `mk_shape.py`, `mk_hull.py`, `mk_fittings.py`, `mk_clamp.py`, `mk_cabin.py`, `mk_tools.py`, `mk_finish.py` (with `mk_collision.py`). A geometry rebuild always needs the surfaces pass again (`python build/make_surfaces.py` writes `surfaces_mako.py` from `surfaces_head.py` and the Spearfish's pass). ## Open - Not in Unreal; no import script or actor yet (same axes as the Kazah, so the Kazah's path can be used). - My additions (the hatch on the back, the cockpit, the rear bay, the clips' pylons and rails) wait for the user's word. - The docking head's ore hose couples on the head; nothing on the Tender side is defined for it yet (as on the other Tenders). - "Mako" is a working name.