# Reusable widebody exteriors

These are conversions of original freely distributable FlightGear aircraft. Airline names and logos remain their owners' marks; no new livery or registration was painted for this project. The models are visual exteriors, not manufacturer CAD or certified flight models.

| Package | Source variant and paint | Source license | Pinned source |
| --- | --- | --- | --- |
| `b777-master` | Boeing 777-300ER, Emirates A6-EPA | GPL-2.0-only | [FlightGear FGAddon 777, SVN 21578](https://svn.code.sf.net/p/flightgear/fgaddon/trunk/Aircraft/777/?p=21578) |
| `b787-master` | Boeing 787-8, GEnx, Air India VT-ANS | GPL-2.0-only, conservative use of retained GPLv2 LICENSE | [IskenderWang/787-family, 02626b5b659d89b9399943ee167bbb0b46f0c871](https://github.com/IskenderWang/787-family/tree/02626b5b659d89b9399943ee167bbb0b46f0c871) |
| `a350-master` | Airbus A350-900, Trent XWB, original Qatar Airways paint; registration not asserted | GPL-2.0-or-later, explicitly stated in source README | [FGMEMBERS/A350XWB, 04da937ab1ba0b07dabfd71d91aa33eb38316b90](https://github.com/FGMEMBERS/A350XWB/tree/04da937ab1ba0b07dabfd71d91aa33eb38316b90) |

777 attribution: Syd Adams and the contributors listed in `source/b777/AUTHORS`. 787 attribution: IskenderWang, Marsdolphin, Pilot2938, Nicolás Castellán, Naviat, Jonathan Redpath, Omega95 and the other contributors in `source/787-family/Authors.md`. A350 attribution: Sbyx, Jormappapa and other contributors, as retained in `source/A350XWB/README.md`.

`source-manifest.json` records URL, pinned revision, SHA-256, byte size and license for every retained original file. The 777 originals were copied byte-for-byte from this project's earlier retained FGAddon source package. All selected XML, meshes, textures, paint descriptors, author notices and license texts remain available under `source/`. Only declarative mesh/material/animation data was read; no upstream simulator script was executed.

## Conversion and capability limits

The GLBs use the airport's native frame: left +X, up +Y, nose +Z, wheel ground at Y=0. Geometry remains at source scale. Measured dimensions include the original source geometry and may differ from published manufacturer envelopes; they must not be relabeled as precise manufacturer measurements.

Each `*-master.glb` contains independently named near and far rig parts. The separate `*-near.glb` and `*-far.glb` are the same levels exported independently. The JSON manifest records actual part stacks, dimensions, ten or fourteen measured tyre centres/radii/widths, source objects, original animation properties, axes, pivots and interpolation tables. Runtime inputs are normalized gear/flaps/spoilers/reverser channels, signed steering degrees, wheel distance and visual fan phase.

XML-declared groups are preserved as hierarchy, with outer group transforms before children and XML order at equal hierarchy depth. This matters for the 777, whose wheel groups are declared in XML rather than directly in AC3D. The positive airport steering convention is converted to the original FlightGear sign. The 777's main rear axles retain separate measured pivots and a small countersteering motion. `levelSteering: false` prevents a generic nose-pivot override from displacing those main wheels.

The source tyre meshes have small noncircular/profile/discretization errors. Wheel spin pivots and steering axes are fitted to the actual tyre groups, retaining original source pivot/axis fields. The bounded asset test allows 15 mm tyre profile variation. Per-wheel static settling is listed in the manifest; wheels are not arbitrarily resized. Ground rest excludes dynamic suspension/FDM expressions. The 787's source +20-degree gear-extension bogie rotation, normally cancelled by its compression model on the ground, is rebased to the source mesh's grounded rest pose and recorded in `restNormalizations`. Wing flex, continuous aerodynamic trim and detailed suspension are not simulated.

No model has an imported operating passenger/cargo-door animation. Cabin doors remain closed. `sourceCapabilities.animatedDoors` is false. Service attachment fields are explicitly approximate geometry/paint locations, except the 787 aft cargo lower edge, which comes from its named source mesh. These sockets must not be used to claim an opening aperture or an accurately surveyed service connection. The operating 777 can use the remote-stand taxi, pushback and flight cycle without invented cargo or boarding animations.

The 787 near model simplifies only six deep engine-internal rings/cones, reducing 270,467 triangles to 97,617. Original intake fans, exterior cowling, wing and fuselage silhouette remain. The A350 uses its original Windshield mesh with a dark glass material because its source body texture depends on simulator material effects. All airline paint UVs remain original. Far models retain the original fuselage, wingtip and tail silhouette and consolidate flight surfaces at neutral pose; their gear and wheels remain articulated.

## Validation

`validation.json` is generated by `scripts/widebody-verify.mjs`. It decodes actual GLB geometry with the production `prepareAircraftMaster` runtime (only texture bindings are stripped for Node's missing image decoder), checks 80 steering/rolling poses per type, five gear positions, pause behavior, independent copies, and near/far baked dimensions. The final run inspected 1,816,880 tyre vertices with zero failures. Maximum profile deviations were −0.64 to +11.86 mm for the 777, −3.90 to +12.79 mm for the 787, and −1.51 to +2.63 mm for the A350. Fully retracted 777 tyre geometry rises above 2.729 m in its source frame.

Textured local renders are retained in `research/*-parked.png` and `research/b777-retracted.png`. These asset checks do not substitute for airport stand, pavement, bridge or flight-route validation after placement.
