Camschnapper and Principal Points

Does a Camschnapper solution calculate the ‘principal point’ of image? In this case - basically every projection situation encountered these days - an offset in the principal point would equate to a lens shift.

This seems to indicate yes:

r = tdu.calibrateCamera((geoPoints,imgPoints),width=pWidth, height=pHeight, fov=80, useIntrinsicGuess=True, fixAspectRatio=True, zeroTangentDist=True, fixPrincipalPoint=False)

Ah ha - there are the resultant principal points… and they seem to make a bit of sense… if in pixels. So, my lens shifted up (bottom of screen) projector has 2560 x 1440 res (for some reason) and shows principalX as 925 (I’d expect 1280, but that seems in range) and 1424, which makes sense.

So - where do those values go? Do they end up in the matrix?

Follow-up - I’m trying to visualize the projection frustum. I put a simple box (3D parented to camera/projector), and applied the matrix, and get something. But it’s pretty odd - physically shifted down and off aspect. Has anyone done this already? I’m thinking there’s a formula.

I know other people want this - be good to add it to camschnapper when it works.

Bruce

To visualize the frustum in world space multiply the inverse of the projection matrix by the points in the unit cube going from (-1, -1, -1) to (1, 1, 1). This will give you a frustum with one side of the shape at the near plane and one at the far plane.

Great, I’ll try that, thanks.