# Manta: a third Tender ("sub tub") Built on 2026-10-14 after the user's reference picture (`reference/user_reference.jpg`): a pale grey-white glossy mini-sub with a pointed nose and a dark mouth, a wide amber-lit cabin window low on the nose's flanks, curled wing fins, lower fins swept down, dorsal strakes, a dark M-shaped vent, a segmented boom out of the stern and a thin mast with a yellow tag. "Manta" is a working name after the curled fins; the user has not named it. The user's words: *"create me this small submarine as usable 3d model asset another version of sub tubs in blender using blender mcp. It can be bigger than usual subtub as soon as it fits the moon pool max limit 1 meter closure. you dont have to do the hatch on top you can just make holder clips so arms can hold the sub tub. try to make it similiar as this referance picture"* ## Files | | | |---|---| | `Tender_Manta.blend` | the model (built in the open Blender through the MCP) | | `fbx/SM_Manta_*.fbx` | one FBX per part, vertices relative to the part's pivot; the hull carries its `UCX_` hulls | | `fbx/Manta_Assembled.fbx` | everything in place, for a quick look | | `Manta_layout.json` | pivots, motion axes and ranges, sockets, clamp interface, materials, textures (Unreal cm) | | `textures/` | `T_Manta_Exterior_Masks` / `_BevelNormal` (4096), `T_Manta_Cabin_Masks` / `_BevelNormal` (2048), `T_Manta_Screens` | | `previews/` | renders (`v04_*` are Cycles with the final surfaces) | | `build/` | the scripts (below) and `checks/` with every check's result | | `versions/` | earlier states: `v01_first_shape`, `v02_wider`, `Tender_Manta_v03_untextured.blend` | ## Size and axes - 9.50 m long with the tool boom (8.98 m without it), 4.16 m span over the wing tips, 2.61 m high (skid pads to the clips' top). The Kazah is 6.9 x 3.27 x 2.35 m, the Remora 8.72 x 3.86 x 2.88 m. - 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, so the Manta drops into every place set up for the Kazah (the ship file's Tender places, the docking arm's head). - Unreal: FBX forward -Y, up Z, import with Force Front X Axis; `ue_cm = (-y, -x, z) * 100` (nose +X), the Kazah's convention. ## Holder clips (no hatch) The docking arm's head (`models/docking-arm`) closes four claws at 45/135/225/315 deg round its axis, 1.94 m over the Tender origin. The Manta has no hatch: a pedestal (top z 1.15) carries four steel **holder clips** at those four azimuths, each a 40 degree arc of the Kazah collar's outer profile (wall r 0.535 m from z 1.18 to 1.335, hook lip r 0.552, top z 1.375) round the clamp axis at (0, -0.09). The claws close on the clips' walls and hook under the lips, as on the Kazah's collar; yellow marks on top show where. ## Checks (all scripts in `build/`, results in `build/checks/`) | check | result | limit or comparison | |---|---|---| | moon pool at BOARD (launch arm, interior fork's deck well) | **1.033 m** from the well's edge, at the wing tips | the user's 1 m; Kazah 1.206 | | carousel sweep, three stowed Tenders, 2 degree steps | side 0.293 m (the boom's end), roof 1.10 m | no contact; Kazah 0.366 / 1.11 | | docking clamp, `DockArm_Carousel.blend`, 20 poses (lowered 0 to 5.3 m, claws shut and open, both headings) | 0 intersections, least 16.5 mm | as the Kazah | | docking clamp, ship file, the three Tender places | 0 intersections, least 16.5 mm | | | rotor through one blade pitch | 0 intersections, 10 mm clear | | | tool boom swing | clear from -10 deg (toward the duct) to +45 deg (outboard) | the rig's documented range | | drill bit spin at both boom ends | 0 intersections | | Run: `sh build/run_checks.sh` (moon pool, sweep, clamp; reads `checks/manta_*.np*`, which `dump_manta.py` writes) and `blender -b Tender_Manta.blend --python build/motion_check.py`. 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 `Manta_Root` | |---|---|---| | `SM_Manta_Rotor` | spins about the long axis (Blender Y) | `rotor_turns` | | `SM_Manta_ToolBoom` | swings about Z on its hinge, -10 .. +45 deg | `boom_swing_deg` | | `SM_Manta_ToolBit` (child of the boom) | spins about its own Y | `bit_turns` | Drivers are simple expressions (this Blender runs no Python in files). ## Meshes and materials - `SM_Manta_Hull` (static, one mesh: skin, fins, strakes, keel, duct, mast, window frames, clips), `SM_Manta_Cabin` (seen through the windows), `SM_Manta_Glass` (translucent), the three moving parts. Quads, no booleans, no n-gons. Triangles: hull 50,460, cabin 14,376, glass 3,008, boom 1,020, rotor 524, bit 388 (69,776 in all). 12 convex `UCX_SM_Manta_Hull_NN` hulls. - The preview camera and lights are in the collection `_preview`; they are not exported. - Two UV layers: `UVMap` (UV0, the atlas: baked occlusion/edges/crevices and bevel normals) and `UV_Tile` (UV1, metres, for the tiling sets). Surfaces (`build/surfaces_manta.py`, generated by `make_surfaces.py` from the Remora's method): the Season 2 pack's ScratchedMetal under a pale blue-grey clear-coated paint, StainedSteel for bare metal, FloorPanel_A on the deck, the CC0 leather on the seat, Glass_DirtRough smudges. Glow only on the lamps, the cabin strips and the amber screens. ## Build In the open Blender: exec `build/build_manta.py` (rebuilds only the Manta's collections), then `build/dump_manta.py`, save; then `blender -b Tender_Manta.blend --python build/surfaces_manta.py` (UVs, bakes, materials; saves), `build/export_manta.py`, `build/render_previews.py`. A rebuild of the geometry needs the surfaces run again (it replaces the meshes and their UVs). ## Open - Not in Unreal. No import script and no actor yet (the Kazah has `TheDescentUE/Tools/blender/export_kazah.py` and a C++ actor; the Manta's FBX and layout follow the same axes so the same path can be used). - No way in for the pilot was asked for or built (no top hatch, by the user's word); the cabin has a door in its aft bulkhead. - The Remora (`models/tender-remora`, another session) is a separate second Tender; nothing here changes it.