Importing Camera CAHV format - up and direction vectors?
-
I've written a quick importer for a fun little project that imports camera location data for a bunch of image frames. But I can't determine what in this data is what I would use for the up and direction vector for making a new camera. It supplies quite a few vectors, and I'm not sure which are the ones I want. To make matters worse, there is other 3d data that comes in with th file, and it is all mirrored what it should be, and the y and z for 3d points had to be swapped.
So between not entirely trusting the directions of the provided vectors, I can't even determine which ones would be for the sketchup z-vector and the vector for the direction the camera is facing.
I've got some better ideas for how to test it later, but I was hopinh maybe someone here was familiar with these camera terms.
This is the instructions that come with the camera data:
# Description of the CAHV camera model; # ------------- # (Cx, Cy, Cz) ; CameraPosition [mm] # (Ax, Ay, Az) ; RotationAxis2 [unit vector] # (Hx, Hy, Hz) ; RotationAxis0 [pel] (including FocalLength, PixelSizeX, and Principal Point offset) # (Vx, Vy, Vz) ; RotationAxis1 [pel] (including FocalLength, PixelSizeY, and Principal Point offset) # (K3, K5) ; Radialdistortion; K3 [1/(mm)^2] K5 [1/(mm)^4] # (sx, sy) ; PixelSize [mm/pel] # (Width, Height) ; ImageSize [pel] # ------------- # (ppx, ppy) ; Principal Point offset [pel] # f ; Focal Length [mm] # fov ; Horizontal Field of View [degree] = (2*atan(0.5*Width*sx/f)*180/PI; # (H0x, H0y, H0z) ; RotationAxis0 [unit vector] # (V0x, V0y, V0z) ; RotationAxis1 [unit vector] # ------------- # (x, y) ; image coordinates [pel] # (X, Y, Z) ; 3D coordinates [mm] # ------------- # Projection of 3D coordinates in the camera image; # [ x' ] = [ Hx Hy Hz ] [ 1 0 0 -Cx] [ X ] # [ y' ] = [ Vx Vy Vz ] [ 0 1 0 -Cy] [ Y ] # [ z' ] = [ Ax Ay Az ] [ 0 0 1 -Cz] [ Z ] # [ 1 ] # or # [ x' ] = [f/sx 0 ppx] [ H0x H0y H0z ] [ 1 0 0 -Cx] [ X ] # [ y' ] = [0 f/sy ppy] [ V0x V0y V0z ] [ 0 1 0 -Cy] [ Y ] # [ z' ] = [0 0 1 ] [ Ax Ay Az ] [ 0 0 1 -Cz] [ Z ] # [ 1 ] # then x = x'/z' and y = y'/z' , if the origin of the image coordinates is in the center of the image # or x = x'/z' + 0.5*(Width-1) and y = y'/z' + 0.5*(Height-1) , if the origin of the image coordinates is in the upper left cornerA big thanks to anyone who takes a stab at this or thinks they have an answer for which od the provided vectors correlate to what I need. Thanks!
Chris
-
Chris,
Have a look at the film and stage plugin - if I remember, there is some code in it which might be useful.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better đź’—
Register LoginAdvertisement