Aircraft import audit for 笑笑飞行
Generated 2026-11-04. All paths relative to flight-assets-source.

Coordinate frames
- All six AC3D assets use native longitudinal X, up Y, left Z.
- AC -> Three scene right/up/back = [-ac.z, ac.y, ac.x].
- FlightGear model XML offsets x/y/z -> Three = [xml.y,xml.z,xml.x].
- FlightGear view x-offset-m/y-offset-m/z-offset-m are already scene coordinates.
- Preserve all nested AC loc and rot, XML model offsets/rotations, material and UVs.
- Su27 eye z=+5.23 IS CORRECT. Its model origin is near the nose instead of CG:
  canopy raw x 4.605..6.697; tail rudders raw x 17.246..18.285.
  It still faces decreasing longitudinal x / scene z. Do not flip this camera sign.

Resolver caveats
- B737 child paths beginning Models/Instruments/... refer to aircraft repo root;
  they are not shared FGData. Resolve root/path before parent/path fallback.
- Su27 mfd-1.xml has legacy Aircraft/SU-37/... reference. Alias SU-37 -> Su27 root.
- F16 generic altimeter is /Aircraft/Instruments-3d/altimeter/altimeter.ac.
  Shared/ folder contains the dependency if downloaded successfully.
- A320 Aircraft/Generic/marker.xml can be omitted (not cockpit hardware).
- B787 EFB-DB source and textures included; external charts aren't needed for flight.
- Some legacy unused B737 OH-panel texture references are absent upstream;
  current cockpit uses Overhead/Overhead.xml, not OH-panel/OH-panel.xml.

Import branch policy (flight training, no parked aircraft equipment)
- If exporting separate exterior + cockpit GLBs, exclude cockpit branches from exterior
  to avoid double geometry when cockpit GLB is added. Retain framing/canopy as appropriate.
- Skip geometry paths under Services, Autopush, Ramp, Ground, Armament, weapons,
  Stores, generic airport vehicles, marker.xml, rain/smoke/contrail/fire/vapour.
- Keep gear geometry; animate/hide by gear state rather than permanently omit.
- Effects/nozzles paths in Su27 and F18 ARE physical engine exhaust geometry;
  retain these, unlike particle afterburner Effects/Afterburner.
- Exclude pilots in first person; optionally keep them exterior only.
- Do not import all alternative HUDs/engines/winglets simultaneously.

A320-200 CFM
- Identity: actual source A320-216 exterior + CFM56 engines, label A320-200 (CFM56).
- Root A320-200-CFM.xml -> A320-common.xml -> Fuselage/fuselage.xml + cockpit.
- Keep only CFM56 engine model. Exclude IAEV2500, CFMLEAP1A, PW1100G variants.
- Default -set.xml has sharklet=0. Keep WingtipFence and navglass; remove
  Sharklet and navglass.sharklet. If choosing sharklets, do the exact reverse.
- Omit MLGLockstayActuatorL1/R1/L2/R2 and FlapMechanismL/R: upstream always false.
- For static engines keep FanLCFM56L/R, omit FanSpinningCFM56L/R.
- A320-common.xml root offsets z+0.83109 applies to fuselage and interior.
- A320-interior.xml inner placement x=-16.47411,y=-.00015,z=-.09483.
- Exclude models Pushback, Firetruck1, Firetruck2, ground_services and particle names.

Boeing 737-800 (not 737 MAX)
- Source aircraft description is Boeing 737-800YV; retain 737-800 designation.
- Keep 737-800.ac, LWing.xml, RWing.xml, NoseGear.xml, VertStab.xml, HorzStab.xml.
- Default set uses BOE livery and newwinglets=false. Skip Winglet2 / winglet2.xml;
  extra lhwinglet.001/rhwinglet.001/002 objects belong to the optional new winglet set.
- Preserve standard winglet geometry in the basic model/wing meshes.
- Exclude passengersseats, Pushback, all Services and optional light billboards.
- Cockpit outer offset x=-18.32. Current overhead is Overhead/Overhead.xml.

F-16CJ Block 52
- Source f16-block-52-set.xml: variant-id=5, variant-engine=2 (Pratt & Whitney),
  dragchute=true, link16=true, conformal fuel tanks=false.
- Keep PW_nozzle, exclude GE_nozzle. Keep outlet + InnerBrakeLower/Upper.
- Exclude Block60 IRST model irst-b60.ac, F-16D.ac, CFT and all weapons/pods.
- Default Block52 tail uses dragchute housing RNLAF_Tailroot + Chute; exclude
  USAF_Tailroot if matching the downloaded default block52 set.
- Keep Link16Antennas and Tail-antenna.
- Keep ONE HUD: HUDa (Cockpit/hud.xml). Exclude HUDb, HUDc, HUDd.
- Keep EHSI for variant-id=5; exclude HSI, CDU, Block60 PFD.
- Keep F-16-FS stick; exclude F-16-FS-B10.
- Threat-warning panels alternatives share name THREAT; prefer US_threat_warning_prime.xml
  for US Block52, exclude MLU_threat_warning_prime.xml.
- Exclude knee1/knee2 if no kneeboard, mfd-flir external zoom helper.
- Hide FanSpinning/InternalFlame/Turbine unless animated; do not show all simultanously.

Sukhoi Su-27
- SU-27-set.xml identifies Su-27; exterior is genuine FlightGear Su27 geometry.
- Legacy SU-27-readme.txt was inherited from SU37 experimental FDM and explicitly
  disclaims exact systems simulation. Do not claim certified training fidelity.
- Main AC includes airframe and gear. Keep two physical Effects/nozzles/Nozzles.xml.
- Interior panel offset x=.3,y=-.01,z=0; eye scene [0,1.45,5.23].
- Exclude all smoke/fire/vapour/afterburner particles; interior pilot in first person.
- Cockpit is lower detail than A320/F16 and contains an added MFD; use honest label
  simulation cockpit, not exact manufacturer certified instrument replica.

McDonnell Douglas F/A-18C Hornet (legacy Hornet, NOT F/A-18E/F Super Hornet)
- README and F-18C_Hornet-set.xml explicitly specify C; source is FGUK's F-18C.
- Keep SingleSeat group. Exclude DoubleSeat group / FuselageTopDS.
- Exterior root FA-18C_Hornet.xml, cockpit Interior/interior.xml outer offsets
  x=.3,y=0,z=.05 (scene [0,.05,.3]).
- Keep two Effects/nozzles/Nozzles.xml physical exhaust meshes; exclude Stores and
  Models/weapons/loads.xml, all particle effects and duplicate HUD_ADDS when separate cockpit.
- CanopyGlass and CanopyGlas are transparent surfaces; hide in internal view as upstream does.
- Cockpit instruments are legacy simulation approximations with some generic gauges;
  do not describe every instrument as an exact C-version replica.

Boeing 787-8
- Source explicit 787-8 Dreamliner, not 787-9/10. Main AC includes exterior.
- FlightDeck/b787.flightdeck.xml includes matching instrument child geometry.
- Exclude Pushback, Ground/*, all Services, shadow/fog billboards, smoke/fire/contrails.
- RAT.xml is physical but retractable; keep hidden for normal training flight.
- Do not load every MFD page simultaneously: select/display desired primary page or
  replace screen plane texture with simulation instruments.

Licensing/source delivery
- A320 GPL v2 only (README.copyright.md). F16 GPL v2 or later (copyright.txt).
- B737, B787, Su27, F18 repository COPYING/LICENSE use GPL v2.
- Keep original author/copyright notices and GPL text alongside published source.
- Corresponding source archives should include AC/XML/textures used by the GLB,
  attribution, pinned revision, importer/converter source, filtering configuration,
  and reproduction instructions. Converted assets remain GPL-governed derivatives.
- Public attribution HTML and six source tarballs are generated in release-attribution/.
  Root must add its actual converter and exact conversion parameters to reproduce
  generated GLBs before publishing these archives; do not only link upstream.

F-15C added for genuine JSBSim pairing
- Official FGAddon F-15 package downloaded 2026-11-04 from official aircraft mirror.
- F15/f15a.xml is the C/D JSBSim FDM, selected by f15-common.xml; F100-PW-220 engines.
- Exterior Models/f15c.xml; cockpit Models/Cockpit/all-interior.xml; zero offset.
- Eye scene [0,1.401951318,-5], pitch=-12.95, FOV=90.
- Keep f15c-canopy; remove f15d-canopy, Backseater, GPU, GroundRefuellingBowser, aircraft-ladder.
- all-interior.ac includes all instrument meshes; don't also import old cockpit.xml.
- all-interior includes 31 rear-seat-only objects. Exact exclude list is in IMPORT_FILTERS.json.
- Official repository license policy GPL2+ at https://www.flightgear.org/about/policy/.
  The archive originally lacks COPYING; F15/LICENSE-NOTE.txt explains provided GPL text.

FDM dependency audit
- A320/FDE/A320-200-CFM.xml recursively resolves 34 JSB model files.
- B737/737-800YV.xml resolves 7; B787/787-8.xml resolves 4; F16/f16b52.xml resolves 16.
- JSBSIM_DEPENDENCIES.json contains exact dependency filenames and missing-file checks.
- F18 and Su27 supplied packages use YASim; do not pair them with another airplane's JSB config.

Upstream AC3D defect
- F16/Models/Cockpit/Main/panels_mlu_right-console.ac matches exact upstream git blob
  16be658cd9d44d657943717fc2d35b827016c346 (1,237,717 bytes).
- Root says kids28 but has 27 complete direct children (112 total nodes, sum kids112).
- Original source is preserved. Converter should correct root count to27 or recover EOF
  and document this adaptation; do not infer download corruption.
