# Aethel-9: a two-seat sub after the user's blueprint sheet Built on 2026-10-22 after the user's blueprint `reference/user_blueprint.png` ("AETHEL-9 / TERRAFORMING UNIT 02": PORT SIDE, TOP, FRONT and a second front-like view with acoustic rings), with the user's words *"create me 3d model of this blueprint exactly in blender"*. The name is the sheet's. Built headless (Blender 5.2), every number read from the sheet in pixels. **Not made a Tender** (no docking clips, no moon pool, carousel or clamp checks): the user did not ask for it. ## Files | | | |---|---| | `Tender_Aethel.blend` | the model, rigged (`Aethel_Root` sliders), textured, with collision hulls (collection `05 COLLISION`) | | `fbx/SM_Aethel_*.fbx` | one FBX per mesh: static meshes at the world origin (the hull and the fittings carry their `UCX_` hulls); moving parts at the origin, unturned (vertices relative to their pivot) | | `fbx/Aethel_Assembled.fbx` | every mesh in place, at rest | | `Aethel_layout.json` | bounds, sliders and their ranges, drivers, pivots (metres and Unreal cm), joint axes, textures, collision, mesh stats, the motion checks' results | | `textures/T_Aethel_Hull_*` | the hull's painted set (4096): `BaseColor` (sRGB), `ORM` (R baked occlusion, G roughness, B metal), `Normal` (OpenGL: flip green in Unreal) | | `previews/v09_studio_*.png` | Cycles, studio light, Standard view transform: side, front, top (the sheet's framing), three-quarters fore, aft, low, the cabin through the side window | | `previews/compare/v09s_lookalike.png` | **each sheet view beside the model rendered in the same framing and scale** | | `previews/compare/v09_overlay_*.png` | the model's outline (red) and the sheet's silhouette (yellow) on the sheet, with IoU | | `previews/v08_topo_*.png` | wireframe over the shading | | `reference/` | the sheet, zooms (`z2_`, `z3_`, `z4_*`), silhouette masks per view (`mask_*`) | | `build/` | the scripts (below); `build/checks/motion.json` | ## Size, scale and axes - Scale **12.5 mm per sheet pixel**: the sheet's 6.5 m runs from the claw tip (x 177) to the stern (x 697). The hull is 5.86 m long; **6.44 m** with the arms at rest, **4.03 m** wide over the upper thrusters, **3.56 m** from the claws to the fin tip (hull 2.88 m keel to roof). The sheet's 3.1 m and 4.2 m labels are about 10 % off its own drawing; the drawing is kept. - 1 unit = 1 m, nose to -Y, port +X, Z up (the Kazah's axes); **origin on the keel line (Z 0) at mid hull** (SIDE x 465). - 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 - **SIDE rules** (the user's rule from the Mako): the hull's top and bottom lines are SIDE's outline (`reference/mask_side.png` and the 3x/4x zooms); TOP gives the widths only, FRONT the section's shape. TOP is drawn about 9 % shorter than SIDE, so TOP x is stretched onto SIDE x. The bottom-right view is a second front view (same windows, acoustic rings) and is not used. - Silhouette overlap with the sheet (`v09_overlay_*`): **SIDE 0.919, FRONT 0.887, TOP 0.870** (IoU; the loss is mostly the arms' pose, which differs per view on the sheet, and FRONT's top drawn 8 px lower than SIDE's). - Every opening is where the sheet draws it: the front upper and lower windows (FRONT), the raked upper side windows and the lower nose windows (SIDE), the roof window (TOP), the hatch (TOP ring, SIDE dome). The lettering AETHEL-9 / TERRAFORMING UNIT 02 sits in SIDE's box (x 431-561) on both flanks, reading from each side; seen from above it lands where TOP draws it. ## What it is, part by part - **Hull**: one quad grid (121 rows x 112 columns) on one analytic surface (SIDE's lines, TOP's widths, FRONT's outline as the section). Each of the seven windows and the hatch opening is a rectangle of the grid, its border pinned on the drawn outline; the rest of the grid follows by a Laplace solve and Winslow smoothing (no folded quads). The UVs are the surface parameter (round the hull, along it), so the painted maps are drawn straight from the sheet: panel seams, the vent slots, the trapezoid intake, the lettering. Nose and stern closed by quad caps (under the lidar belt and the stern cap). - **Windows**: a constant-section frame swept round each hole (a raised lip over the skin, the sleeve down to the cabin lining), clear glass slabs 16 mm thick set 30 mm in. - **Nose**: the lidar belt round the nose (SIDE 232-265 x 226-250) with the two double lamps and the centre display (FRONT), the chin box with two lamps under the lower window. - **Lower thrusters** (x2): a ducted fan intake (FRONT's purple-rimmed discs, two glowing rings round it as SIDE draws) on a nacelle that is the fan's circle joined to an inboard box, so FRONT shows only the fan discs and SIDE the module's top edge at y 262; a control panel and a slatted grille on its flank; its tail under the upper thruster. - **Upper thrusters** (x2): short ducts with their fans (FRONT +-126 px) on a fairing (SIDE's "thruster module" box). - **Flanks**: the light strips (purple, emissive) as SIDE and TOP draw them, the pill-shaped lamp housings with their forward lamps (FRONT's lamps at +-107 px). - **Top**: the roof window and the block aft of it, the hatch (a domed lid, hinged aft), the dorsal fin with the sheet's triangle mark (the small text under it is not readable and is left out). - **Stern cap** with the exhaust glow and the side slots. - **Manipulator arms** (x2): on collars on the hull's lower front flanks (SIDE's shoulder ring at x 288), upper arm, elbow, forearm, wrist, two-finger claw, open as drawn. - **Cabin** (seen through the glass): lining, floor, two bucket seats side by side (FRONT's two pilots), the dashboard under the front glass, the centre console, the ladder under the hatch, ceiling light bars. No figures. ## Rig (sliders on `Aethel_Root`, simple-expression drivers) | slider | range | moves | |---|---|---| | `hatch_open` | 0..1 | the lid, up to 110 deg about its aft hinge | | `fans_rpm` | 0..600 | the four rotors spin with the frame | | `arm_L_yaw` / `arm_R_yaw` | -20..30 deg | the upper arm about Z | | `arm_*_shoulder` | -40..70 deg | the upper arm about its local X | | `arm_*_elbow` | -50..80 deg | the forearm | | `arm_*_wrist` | -180..180 deg | the wrist, about the forearm's axis | | `arm_*_claw` | 0..1 | the two fingers close (0.45 rad each) | The arm ranges are the clear region the checks found (the folded-up poses reach into the nose). ## Checks (`build/checks/motion.json`; scripts below) | check | result | |---|---| | topology (`ae_audit.py`) | all quads except 80 pole triangles; no n-gons, slivers under 0.2 mm, zero-area faces or inconsistent winding | | normals | hull skin 100 % out, lining 100 % into the cabin (`ae_hullmesh.check_orientation`); every other piece outward by signed volume; renders with and without backface culling differ only in stray edge pixels | | rotors, a full turn in 10 deg steps | radial clearance to the duct 9.2 mm (lower), 12.6 mm (upper); 15 mm or more to the stators | | hatch, shut to open | 126 mm from the fittings, 21.6 mm from the skin | | arms, each slider over its range, a 168-pose shoulder x elbow grid, a 245-pose yaw x shoulder x elbow grid, both sides | no point inside the hull, the chin or the nacelles, nothing within 5 mm of the fittings (the sliders were proven to move the arm 1.03 m first) | | collision | 19 convex hulls (`UCX_`), 38-117 vertices each, convex within 5.4 mm | | FBX | every file imported back: object counts, UCX, both UV layers, pivots at the origin for moving parts | ## Meshes and materials 100,226 triangles in all: hull 27,144, fittings 30,614, interior (lining and cabin) 24,296, frames 7,252, glass 2,240, the moving parts 8,680. Two UV layers on every mesh: `UVMap` (UV0: the hull's surface parameter for its painted set; arc lengths on the parts) and `UV_Tile` (UV1, metres, box projected) for the tiling sets: the user's Season 2 pack **ScratchedMetal** under the paints, **StainedSteel** on bare metal (read in place from `models/vessel-interior/textures`), the CC0 leather scan on the seats (`models/vessel-interior/source_textures/leather_white`). Nothing downloaded. Paint colours are mine (the sheet is a blueprint): white hull, graphite thruster bodies, dark frames, purple light strips and fan rims as the sheet's glow lines. ## Build (headless, one Blender at a time, below-normal priority) ``` sh build/run_all.sh (audit, paint the hull set, build, surfaces + occlusion bake, motion checks, export) python build/run_blender.py build/ae_render.py Tender_Aethel.blend -- studio v09 python build/run_blender.py build/ae_render.py Tender_Aethel.blend -- views v09 ; python build/ae_compare.py v09 ``` The geometry is plain numpy (`ae_lib.py` the sheet's numbers, `ae_hull.py` the grid, `ae_hullmesh.py`, `ae_parts.py`, `ae_geo.py`), so a change is made there and the chain re-run; `ae_build.py` only turns it into objects and the rig. ## Not done / open - Not a Tender: no docking clips and no moon pool checks (the user can ask; the interface is in `making-a-model-a-tender`). - Not in Unreal; no LODs. - From the sheet, still simpler than drawn: the lower module's small panel lines and the "DATA ENGINE ..." strip text (not readable), TOP's dotted "acoustic resonator array" patch, the sheet's pilots (no figures by rule). The arms rest straight forward; TOP draws them curving outward.