# Gear3D vehicle body assets

These are illustrative visual models, not measured manufacturer CAD. They are
separate from the cited axle/gear data. Assets are served locally and loaded only
when Show vehicle body is enabled. No original textures or liveries are shipped.

## Aircraft

* **B737.glb, A380.glb, B787.glb, A320.glb, A350.glb**: AMV Lab, [aircraft-models](https://github.com/amvlab/aircraft-models), plain/logo-free variants. [Creative Commons Attribution 4.0](https://creativecommons.org/licenses/by/4.0/).
* **B747.glb**: [“boeing 747” by zairiq-123](https://sketchfab.com/3d-models/boeing-747-9b16672038ba48f98e6d80a159044ed9), [Creative Commons Attribution 4.0](https://creativecommons.org/licenses/by/4.0/). Downloaded from [God's Eye View's prepared asset](https://github.com/bilawalsidhu/gods-eye-view/blob/main/public/models/README.md), which already simplified geometry/materials and baked orientation and scale.

CEE-406 changes: textures/materials removed; node transforms baked; nose oriented
toward render -Z; longitudinal origin moved to the nose; position/normal buffers
re-exported as GLB. Triangles retained. Runtime adds a dimmed material and scales
and places the body using representative gear stations (13% and 54% of body
length). These stations are assumptions, not manufacturer measurements.

The 737 gear uses the 737 body, the 747 variants use the 747 body, and the A380
uses the A380 body. The 757 uses a representative 737 silhouette; the 767
uses a representative 787 silhouette. These substitutions are named in the UI;
they do not claim variant-specific wing, fuselage or engine dimensions.

## Road vehicles

* **sedan.glb, truck.glb, delivery.glb, delivery-flat.glb, trailer.glb**: [Kenney Car Kit 3.1](https://kenney.nl/assets/car-kit), [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/). `truck` is the pickup body. `delivery` supplies a rigid truck; `delivery-flat` supplies the tractor/cab reference.
* **bus.glb**: Quaternius, [Public Transport Pack](https://quaternius.com/packs/publictransport.html), [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/). Converted from the author's original Bus.obj.
* **motorcycle.glb**: AliceCassie, [Cartoony Purple Motorcycle](https://poly.pizza/m/j20srJUjpB), [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/).

CEE-406 changes: separate wheel meshes removed from Kenney and Quaternius models;
wheel-region triangles removed from the motorcycle's combined meshes; textures
and materials replaced (bus surface names retained); transforms and orientation baked; GLB re-exported. Road
body wheel stations come from source wheel centers (motorcycle centers were
identified from the mesh). Runtime stretches the wheelbase to the selected axles,
preserves overhang proportions relative to width, and adapts height and width.
The trailer asset crops the original delivery-truck cargo shell above its wheel
wells and behind the cab, preserving the retained source surfaces. Runtime
stretches that cargo shell around the selected trailer axle groups. Body
placement and trailer proportions remain illustrative.

## Reuse and figures

Retain the aircraft credits, license links, and modification statement when
redistributing these models or figures made with them. The credits do not imply
endorsement by any original creator.

See [`docs/gear3d-body-review/README.md`](https://github.com/ictuillinois/CEE-406/blob/main/docs/gear3d-body-review/README.md)
in the CEE-406 repository for the render comparisons and limitations.

Runtime refinements include bus glazing/trim, doors, mirrors, lamps, roof equipment, enlarged tractor cabs, chassis details, open dump beds and subtle aircraft intake shading. These additions are illustrative and do not alter engineering exports.


## Authored conventional tractor and trailers

Classes 8–13 now use local procedural meshes rather than the stretched delivery-flat cab and cropped trailer GLB. Proportions reference the [Cascadia 126 specification sheet (June 2024), page 2](https://www.freightliner.com.au/siteassets/documents/cascadia-spec-sheet-126-2024.pdf): 3,220 mm day-cab BBC, 4,520 mm 60-inch XT sleeper BBC, 3,455 mm XT cab height and 1,315 mm front overhang. The hood, cab, glazing, fenders and trailer details are original simplified interpretations. No Freightliner mesh, logo or texture is distributed. These are illustrative conventional trucks, not exact Freightliner replicas. Existing GLB credits and comparisons remain applicable to the retained assets only.

The reviewed A320, A350 and 787 entries use their matching AMV family mesh.
Their runtime uniform scale uses manufacturer length and nose-to-nose-gear
distance; source proportions and triangles are retained. A family mesh is not
variant-specific CAD, so wingspan and wing/engine stations remain illustrative.
Unknown aircraft families receive no substitute body.

## Additional aircraft: FlightGear / Flightradar24 (GPL v2)

A319.glb, A321.glb, A330-200.glb, A330-300.glb, A220-100.glb,
A220-300.glb, B777.glb, E170.glb, E190.glb, CRJ700.glb, CRJ900.glb,
DHC8-400.glb, ATR42.glb, B757-200.glb, B757-300.glb, B767-200.glb,
B767-300.glb, B767-400.glb, B737-600.glb, B737-700.glb and B737-900.glb are adapted from the FlightGear/FGMEMBERS
contributors' aircraft, distributed by
[Flightradar24/fr24-3d-models](https://github.com/Flightradar24/fr24-3d-models).
These twenty-one derived assets are licensed under [GNU GPL v2](sources/GPL-2.0.txt).
The other assets retain their separately stated licenses above.

| Body | Upstream authors/project | Corresponding editable source and original GLB |
| --- | --- | --- |
| A319 | [FGMEMBERS A320-family](https://github.com/FGMEMBERS/A320-family) | [a319-source.zip](sources/a319-source.zip) |
| A321 | [FGMEMBERS A320-family](https://github.com/FGMEMBERS/A320-family) | [a321-source.zip](sources/a321-source.zip) |
| A330-200 | [FGMEMBERS A330-200](https://github.com/FGMEMBERS/A330-200) | [a332-source.zip](sources/a332-source.zip) |
| A330-300 | [FGMEMBERS A330-300](https://github.com/FGMEMBERS/A330-300) | [a333-source.zip](sources/a333-source.zip) |
| A220-100 | [FGMEMBERS CSeries](https://github.com/FGMEMBERS/CSeries), CS100 model | [cs100-source.zip](sources/cs100-source.zip) |
| A220-300 | [FGMEMBERS CSeries](https://github.com/FGMEMBERS/CSeries), CS300 model | [cs300-source.zip](sources/cs300-source.zip) |
| B777 | [FGMEMBERS 777](https://github.com/FGMEMBERS/777), 777-300 model | [b773-source.zip](sources/b773-source.zip) |
| E170 / E190 | [FGMEMBERS E-jet-family](https://github.com/FGMEMBERS/E-jet-family) | [e170-source.zip](sources/e170-source.zip), [e190-source.zip](sources/e190-source.zip) |
| CRJ700 / CRJ900 | [FGMEMBERS CRJ700-family](https://github.com/FGMEMBERS/CRJ700-family) | [crj700-source.zip](sources/crj700-source.zip), [crj900-source.zip](sources/crj900-source.zip) |
| DHC8-400 | [FGMEMBERS Q400](https://github.com/FGMEMBERS/Q400) | [q400-source.zip](sources/q400-source.zip) |
| ATR42 | [FGMEMBERS ATR-42-500](https://github.com/FGMEMBERS/ATR-42-500) | [atr42-source.zip](sources/atr42-source.zip) |
| B757-200 / B757-300 | [FGMEMBERS 757-200](https://github.com/FGMEMBERS/757-200) | [b752-source.zip](sources/b752-source.zip), [b753-source.zip](sources/b753-source.zip) |
| B767-200 / B767-400 | [FGMEMBERS 767](https://github.com/FGMEMBERS/767) | [b762-source.zip](sources/b762-source.zip), [b764-source.zip](sources/b764-source.zip) |
| B767-300 | [FGMEMBERS 767-300](https://github.com/FGMEMBERS/767-300) | [b763-source.zip](sources/b763-source.zip) |
| B737-600 / B737-700 / B737-900 | [FGMEMBERS 737NG](https://github.com/FGMEMBERS/737NG) | [b736-source.zip](sources/b736-source.zip), [b737-source.zip](sources/b737-source.zip), [b739-source.zip](sources/b739-source.zip) |

Changes by CEE-406: glTF 1 converted to glTF 2 with gltf-pipeline 4.3.1;
textures and materials removed; named gear nodes excluded; transforms baked;
identical x-ray surfaces combined into one mesh with shared vertices.
No triangle simplification. Runtime applies translucent materials and illustrative
placement. The 777-300 mesh represents the 777 family, including the 300ER gear
entry; it does not assert exact 300ER wingspan or engine geometry.

The source archives include the supplied editable Blender files, upstream ZIP
sources, original glTF inputs, and GPL license. Reproduction scripts are in
[the CEE-406 repository](https://github.com/ictuillinois/CEE-406/tree/main/scripts):
`convert-gear3d-fr24.mjs`, `build-gear3d-bodies.mjs`, and `gear3d-body-assets/`.
Archive and input SHA-256 hashes are recorded in [sources/manifest.json](sources/manifest.json).
Source archives are downloaded only when requested; they are never loaded by the viewer.

Regional-aircraft additions retain static propellers and the source surface detail.
The ATR42 source wing is over-wide: vertices beyond 6 source units from the
centerline are compressed laterally to the manufacturer's 24.572 m span at
22.67 m body length. Fuselage, nacelles, propellers and inner wing remain intact;
no triangles are removed by this correction. The archived original is unchanged.
Pixel comparisons use this explicitly corrected source as their reference.
Runtime ground height is calibrated for turboprops and CRJs, with illustrative
strut attachment heights for nacelle/sponson gears. These overlays are not CAD.

The five 757/767 models are pinned to FR24 commit
`dd53267690c6a4ecbb290a3acf0284333a5d68a9`. Each variant uses its own mesh.
The 757-200 source winglets are retained; its span therefore differs from the
non-winglet ACAP drawing. The 767-300 mesh represents the 300ER entry.
Engine options and mesh details remain illustrative. Ground attitude uses
the midpoint of each published tail-clearance range; attachment heights are
visually calibrated. No source geometry is stretched to create another variant.

The three 737 NG inputs use the same pinned FR24 commit. Original GLBs and
all supplied per-model editable files are retained unchanged in the archives.
The 737-600 input contains an orphaned, sub-centimeter nose decal primitive
(`rootNode_mesh_92`) 3.527 source units ahead of the fuselage; that primitive
is excluded so it cannot distort length-based placement. Other retained
triangles are merged without simplification. Pixel comparisons use that
explicitly filtered source, not the untouched input. Each body is scaled
uniformly to published overall length. Wingspan, engine details and clearances
remain illustrative. The 737-900 clearance floor raises the fitted tail about
214 mm above its target; wheel geometry is independent of that adjustment.

## Additional regional aircraft: editable AC3D sources (GPL v2)

E175.glb, E195.glb, CRJ200.glb and CRJ1000.glb are adapted directly from
FlightGear/FGMEMBERS editable AC3D aircraft. They are licensed under GNU GPL v2
(CRJ1000's source permits v2 or later). These are four additional derivatives;
the twenty-one FR24 derivatives above retain their original archives.

| Body | Authors/project, pinned commit | Corresponding editable source |
|---|---|---|
| E175.glb / E195.glb | [FGMEMBERS E-jet-family](https://github.com/FGMEMBERS/E-jet-family/tree/45be9f83c479c5df6a03b117513aae740ffe9cc3) | [e175-ac3d-source.zip](sources/e175-ac3d-source.zip), [e195-ac3d-source.zip](sources/e195-ac3d-source.zip) |
| CRJ200.glb | [FGMEMBERS CRJ-200](https://github.com/FGMEMBERS/CRJ-200/tree/393440fa957ea1763dc63c969363a24aa829cf6d) | [crj200-ac3d-source.zip](sources/crj200-ac3d-source.zip) |
| CRJ1000.glb | [FGMEMBERS CRJ700-family](https://github.com/FGMEMBERS/CRJ700-family/tree/4862db2fe6e4ebab817ccf387c63f847bcf49c5a) | [crj1000-ac3d-source.zip](sources/crj1000-ac3d-source.zip) |

Archives retain the original AC3D geometry, scene XML, supplied author/readme
files and license. CRJ1000 includes its engine submodel and XML placement.
[Input and archive hashes](sources/ac3d-manifest.json) pin every archived input.
Changes: omit textures, simulation animations and named running-gear subtrees;
triangulate polygons while preserving corners and winding; derive crease-based
normals; apply rigid scene transforms; merge neutral surfaces without triangle
simplification. Four non-simple projected CRJ200 wing quads use an explicit
triangle fan, as recorded in the review. CRJ200 light-effect billboards and duplicate emissive overlays are excluded.
Source XML engine heading/pitch offsets
are mapped to the AC3D coordinate system. No variant is made by stretching another.

The development reader, preparation script and pixel comparison tools are in
`scripts/gear3d-body-assets/` in the CEE-406 repository. Pixel comparisons
validate the converted, filtered source surfaces against the prepared GLB,
not manufacturer CAD or the unconverted textured simulation. Runtime uniformly
scales the illustrative body, keeps 150 mm minimum clearance and attaches its
struts to retained surfaces/gear-bay roofs. The source archives are never fetched
by the viewer. Source proportions and visual height remain approximate.

## Further regional aircraft: editable AC3D sources (GPL v2)

ATR72-500.glb, ERJ145.glb and DHC8-300.glb are three additional GPL v2
FlightGear derivatives. ERJ145 ER/LR and Dash 8-300Q basic/HGW configurations
share their corresponding dedicated family exterior.

The ERJ145 source retains raised wingtip surfaces. It is a representative
family illustration, not an exact ER/LR variant exterior; the source geometry
does not establish the selected manufacturer's configuration.

| Body | Authors/project, pinned commit | Corresponding editable source |
|---|---|---|
| ATR72-500.glb | Ryan Miller, [FGMEMBERS ATR-72-500](https://github.com/FGMEMBERS/ATR-72-500/tree/b1c036cde19c0cdba32f3c9b8abc4370406134f8) | [atr72-500-ac3d-source.zip](sources/atr72-500-ac3d-source.zip) |
| ERJ145.glb | Emmanuel Baranger, [FGMEMBERS Embraer-ERJ-145](https://github.com/FGMEMBERS/Embraer-ERJ-145/tree/6bb8e16db9772e5b9a6012de7c955e064c6550e1) | [erj145-ac3d-source.zip](sources/erj145-ac3d-source.zip) |
| DHC8-300.glb | Alex Park, [FGMEMBERS dhc8](https://github.com/FGMEMBERS/dhc8/tree/37ed47c80200d7879ebcd11a3139abbb026d8498) | [dhc8-300-ac3d-source.zip](sources/dhc8-300-ac3d-source.zip) |

Archives retain original geometry, scene/setup XML, COPYING and supplied author
documentation. ATR includes both engine inputs and their XML offsets. Manufacturer
manuals and brochures are referenced separately and are not redistributed in
these source archives. [Archive/input hashes](sources/ac3d-manifest.json) pin
the corresponding sources.

Changes: remove textures and simulation states; exclude running gear, internal
equipment and effect billboards; retain exterior surfaces and static propellers;
triangulate polygons and bake rigid transforms; merge without triangle
simplification. ATR retains its six-blade state; four-blade alternatives and blur
disks are excluded. ERJ excludes explicitly named French running-gear objects.
Dash 8 uses an exterior object allowlist. Uniform length scaling preserves
source proportions; no fuselage or wing is stretched to create another variant.
Attachments and ground attitude remain illustrative. See the
[consolidated source and conversion review](https://github.com/ictuillinois/CEE-406/blob/main/docs/gear3d-body-review/regional-expansion.md).

## Airbus derivatives on parent airframes

The A319neo, A320neo, A321neo and A321XLR use the A319, A320 and A321 bodies;
the A330-200F and A330-800 use the A330-200 body; the A330-900 uses the A330-300
body. No new mesh is added and the credits above apply unchanged. Each is
labelled a representative airframe: fuselage length and nose station match the
manufacturer, while neo nacelles, sharklets, the A330neo wing and the
freighter's nose fairing are not modelled.
