# Veiled robot (working name) A humanoid robot after five reference renders from the user (2026-10-19, `reference/1-5.jpg`): *"can you 3d model a robot in these picture, without the compound bow using blender mcp"*, then *"also without that fiber mesh on its head"*. So: no bow, no arrows or back quiver (they go with the bow), no camouflage net. The head the net hid is my own design: a tall armoured skull with a face plate, two amber eye lights and ear pods. The maker name and logos on the renders are not copied; the markings are generic stencils (`UNIT 07`, `R7-341J`, a boxed 7, a ring emblem, chevrons, a gauge). Not imported into Unreal. Not placed anywhere. The user has not said what it is for in the game. ## Files - `VeiledRobot.blend` - the model, rig, decals and a grey studio (collection `VR | Studio`). - `fbx/SK_VeiledRobot.fbx` - skeletal mesh: rig + 77 parts + 24 decal quads, rest pose, modifiers applied. - `textures/T_VR_Decals.png` (+ `.json` regions) - the stencil atlas, white on alpha. - `previews/VR_01..05` - final Cycles renders (relaxed stance); older check renders beside them. - `build/` - everything is generated: - `vr_build.py` `build()` - skeleton + parts (left side built, right side mirrored). - `vr_decals.py` `place_all(ns)` - decals cast onto the plates by ray. - `vr_look.py` `apply_all()` - materials and the studio. - `vr_check.py` `check()` - parts on different bones must not intersect; topology count. - `vr_range.py` `run(ck)` - joint travel sweep. `vr_pose.py` `pose_ref()` / `rest()`. - `vr_decal_atlas.py` - makes the atlas (system Python + PIL). Order in Blender: build, decals, look (each `exec` into a namespace; see the scripts' heads). ## Scale, skeleton, pivots - 1.925 m to the top of the head, metres, faces -Y, character's left = +X, feet on z = 0. - 53 bones with **UE5 mannequin names** (root, pelvis, spine_01-03, neck_01, head, clavicle, upperarm, lowerarm, hand, 5 fingers x 3, thigh, calf, foot, ball), so retargeted mannequin animations can drive it. Rest pose is an A-pose, arms 47 degrees down. - Every part is its own object, skinned 100 % to one bone (rigid robot segments); object origins at the world origin, the bones are the pivots. ## Checks (scripted, all passing) - Rest pose: 0 intersections between parts on different bones; 4,236 quads, no triangles, no n-gons in the base meshes (43k triangles after the 2-segment bevels). - Joint sweep, clean at: hip flex 90 forward / 20 back, hip out 30 / in 8, knee 120, ankle -25/+30, shoulder forward 75 (arm forward to horizontal clean), up/down 40, elbow 120, wrist +-50 / +-30, neck +-25, head turn +-60, waist lean 25, chest lean 15, full fist. - Limits found and kept: the arm swung inward across the chest by 90 meets the chest plate; elbow stops at 120 (130 hits); legs cross each other past 8 degrees inward. ## Surfaces - honest limits - Armour: Poly Haven `blue_metal_plate` (CC0, `models/pressure-door/source_polyhaven`) turned grey and tinted dark olive, box-projected; edge wear (Bevel node) and crevice dirt (AO node) are **Cycles-only and not baked**. Black satin mechanics, glossy red fingertips, emissive eyes. - UVs: one smart-projected `UVMap` per part. No shared atlas and no baked texture set yet. - The look in Unreal will need that bake (or a material using the scan + vertex masks).