Cargo Hauler Model (#599)
Overview
The cargo hauler is the faction reference design — an open-frame industrial bulk carrier with exposed structural trusses, externally-mounted cargo pods, and a dorsally-offset command module. The design replaces the earlier “3 stacked boxes with pods” with a detailed industrial silhouette featuring ~250 meshes built from Three.js primitives.
Design language matches the outpost and fast frigate: gray metal tones, exposed structural elements, utilitarian construction.
Scale
- Built at meter scale (1 unit = 1 m), then scaled by
shipVisualScale(SVS) - Overall extent: ~70 m along Y-axis (forward), ~24 m across X (with radiator booms), ~12 m Z
- Model Y-axis = ship forward direction
Immutable Constraints
These values are physics-dependent and must not change:
- RCS pod positions:
[±5, ±5, ±24]— 8 corner pods - Engine plume group named
'enginePlume', dual plumes at X=±3 - Nav lights group named
'navLights' _addRCSPods()call with same position array and parameters
Materials (12)
All materials use MeshStandardMaterial unless noted.
| Name | Color | Metalness | Roughness | Notes |
|---|---|---|---|---|
| hullMat | 0x666666 | 0.7 | 0.4 | Main hull panels |
| hullDarkMat | 0x555555 | 0.7 | 0.5 | Worn/recessed panels |
| cmdMat | 0x777777 | 0.6 | 0.3 | Command module |
| frameMat | 0x555555 | 0.8 | 0.3 | Structural trusses |
| podMat | 0x887744 | 0.5 | 0.5 | Cargo containers |
| doorMat | 0x776633 | 0.5 | 0.6 | Cargo doors |
| tankMat | 0x5a5a6a | 0.6 | 0.4 | Fuel tanks |
| radiatorMat | 0x334455 | 0.3 | 0.6 | Heat radiators (DoubleSide) |
| pipeMat | 0x5a5a5a | 0.6 | 0.4 | Fuel/coolant piping |
| nozzleMat | 0x333333 | 0.9 | 0.2 | Engine internals |
| glassMat | 0x112244 | 0.9 | 0.1 | Viewports (emissive: 0x0a1828) |
| dockMat | 0x887744 | 0.5 | 0.5 | Docking collar hardware |
Structure
A. Structural Spine (replaces solid box spine)
Open-frame truss backbone running the full ship length.
- 4 longitudinal rails:
BoxGeometry(0.8, 60, 0.8)at [±3.5, 0, ±3.5] - 6 structural rib rings at Y = −25, −15, −5, 5, 15, 25
- Outer frame:
BoxGeometry(8, 0.5, 8)(hullDarkMat) - Cross members: 2 per ring,
BoxGeometry(7, 0.4, 0.4)andBoxGeometry(0.4, 0.4, 7)(frameMat)
- Outer frame:
B. Command Module (Y=+18 to +30, offset +1.5 Z dorsal)
Dorsally-offset for asymmetric silhouette.
- Main hull:
BoxGeometry(8, 10, 7)at (0, 24, 1.5), cmdMat - Side hull plates:
BoxGeometry(0.15, 9, 6)on port/starboard faces (hullDarkMat) - 3 viewport strips on forward face:
BoxGeometry(6, 0.2, 1.0)at Y=26.5, 24.5, 22.5 (glassMat) - Accent band:
TorusGeometry(4, 0.3, 8, 16)at forward face, rotated 90° about X (frameMat) - Dorsal sensor dome:
SphereGeometry(1.2, 8, 6, 0, 2π, 0, π/2)at (0, 29.5, 4) (cmdMat) + mastCylinderGeometry(0.15, 0.15, 3)(frameMat) - Forward antenna mast:
CylinderGeometry(0.2, 0.2, 6)at (0, 33, 1.5) (frameMat) - Comm dish:
ConeGeometry(2, 1.5, 8)inverted at top of mast, rotated π (cmdMat)
C. Aft Engineering (Y=−18 to −30)
- Engineering hull:
BoxGeometry(7, 10, 7)at (0, −23, 0) (hullMat) - Reactor housing:
CylinderGeometry(2.5, 2.5, 8, 10)at (0, −23, 4.5) dorsal (tankMat) - Engine mount frame:
BoxGeometry(10, 1.5, 4)at (0, −29, 0) (frameMat)- Stiffeners: 2×
BoxGeometry(0.4, 4, 3)at X=±4 (frameMat)
- Stiffeners: 2×
- Dual engine bells (improved):
- Outer bell:
CylinderGeometry(2.0, 4.5, 7, 12)at X=±3, Y=−33 (frameMat) - Inner nozzle:
CylinderGeometry(1.4, 3.6, 5.6, 10)offset −0.3 Y (nozzleMat) - Nozzle lip ring:
TorusGeometry(4.5, 0.3, 6, 16)at bell bottom edge (nozzleMat)
- Outer bell:
- Fuel feed pipes: 2×
CylinderGeometry(0.3, 0.3, 8)from tanks to engine area (pipeMat)
D. Cargo Frame & Pods (Y=−12 to +12)
External frame with 4 large cargo pods.
- 4 outer frame rails:
BoxGeometry(0.6, 28, 0.6)at [±6, 0, ±6] (frameMat) - 3 cross-member rings at Y = −10, 0, 10:
- X-bars:
BoxGeometry(12, 0.4, 0.4)at Z=±6 (frameMat) - Z-bars:
BoxGeometry(0.4, 0.4, 12)at X=±6 (frameMat)
- X-bars:
- 4 cargo pods at (±9, 0, ±5):
BoxGeometry(8, 24, 8)(podMat)- Door panel:
BoxGeometry(0.2, 16, 6)on outward X face (doorMat) - Door frame bars: 2×
BoxGeometry(0.25, 16, 0.3)flanking door (frameMat) - 3 horizontal latch bars:
BoxGeometry(0.3, 0.3, 6.5)at Y offsets (frameMat) - 2 mounting pylons:
BoxGeometry(0.5, 3, 0.5)connecting pod top/bottom to frame (frameMat)
- Door panel:
E. Fuel Tanks (ventral, alongside aft spine)
- 2 cylindrical tanks:
CylinderGeometry(2.0, 2.0, 20, 10)at (0, −8, ±4.5) (tankMat) - End cap domes:
SphereGeometry(2.0, 8, 6)scaled (1, 0.4, 1) at tank ends (tankMat) - Mounting strap torus:
TorusGeometry(2.2, 0.2, 6, 12)at 3 positions along each tank (frameMat) - Transfer pipes:
CylinderGeometry(0.25, 0.25, 10)angled to engine section (pipeMat)
F. Radiator Panels (port/starboard on booms)
- 2 large panels:
BoxGeometry(0.12, 18, 10)at X=±12 (radiatorMat, DoubleSide) - Panel subdivision lines: 3 horizontal
BoxGeometry(0.14, 0.15, 10)per panel (frameMat) - Deployment booms:
CylinderGeometry(0.3, 0.3, 6, 6)connecting spine to panels (frameMat)- Rotated Z = ±π/2 at Y = −5, 0, 5
- Hinge joints:
SphereGeometry(0.5, 6, 6)at boom-panel connection points (frameMat)
G. Ventral Docking Port (Y=−8, Z=−6)
- Docking collar:
CylinderGeometry(2.0, 2.0, 3, 12)rotated π/2 about X (dockMat) - Lip ring:
TorusGeometry(2.0, 0.25, 6, 12)at collar end (frameMat) - Guide rails: 2×
BoxGeometry(0.3, 0.3, 4)flanking port (frameMat) - Approach beacons: 2×
SphereGeometry(0.4, 6, 6)with MeshBasicMaterial 0x00ff88 (self-illuminating)
H. Antennas & Sensors
- Main comm dish: on angled boom from forward dorsal (see section B)
- Aft whip antenna:
CylinderGeometry(0.1, 0.1, 5)at (0, −30, −4) ventral (frameMat) - 2 sensor housings:
BoxGeometry(1.5, 1.0, 1.5)flanking command module at (±5, 26, 1.5) (hullMat)- Glass lens:
SphereGeometry(0.4, 6, 6)on forward face (glassMat)
- Glass lens:
I. Surface Greebles
- ~6 equipment boxes on engineering hull:
BoxGeometry(1.0, 0.6, 1.5)on various faces (hullDarkMat) - Hull panel overlays on cargo pods:
BoxGeometry(4, 0.15, 3)on top + forward faces (hullDarkMat)
J. Navigation Lights (6 total)
Named group 'navLights' — blinks on existing 2-tick/8-tick cycle.
| Light | Color | Position | Notes |
|---|---|---|---|
| Port red | 0xff0000 | (−13, 0, 10) | Outer cargo pod corner, port |
| Starboard green | 0x00ff00 | (13, 0, −10) | Outer cargo pod corner, starboard |
| Forward white | 0xffffff | (0, 36, 1.5) | Antenna mast tip |
| Aft amber | 0xffaa00 | (0, −37, 0) | Below engine bells |
| Dorsal white strobe | 0xffffff | (0, 32, 4) | Sensor dome mast top |
| Ventral white strobe | 0xffffff | (0, −8, −8) | Below docking port |
K. Engine Plumes (triple-layer)
Named group 'enginePlume'. Dual plumes at X=±3.
| Layer | Color | Opacity | Radius factor | Height factor |
|---|---|---|---|---|
| Outer | 0x4488ff | 0.7 | 1.0× | 1.0× |
| Inner | 0xaaddff | 0.8 | 0.6× | 0.6× |
| Core | 0xddffff | 0.9 | 0.3× | 0.35× |
Base plume radius = bell bottom radius (4.5). Base plume height = 24.
L. RCS Pods
Unchanged positions. _addRCSPods() called with:
- Positions:
[±5, ±5, ±24](8 corners) - Parameters:
1.5, 1.0, 0.3, 3.0, 0.6
Integration struts: 8× BoxGeometry(0.2, 0.2, length) connecting each pod to nearest cargo frame rail (frameMat). Rotated as needed to bridge the gap.
M. Ventral Keel
Provides clear top/bottom distinction.
- Keel beam:
BoxGeometry(1.5, 40, 0.8)at (0, 0, −5) (frameMat) - 3 keel ribs:
BoxGeometry(3, 0.4, 1.5)at Y = −10, 0, 10 crossing beam (frameMat)
Estimated Mesh Count
~250 meshes total (up from ~60). Comparable complexity to the outpost model. All simple primitives — renders efficiently.
Unchanged Behavior
- Nav light blink pattern (2 on / 8 off) — unchanged
- RCS pod visual activation — unchanged
- Engine plume visibility toggle — unchanged
- Ship cockpit camera position — unchanged
- Ship physics (mass, inertia, thrust) — unchanged