CNA-GAP-035: Only the direct glTF route fills Model::CamerasEXT; models loaded from .cnj or .cnb carry no cameras

CNA snapshot 009d40f5  ·  Known Issues › Functional gaps  ·  source links pinned to 009d40f5

✓

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

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.

The same subject is explained at several altitudes. These are the neighbouring pages at each one.