# Physical Factory visual assets

The baseline assets were built with Blender 4.2.23 LTS and exported as glTF 2.0 GLB in metres. Sedan revision 3 retains the baseline Blender body/roof/arches and adds original Three.js detail geometry; the remaining assets are unchanged. The browser loads these meshes; Blender is not required on the visitor's device. The editable `physical-factory-assets.blend` and reproducible authoring script `scripts/blender/build-factory.py` are included in the source repository.

## Asset definitions

- `sedan.glb` revision 3: original generic 4.6 m sedan, continuous body panels, wheel arches, curved glazing, mirrors, wheels, brake discs, grille, lamps. The original body silhouette is retained; four new rounded tyre/alloy groups, cabin seats/dashboard, lamp lenses, light guides and rear registration surround are added. The reproducible refinement is `scripts/models/build-sedan.mjs`, baseline mesh `scripts/models/source/sedan-v2.blender.glb`. The `.blend` is the baseline, not the updated sedan revision. No branded vehicle geometry or implied OEM dimensional certification.
- `worker.glb`: MakeHuman CC0 anatomical base, original fitted workwear/vest/helmet, articulated skeleton and distance-driven walk animation. Height about 1.79 m including helmet. Graphical source commit and hashes: `human-source.json`. Helper/body reference meshes are excluded from export.
- `amr.glb`: original generic 650 × 850 mm roller-top AMR. No manufacturer identity or certified hardware specification.
- `table.glb`, `conveyor-long.glb`, `conveyor-short.glb`, `cnc.glb`, `rack.glb`: original manufactured detail, frames, bearing rollers, levelling feet, enclosures, operator panel, shelf bracing and cartons.
- `factory-shell.glb`: original 24 × 16 m factory shell, columns, clerestory windows, service pipes, LED luminaires and separate roof structure. Roof starts hidden as a process cutaway; use the structure control to show it.
- UR5e/UR10e are unchanged official nominal meshes and kinematics under `/robots/ur/`, not replaced with guessed robot silhouettes.

## Rendering and runtime

WebGL uses PBR metallic/roughness, environment reflections, filmic tone mapping and directional shadow maps. Blender procedural noise nodes are authoring details; they are not claimed as baked glTF textures. No downloaded photographic skin texture is included. On devices without WebGL, a CPU triangle/depth renderer displays the same meshes with simpler lighting, without PBR reflections, texture mapping or shadow maps.

Manufactured meshes are joined by material to reduce mobile draw calls. Repeated instances share geometry/materials. Worker instances clone the skeleton. Wheels and gait are driven by travelled distance; robot link transforms and held part poses continue to come from the existing simulator state. Cosmetic meshes do not change authoritative collision geometry or the learned policies.

## Evidence and boundaries

`manifest.json` records each GLB byte count and SHA256. The source `.blend` is editable, not a screenshot substitute. Factory geometry is a generic authored environment, not a surveyed customer's factory. Detailed robot joint contacts, articulated contact dynamics, real sensors, live MES and physical robot operation require separate integration and verification. This visual update makes no new ASLA 1.0–3.0 validation claim.

## License

Original additional geometry/materials/rig: authored for this project. MakeHuman graphical base asset: CC0-1.0; program source is not incorporated. CC0 asset attribution retained voluntarily: Data Collection AB, Joel Palmius, Jonas Hauquier (2020). Upstream licenses are included as `MAKEHUMAN_LICENSE.md` and `MAKEHUMAN_ASSETS_LICENSE.md`. Three.js r180 loader/utilities/environment retain the project's Three.js MIT license.

## Automated production revision

Factory defaults contain four nominal UR arms, two AMRs and storage racks. Default people and cars from old layouts migrate out without deleting orders or added safety-test actors. Orchestration now includes the second UR receiving from the shared fixture and final AMR shipping for small batches. The receiving arm moves to an IK standby while the first arm prepares the handoff; material ownership still passes through the fixture in sequence. No continuous arm-arm contact solver is claimed.

`pedestrian.glb` is an additional rigged civilian variant without helmet or high visibility vest; road gait follows actual simulated distance. Car paint is instanced by traffic role. Gangnam facade patterns and road lanes are authored visual estimates over the OSM footprint, not surveyed facades or an HD lane map. Underground building tags are retained and excluded from above-ground geometry. The painted scenario crossing at the simulator's walker anchor is a synthetic test crossing, distinct from OSM crossing positions.

The former 2D learning fleet view now loads the same detailed AMR/rack/conveyor mesh assets and renders actual learning-runtime coordinates, payload flags, paths and accepted transfers. It does not invent manipulator learning. The process workcell continues to run its separate nominal UR kinematic engine.

## 2026-11-02 geometry revision

The AMR revision 2 GLB splits four wheels and five load rollers into independent pivots, preserving the revision 1 geometry. `scripts/models/rig-amr.mjs` reproduces the export from the retained Blender-derived baseline; the `.blend` source is the original static revision, not the new rig. This is not a new vendor AMR model. Wheel angle follows executed travel and yaw; load rollers follow part movement relative to the deck. Metal roughness uses a procedural brushed texture.

`cell-geometry.mjs` now supplies conveyor lengths to execution, support planes and the workcell renderer. The measured AMR envelope is 690×890×830mm. Docking leaves 80mm between its deck and fixed rollers. Rotation and translation are checked against planar equipment envelopes. UR peers use conservative capsules derived from nominal vendor mesh bounds, sampled along joint motion; the receiver stays parked until the previous arm withdraws and releases the shared fixture. These are interference guards, not a certified safety controller or a complete mesh contact/self-collision solver. Custom factory layouts also use clipped transfer lines and common docking points for input/output on the pallet cell.

## Fabrication modeling revision — 2026-11-02

The warehouse rack is now a newly authored, material-batched GLB (`scripts/models/build-industrial.mjs` / `public/industrial-modeling.mjs`), with channel uprights, punched slot faces, bolted footplates, diagonal bracing, beam connectors, support rails, timber block pallets and individually sealed cartons. Cartons include geometry for tape, thermal label panels, barcode bars and handling arrows; labels are illustrative, not scanned inventory records. Kraft and timber use procedural fibre/grain maps. Rack exports use eight material batches; this is Three.js geometry authoring, not a new Blender export or a scanned factory.

Conveyor meshes retain their roller/leg geometry and receive drive gearboxes, finned motors, roller bearings, fasteners and photoeyes. The generic AMR receives service covers, cooling vents, scanner windows and emergency buttons within the existing collision envelope. Process installations add cabinet doors/louvres/isolators/conduits, HMI stands, a drilled transfer fixture and locator/clamp details. The generic 180mm TCP gripper now has a tool flange, slide housing, guide rails, pneumatic connectors, bolted replaceable fingers and pads. Nominal UR vendor meshes, FK/IK, state-driven jaw opening and learning/production execution remain unchanged. These added components are visual engineering details, not new sensor IO or calibrated tooling.

The learning fleet opens from a raised overview so six rack bays cannot hide the whole traffic aisle. Rack/package close-up and closer robot tracking are available. A perimeter hall with shutter doors, portal columns, protective bollards and high-level windows supplies physical warehouse context without adding people to production.
