Hi,

I want to make sure I don't do any mistake in the camera vector calculation.

As far as I know, the normal vector of a camera in chunk coordinate system can be calculated by:

`principal_pixel = PhotoScan.Vector(camera.sensor.width/2+camera.sensor.calibration.cx, camera.sensor.height/2+camera.sensor.calibration.cy)`

normal_vector = camera.transform.mulv(camera.sensor.calibration.unproject(principal_pixel))

Then it should work to transform the vector to world coordinate system by

`world_vector = chunk.transform.matrix.mulv(normal_vector)`

and I can also get the camera rotation matrix in the world by

`T = chunk.transform.matrix`

m = chunk.crs.localframe(T.mulp(camera.center))

R= m * T * camera.transform * PhotoScan.Matrix().Diag([1, -1, -1, 1])

R = R.rotation()

I would like to know that whether the vector's direction is defined as y axis to north, x axis to east, and xy plane is parallel to the horizon, or is it based on the camera orientation. If it is based on camera orientation, can I transform it by multiply the transpose rotation matrix?

Appreciated for your help to make it clear!