I’m trying to understand a nuance in the SfmCamera and ISfmCameraModel data structures.
SfmCameras have a translation vector SfmCamera.t , which should be the same thing (or negative) of the camera position relative to the Sfm Coordinate system origin, right?. However, in the SfmCameraModel interface definition, there is a function called “GetCameraCentre”, which seems to output values to a four element vector. What’s the difference?
DECLAREINTERFACE( ISfmCameraModel, IUnknown, “{. . . }” )
… void GetCameraCentre( __in const SfmCameraTransform &camera, __out_ecount(4) double *C );
If I want to use any of the methods in ISfmCameraModel to get further info from a reconstruction (like projecting 3D points to camera images), I need to get access to the instance inside ISfmReconstruction, (or a copy of it) but I don’t understand how to do this. Any advice?