# Aircraft models used by Atlas

The aircraft are representative type illustrations. Flight records only supply
an ICAO type; Atlas does not infer a particular engine, wingtip, door arrangement
or operator configuration from a registration number. Unsupported types do not
display a model.

## MAX 7 — independent historical GPLv2 exterior

B37M uses the original maintainer's [737-7.ac](https://github.com/naviat-dev/737-family/blob/fecbbfe602c0a2f7e28bf00685ba32370966f593/Models/737-7.ac)
at revision `fecbbfe602c0a2f7e28bf00685ba32370966f593`. The same revision includes
GPLv2 LICENSE and credits Israel Emmanuel (naviat), SP-NTX and Captain Jake.
See [B37M-LICENSE](./B37M-LICENSE), [recipe](./recipes/b37m.json) and
[corresponding source](./source/b37m.tar.gz), including both preparation scripts.
The archive reproduces the exact prepared GLB with all original triangle positions.

The independent fuselage is 35.568m long and 3.753m wide, compared with 35.56m
and 3.76m in Boeing's [737 MAX airport-planning manual, Rev K, section 2.2.1](https://www.boeing.com/content/dam/boeing/v2/airports/acaps/737MAX_RevK.pdf).
Overall source geometry spans 36.17m, compared with the drawing's 35.92m. Nose,
side/top proportions, representative LEAP-1B-size nacelles, chevron exhausts,
split winglets and the static gear-down pose were visually checked. This is a
type illustration, not engineering-calibrated CAD or a particular registration's
exact engine configuration. Cabin window textures are absent in this historical
source; cockpit, fan and gear geometry remain. Neutral materials replace paint.

41,199 triangles, four material groups, 2,871,252 bytes. No shape rescaling,
decimation or variant substitution. The historical FlightGear set XML still
points to a MAX10 configuration; Atlas does not execute it and uses only the
separately inspected MAX7 mesh. Later MAX7-labelled meshes have 36.72m/40.54m
fuselages and remain excluded.

## A340-500 — CC BY 4.0

A345 uses [A340-500 plane](https://sketchfab.com/3d-models/a340-500-plane-2e5d6f899b784394b22d1e64998f0704)
by [Greg (gregoirebonnin)](https://sketchfab.com/gregoirebonnin), licensed under
[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). The credited public
[JSFS mirror](https://github.com/albertkemp/JSFS/tree/42dba3c2ae4b13ffbdf5758e37ac7bd69df02e3e/Assets/glTF/a340-500_plane)
provides the exact original glTF, binary and texture, preserved with attribution
in [source/a345.tar.gz](./source/a345.tar.gz). See [A345-LICENSE](./A345-LICENSE).

Atlas preserves all16,564 triangles, original source units and wing/engine geometry;
only hierarchy/orientation and neutral materials change. Gear is retracted.
Reviewed cabin-window, cockpit and fan regions survive; operator marks are removed.
One material group,479,736bytes. Hero/side renders confirm the -500 class's
four larger nacelles, fuselage proportion and original winglets. The source's
span/length ratio0.933 is close to63.45/67.93 from the [Airbus general-dimensions
sheets](https://www.airbus.com/sites/g/files/jlcbta136/files/2022-08/Airbus-Commercial-Aircraft-AC-A340-500_600.pdf)
(PDF pages40–41); source units are arbitrary, not metres. This is representative
geometry, not manufacturer CAD, engineering calibration or exact engine inference.

Rebuild using Python, numpy and Pillow from an extracted source archive:

```sh
python scripts/prepare-static-gltf2-aircraft.py public/aircraft/recipes/a345.json \
  /path/to/a345/scene.gltf /tmp/a345.glb
```

[Recipe](./recipes/a345.json) verifies hashes for the JSON, binary and image before
baking the static geometry. External assets must use local relative paths.

## A350-1000 — CC BY 4.0

A35K is based on [A350 V3 with animation](https://sketchfab.com/3d-models/a350-v3-with-animation-965439a6041847a0b8decba253ffdf6f)
by [Newbie99999993](https://sketchfab.com/Newbie99999993), licensed under
[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). The public intermediate
[source and modification history](https://github.com/wiiiimm/hongkong-sandbox/blob/5777bc98fb354c369ee6234d08c64a38279e3a27/3d-viewer/data/models/README.md)
at revision5777bc98fb354c369ee6234d08c64a38279e3a27 records static-pose preparation,
gear splitting and mesh optimization. This asset has its own
[license notice and attribution](./A35K-LICENSE); it is not licensed as GPL.

Atlas changes: bake the source hierarchy and orientation, decode normalized
attributes, merge primitives by neutral satin material and remove all operator
paint/marks. Only reviewed window and fan texture regions remain. Source
six-wheel main bogies, nose gear, curved tips and representative Trent XWB-size
nacelles remain. No geometry rescaling or further decimation is performed here.
The prepared model is1.77MB,47,590 triangles and5 material groups.

The actual referenced-vertex bounds are73.83m long and64.91m across the tips,
close to the [Airbus family figures](https://www.airbus.com/sites/g/files/jlcbta136/files/2022-07/AI-Family-Figures.pdf)
for the -1000 (73.79m/64.75m). Hero and side renders confirm the -1000 exterior
and three-axle main bogies. This is illustrative source geometry, not manufacturer
CAD or a full engineering calibration; no exact engine subvariant is inferred.

[Recipe](./recipes/a35k.json) records the exact public source URL/hash,
orientation, material assignments and retained texture regions. Rebuild with
Python, numpy and Pillow after obtaining the recipe's pinned source GLB:

```sh
python scripts/prepare-static-gltf2-aircraft.py public/aircraft/recipes/a35k.json \
  /path/to/plane-a350.glb /tmp/a35k.glb
```

The derivative GLB is editable and publicly downloadable. The static glTF2
preparation script rejects animated/skinned/compressed inputs, verifies the input
hash, checks triangle-attribute preservation and referenced bounds, and emits an
audit JSON. Regression checks cover nested mirrored transforms, normalized
normals/UVs, paint masking and invalid inputs.

## First batch: FR24 source and license

Models: https://github.com/Flightradar24/fr24-3d-models
Pinned revision: dd53267690c6a4ecbb290a3acf0284333a5d68a9
Original authors and editable FlightGear sources: see UPSTREAM-README.md.
These 24 FR24 aircraft models are licensed under GNU GPL version 2; see LICENSE.
Later assets have their own license files; manifest.json records each license.
Three.js is MIT licensed (copyright 2010-2025 Three.js authors).

Atlas changes: convert static glTF 1 to glTF 2, bake original node transforms,
retain triangle topology and world-space bounds, combine by material, apply a
neutral satin-grey PBR palette, make thin fan surfaces double-sided, remove
unused vertices and limit embedded textures to 1024 pixels. No shape correction
or mesh decimation is performed by this preparation pipeline. Colored house
paint in the detail textures is neutralized; dark neutral detail is retained.

Reproducible source preparation code:
https://github.com/BusySeaAlien/shenhaike-atlas/blob/main/scripts/prepare-aircraft-models.py
Run with Python, numpy and Pillow. Without --source-directory it downloads the
exact pinned originals. Per-file source URLs, SHA256 values and geometry checks
are in manifest.json. The script is part of the GPLv2 modified-model source.

The manufacturers' drawings were used for the prior A320/B738 comparison. These
visual models are not manufacturer CAD files or engineering-certified geometry.

## Second batch: 737-200

B732 uses FGMEMBERS/737-200 at pinned revision
`fe8e7bf298520df997a2288a93a2e06d0876c313`,
[original AC3D geometry](https://github.com/FGMEMBERS/737-200/blob/fe8e7bf298520df997a2288a93a2e06d0876c313/Models/737-200.ac).
Its upstream GPLv2 text is preserved in [B732-LICENSE](./B732-LICENSE).
The source exterior uses representative JT8D engines with landing gear down.
Airline textures are omitted; window geometry remains. Embedded stairs are
excluded by their exact object names. No geometry is stretched to make a subtype.
Length 30.51m and span 28.32m are consistent with the 737-200 class; this is
illustrative geometry, not an engineering CAD reconstruction.

Corresponding modification source: [prepare-ac3d-aircraft.py](https://github.com/BusySeaAlien/shenhaike-atlas/blob/main/scripts/prepare-ac3d-aircraft.py) (GPLv2).
Download the pinned AC3D file, then rebuild with Python, numpy and Pillow:

```sh
python scripts/prepare-ac3d-aircraft.py /path/to/737-200.ac public/aircraft/b732.glb \
  --untextured --exclude stair1 stair2 stair3 porteechelle
```

The exporter emits an audit JSON beside the GLB; review it before changing the
manifest. It does not interpret FlightGear animation XML, so later models need
independent pose and component review. The first-batch preparation script keeps
independent later entries in the shared manifest.

## Third batch: 737-100, 737-300 and 737-500

These independent FGMEMBERS sources retain their own type geometry. They use
neutral materials without airline texture, retain physical windows and fans,
and show landing gear down. No whole-plane scaling is used.

| ICAO | Original source | License |
| --- | --- | --- |
| B731 | [737-100.ac](https://github.com/FGMEMBERS/737-100/blob/d8f624e204fd0873672d6f099a5b2b269203f698/Models/737-100.ac) | [GPLv2](./B731-LICENSE) |
| B733 | [737-300.ac](https://github.com/FGMEMBERS/737-300/blob/832d6691a7b210afd4b90ac046e838a1bade2e1f/Models/737-300.ac) | [GPLv3](./B733-LICENSE) |
| B735 | [737-500_004.ac](https://github.com/FGMEMBERS/737-500/blob/295beeb9107265ca6c956ed31f6671cc6544b0d5/Models/737-500_004.ac) | [GPLv2](./B735-LICENSE) |

B731 uses JT8D engines; B733/B735 use representative CFM56 engines with original
wing tips. Glass, tyres and engine interiors get distinct neutral materials.
The source animation-only light surfaces and optional cockpit removal kit are
excluded. B731 also excludes embedded stairs. Rebuild each pinned source with
the linked AC3D exporter:

```sh
python scripts/prepare-ac3d-aircraft.py /path/to/source.ac /tmp/model.glb \
  --untextured --exclude stair1 stair2 stair3 porteechelle removal Llightl Llightr \
  navlight_left navlight_back navlight_right
```

Audit output checks triangle-attribute preservation during compaction. Each
model's appearance and proportions require independent review. Geometry is
illustrative and has not undergone the A320/B738 official three-view review.

## A320neo and the LR/ER Boeing 777 variants

A20N uses the GPLv2 A320-family exterior at revision
`fec1ecba767c8fffd145337b27012e89c01e3ade`. The independent A320 fuselage is
assembled with the source LEAP-1A pair and Sharklets. Wingtip fences, spinning-fan
impostors, transparent engine placards and source-hidden mechanism objects are
excluded. The cabin-window texture is retained only in its window bands; operator
paint and registration markings are removed. Original copyright is in its source
archive.

B77L/B77W use separate 777-200LR and 777-300ER exteriors from FGMEMBERS/777 at
`371a354e5805c3c54afac926fea16bb19ea71fda`. Both have representative large GE90-size
nacelles, raked tips and landing gear down. The [FlightGear project page](https://wiki.flightgear.org/Boeing_777)
identifies the same aircraft and authors and specifies GPLv2 or later. Each asset
retains a GPLv2 license text and original author list. Animation-only light cones,
flares and flashes are excluded. Neutral window/fan/wing details remain; B77W uses
the matching -300 BAW texture as input to avoid retaining black JAL brand marks.
No airline names or registration marks are kept.

The matching recipes include pinned URLs, input hashes, component transforms,
texture regions and explicit exclusions. The downloadable corresponding-source
archives contain the original geometry, textures, recipe, copyright/license and
both preparation scripts. They allow rebuilding without depending on upstream
repositories remaining online.

| ICAO | Recipe | Corresponding source | License |
| --- | --- | --- | --- |
| A20N | [Recipe](./recipes/a20n.json) | [Source archive](./source/a20n.tar.gz) | [GPLv2](./A20N-LICENSE) |
| B77L | [Recipe](./recipes/b77l.json) | [Source archive](./source/b77l.tar.gz) | [GPLv2+](./B77L-LICENSE) |
| B77W | [Recipe](./recipes/b77w.json) | [Source archive](./source/b77w.tar.gz) | [GPLv2+](./B77W-LICENSE) |

```sh
python scripts/prepare-aircraft-recipe.py public/aircraft/recipes/a20n.json \
  /tmp/a20n-source /tmp/a20n.glb
```

All three use neutral satin materials and a static gear-down source pose. They
are illustrative models; their geometry has not undergone the prior A320/B738
manufacturer three-view comparison. The exporter preserves AC3D line surfaces
and resolves repeated closing polygon vertices before triangulation. Regression
checks cover transformed geometry, winding, polygon area and retained textures.

## A319neo/A321neo, MAX 9/10 and three additional Boeing variants

All seven retain independent type geometry, neutral materials and source gear-down
poses. A19N/A21N use GPLv2 FGMEMBERS/A320neo at
`2b867a721e2bed334fdc47bfed7ae6d9e55e5004`; source component offsets and subdivision
levels are preserved. Their representative LEAP exterior is the source geometry.
Catmull-Clark evaluation preserves UV seams; explicitly marked non-manifold fan
junctions remain creases. Actual rendered lengths are 33.88m and 44.52m.

B39M/B3XM use GPLv2 REXO-77/737-MAX at
`fc4316a01c1ec488789725bb54ed2f454f931ac6`. Their rendered lengths are 42.07m and
44.14m. MAX 7/8 from that revision were rejected for incorrect fuselage lengths;
no whole-aircraft rescaling or type relabeling is used.

B734 uses GPLv2 FGMEMBERS/737-400 at
`835fdc82b23bb7e09ae90c9b5ab49b29ffc7a5a6`; only neutral window pixels from the
matching Air France UV map are retained. Optional winglets are excluded.
B742 uses GPLv2 LincolnWorks-FlightGear/747-200 at
`2d25a16fa9410fabd01e844a66e35509b2699abe`. Its root child count is explicitly
corrected from 184 to the 183 complete source objects. Original vertices remain
unchanged; span 59.22m and length 70.95m match the short-upper-deck 747-200 class.

B78X uses GPLv2 IskenderWang/787-family at
`02626b5b659d89b9399943ee167bbb0b46f0c871`, with independent 68.30m fuselage and
GEnx pair. Source-hidden compressor packs, closed reverser grids and spinning-fan
impostors are omitted; visible front fans remain. A 0.02mm polygon tolerance
resolves duplicate source coordinates. Blank body detail is converted to neutral
grayscale; no airline paint remains.

| ICAO | Recipe | Corresponding source | License |
| --- | --- | --- | --- |
| A19N | [Recipe](./recipes/a19n.json) | [Source archive](./source/a19n.tar.gz) | [GPLv2](./A19N-LICENSE) |
| A21N | [Recipe](./recipes/a21n.json) | [Source archive](./source/a21n.tar.gz) | [GPLv2](./A21N-LICENSE) |
| B39M | [Recipe](./recipes/b39m.json) | [Source archive](./source/b39m.tar.gz) | [GPLv2](./B39M-LICENSE) |
| B3XM | [Recipe](./recipes/b3xm.json) | [Source archive](./source/b3xm.tar.gz) | [GPLv2](./B3XM-LICENSE) |
| B734 | [Recipe](./recipes/b734.json) | [Source archive](./source/b734.tar.gz) | [GPLv2](./B734-LICENSE) |
| B742 | [Recipe](./recipes/b742.json) | [Source archive](./source/b742.tar.gz) | [GPLv2](./B742-LICENSE) |
| B78X | [Recipe](./recipes/b78x.json) | [Source archive](./source/b78x.tar.gz) | [GPLv2](./B78X-LICENSE) |

Archives retain original inputs, hashed recipes, assembly XML references and the
matching exporter version. These models have passed appearance and type-proportion
review; they have not undergone manufacturer three-view calibration. MAX 10 is a
type illustration and does not imply a certification or service-entry claim.

## A330-900 and A340-200

A339 is the independent GPLv2 AI exterior by Ian (Yves) Tolosa, February 2022,
from the official FlightGear fgdata repository at
`2b0efe3c169b1c3badd502170e1fa6caa1762f55`. The upstream README explicitly licenses
the base package, including 3D models and textures, under GNU GPL. The archive
retains that README, GPLv2 text and original author-bearing model XML.
The 63.58m length and 64.30m span match the -900 class. Default Airbus/neo branding
is removed; only cabin/cockpit windows, tyre, fan and nacelle detail regions remain.

A342 uses GPLv2 FGMEMBERS/A340-200 at
`e29c2c2acbb1b8c47853935afa3fa23cfcba758d`, with independent 59.74m fuselage and
four source engine/nacelle assemblies. Source XML offsets are mapped into the
AC3D coordinate system; engine headings are checked visually against their
pylons. The core source file is named cf6_50, so no exact CFM56 engine subvariant
claim is made. Nacelle exterior is representative of the source A340-200.
Animation-only smoke and light planes are excluded. Physical cabin windows remain.

| ICAO | Recipe | Corresponding source | License |
| --- | --- | --- | --- |
| A339 | [Recipe](./recipes/a339.json) | [Source archive](./source/a339.tar.gz) | [GPLv2](./A339-LICENSE) |
| A342 | [Recipe](./recipes/a342.json) | [Source archive](./source/a342.tar.gz) | [GPLv2](./A342-LICENSE) |

Both are illustrative gear-down models. No manufacturer CAD certification or
full official three-view calibration is claimed. The candidate A345 from the AI
library was rejected for undersized wingspan; E175 was initially held for old short
wing tips; the user-approved representative E175 exception below supersedes that
exclusion. The rejected A345 source remains excluded.

## MAX 8

B38M uses the independent 737-8 exterior from original maintainer
naviat-dev/737-family at GPLv2 historical revision
`d9e099249d29d3e5e67a3290bb7b817c7fc8de3d`. This replaces the rejected longer
REXO candidate. Rendered length is 39.35m and span 36.17m; fan diameter is 1.75m.
The source README retains the original modeling credits. Its later 2024 commit
removed 3D assets; this derivative preserves the earlier GPLv2 release and inputs.

Source placards and spinning light impostors are excluded. Neutral window and
mechanical detail regions remain from the default map. A 1mm duplicate-coordinate
tolerance resolves an almost coincident source wing polygon edge. Actual type
length and silhouette are retained; no whole-plane scaling is applied.

| ICAO | Recipe | Corresponding source | License |
| --- | --- | --- | --- |
| B38M | [Recipe](./recipes/b38m.json) | [Source archive](./source/b38m.tar.gz) | [GPLv2](./B38M-LICENSE) |

This is illustrative geometry, with gear down and unified neutral satin material.

## Representative E175 for E75L records

On2026-10-08 the site owner explicitly requested ordinary E175 geometry for the
E175 long-wing records. The archive dictionary and flight links keep ICAO E75L.
The display uses the original short-wing E175 exterior, not extended-wing geometry:
source span25.56m, length30.82m, static gear down. No wing stretching or geometry
substitution with E175-E2. This is an approved type illustration rather than an
exact long-wing exterior.

Source: YV3399/E-jet-family-YV at1338d8f4a3cb884171f7136488e069e219d06611,
Models/erj175.ac (same original blob as the reviewed upstream). COPYING.md
explicitly releases the package under GPLv2 or later; no exterior exception is
listed. Original Thanks.txt preserves Narendran Muraleedharan and contributor
credits. Atlas retains positions and cockpit/cabin glass, applies neutral satin
materials and omits textures; cabin, stairs and ground-service submodels are not
included.

[Hashed recipe](./recipes/e75l.json), [corresponding source](./source/e75l.tar.gz),
[GPL license](./E75L-LICENSE). Archive includes original geometry, referenced
textures, model XML, license/credits, recipe and exact exporter scripts.

## C909 and C919 — original triangle counts retained

- **C909 / AJ27**: [ARJ21 by DL.123](https://sketchfab.com/3d-models/arj21-1d2d165256ea48bdbc420388bb6807a5), [CC BY 4.0 attribution](./AJ27-LICENSE.txt). User supplied the authorized Sketchfab GLB. All607,816 triangles retained;5 source primitives merged to1 neutral material group. STL-derived gear-down exterior has no cockpit/cabin-window geometry or texture.
- **C919**: [C919 B by juarturo](https://sketchfab.com/3d-models/c919-b-d7f372558e1c48fca54c145f2a491fc4), [CC BY 4.0 attribution](./C919-LICENSE.txt). User supplied the authorized Sketchfab GLB. All84,240 referenced triangles retained;156 source primitives merged to4 neutral material groups. Cockpit/cabin glass and mechanical detail retained; gear up.

Atlas bakes source transforms and replaces source materials with satin grey; no
decimation, geometry quantization or shape rescaling. Original embedded credits
and public source metadata are archived. Source positions, normals and triangle
attributes are preserved apart from baking transforms and float32 export rounding.
These are illustrative exteriors, not manufacturer CAD. Compared against COMAC's
C909 guide drawing (PDF page7) and C919 ACAP general dimensions (PDF page35):
C909 span/length0.819 versus27.29/33.46=0.816; C9190.974 versus35.80/38.90=0.920.
C919's relatively wider source wing is retained rather than silently stretched or
called dimensionally exact. No registration-specific engine claim is made.

| ICAO | Recipe | Original and preparation scripts |
| --- | --- | --- |
| AJ27 | [Recipe](./recipes/aj27.json) | [Archive](./source/aj27.tar.gz) |
| C919 | [Recipe](./recipes/c919.json) | [Archive](./source/c919.tar.gz) |

Models and derivatives remain [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/);
preparation scripts retain their separate GPL-2.0 license. Changes and authors are
credited in each GLB, license file and recipe. Both keep the existing transparent
viewer, rotation and fullscreen zoom controls.
