CNA-GAP-035: Only the direct glTF route fills Model::CamerasEXT; models loaded from .cnj or .cnb carry no cameras
Evidence basis: source-verified at the pinned commit; tests exist (not executed for this page). Claims on this page were checked by reading the CNA source at commit 009d40f5; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.
ReadGltfModel extracts the file's cameras into Model::CamerasEXT, but the offline gltf_to_cnj/gltf_to_cnb tools only count camera nodes, so a converted model arrives without its authored framing.
- Identifier
CNA-GAP-035- Category
- Functional gap
- Subsystem
- Models & glTF
- Status
- Open
- Verified against
- CNA
009d40f5(009d40f5dd085c4e674d3479675fac84b12b3e0a) - Evidence basis
- Source-verified: read at TARGET, not executed
- Tests touching this area
- Yes: see Current tests
- Affected contract
- Model::getCamerasEXTProperty() on models loaded through .cnj and .cnb
Expected behaviour
A camera authored in the glTF source should survive whichever CNA route the model takes, as the other imported data (bones, clips, materials) does.
Actual behaviour at TARGET
setCamerasEXTProperty is called only in ContentManager.cpp for the runtime glTF path (from ExtractCamerasEXT in GltfImportCore.cpp). gltf_to_cnj.cpp reports a cameraNodeCount but writes no camera data, and the .cnj and .cnb Model readers set none. Model.hpp documents the property as “Empty for every model built by any other content path”.
Source locations
modules/content/src/Xna/ContentManager.cpp— ReadGltfModel: the only setCamerasEXTProperty callmodules/graphics/include/Microsoft/Xna/Framework/Graphics/Model.hpp— getCamerasEXTProperty documentation: empty for every other content pathtools/gltf_to_cnj/gltf_to_cnj.cpp— reports cameraNodeCount only
Evidence
Checked by reading and grepping at 009d40f5 for setCamerasEXTProperty; not executed.
Focused reproduction
No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.
Current tests
GltfCameraTests.cpp covers camera extraction on the direct glTF route; nothing covers cameras on the .cnj/.cnb routes.
Regression test
Once cameras are serialized, a round-trip test glTF → .cnj/.cnb → Model::CamerasEXT.
Blast radius
Applications that convert glTF offline and use the authored cameras. Direct glTF loads are unaffected.
Workaround
Load the .gltf/.glb directly when its cameras are needed, or carry camera data separately.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- User guide
- Model loading: glTF to .cnj
- Deep dives
- .cnj toolchain: routes · glTF import: the import report
- Known issues
- Functional gap index