# Aethel-9: a two-seat sub after the user's blueprint sheet and concept render 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. **Concept pass (same day).** The user then sent the concept render `reference/user_concept.jpg` (*"this was the idea now try to make it look similar as possible"*, then *"no only the model needs to be exact so topology and mesh correct it accordingly and texture it"*): no scene is built; the model's shape and textures follow the concept. A camera was fitted to the concept from 17 landmarks (`build/ae_concept_fit.py`, 7 px mean error) as a measuring tool only; the model rendered from it beside the concept is `previews/compare/c06_concept_cy_pair.png`. The concept agrees with the blueprint's proportions within a few pixels (fans, lamps, fin, hatch, front window); what it changes is the styling, so the blueprint's dimensions stay and the concept rules the look and the details: - **hull section**: a flat roof with a crisp chamfer to near-vertical flanks (two creases on grid columns, so they stay sharp), a blunter nose; no roof window (the concept has a vented **hood** there), a thin step plate behind it; - **lower flank plates** under the lower light strip: a raised armour plate with the concept's lit shelf; - **upper thrusters** as closed nacelles hung under short swept **wings** (SIDE's trapezoid is the wing seen edge-on); - **hatch** as the concept's loaf-shaped **turret** with a dark lens and a small amber light; - **arms** boxy and segmented (a piston on the upper arm, cylinder joints with silver caps, a parallel two-jaw gripper) on a bracket under each lower nose corner; the starboard arm's default pose is the concept's (it hangs lower); - **look**: dark blue-gunmetal paint worn to bare metal in scratches and chips (low on the flanks, the nose bottom, the stern), white lettering, broad blue-violet light strips, fans with blue rims, a pink ring deep in the bore and glowing hubs, big white lamps (a barrel lamp on each flank), dark glass with the cabin lit blue behind it. The first, white blueprint-only version is kept in `versions/v01_blueprint_white/` (blend, textures, layout, README). ## 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/v10_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/c06_concept_cy_pair.png`, `_overlay.png` | **the concept beside the model rendered from the concept's fitted camera**, and the model's outline on the concept | | `previews/compare/v09s_lookalike.png` | each sheet view beside the first (white) model in the same framing and scale | | `previews/compare/v10_overlay_*.png` | the model's outline (red) and the sheet's silhouette (yellow) on the sheet, with IoU | | `previews/v10_topo_*.png` | wireframe over the shading | | `reference/` | the sheet and the concept, zooms (`z2_`, `z3_`, `z4_*`; `z4_c*`, `z6_croof` of the concept), 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 (`v10_overlay_*`): **SIDE 0.914, FRONT 0.903, TOP 0.874** (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, the concept's section: flat roof, chamfer, near-vertical flanks, rounded belly; the chamfer's two creases lie on grid columns). Each of the six 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 lettering, the wear. 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), 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 (blue lip, a pink ring deep in the bore, a glowing hub, two blue-violet rings round the outside 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 wing. - **Upper thrusters** (x2): closed nacelles (FRONT +-126 px) with a five-bladed fan behind a blue lip, hung under a short swept wing from the flank (the concept; SIDE's trapezoid 536-595 x 219-236 is the wing edge-on). - **Flanks**: the light strips (broad blue-violet glow, as SIDE, TOP and the concept draw them), the raised lower plate with its shelf under the lower strip, a barrel lamp on each flank (FRONT's lamps at +-107 px). - **Top**: the vented hood over the canopy (the concept; the blueprint's roof window), the thin step plate behind it, the hatch as a loaf-shaped turret with a dark lens (hinged aft), the dorsal fin with the sheet's white triangle mark. - **Stern cap** with the exhaust glow and the side slots. - **Manipulator arms** (x2): on a bracket under each lower nose corner (FRONT's |X| ~ 47 px), a cylinder shoulder joint, a boxy upper arm with a piston, an elbow joint, a boxy forearm, a wrist roll drum, a parallel two-jaw gripper. - **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, blue 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..17.5 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 (starboard defaults: elbow 62.6, shoulder -7.4, the concept's pose) | | `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 96 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), 10.5 mm (upper); 15 mm or more to the stators | | hatch (turret), shut to open | 65.5 mm from the fittings, 26.4 mm from the skin | | arms, each slider over its range, a 168-pose shoulder x elbow grid, a 294-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 proven to move the arm 1.09 m first); yaw cut from 30 to 17.5 deg where the new arm touched | | collision | 19 convex hulls (`UCX_`), up to 117 vertices each, convex within 4.8 mm | | FBX | every file imported back: object counts, UCX, both UV layers, pivots at the origin for moving parts | ## Meshes and materials 107,138 triangles in all: hull 27,604, fittings 39,086, interior (lining and cabin) 25,440, frames 6,104, glass 1,920, the moving parts 6,984 (arms, rotors, turret). 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 (its dark scratch lines become bright bare metal; thresholds set from its linear luminance), **StainedSteel** on bare metal (read in place from `models/vessel-interior/textures`), the CC0 leather scan on the seats. Nothing downloaded. Emissive materials: `GlowStrip`/`GlowStripSide` (light strips), `GlowFan`, `GlowFanHot`, `GlowFanDim`, `GlowHub` (thrusters), `Lamp`, `LampAmber`, `LampSoft` (cabin), `Screen`; the glass carries a faint blue glow. ## 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 v10 python build/run_blender.py build/ae_render.py Tender_Aethel.blend -- views v10 ; python build/ae_compare.py v10 python build/run_blender.py build/ae_render.py Tender_Aethel.blend -- concept_cy c06 ; python build/ae_concept_compare.py c06 concept_cy ``` 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 concept, left out as scene or effect, not model: the glow halos and bloom, the swirling energy rings in front of the fans, the bubbles, the seabed rings, the pilot. The concept's unreadable small texts (the nacelle's slanted strip, the line under the fin's mark) are not copied. - The concept is not symmetric (its two arm shoulders sit at different places); the model is, with the arms at the average.