We use the OpenGL/Blender (and original NeRF) coordinate convention for cameras. +X is right, +Y is up, and +Z is pointing back and away from the camera. -Z is the look-at direction.
Please refer to: https://docs.nerf.studio/en/latest/quickstart/data_conventions.html
for more information.
We have provided an example of converting camera poses from Blender to OpenCV format using the Starting_Kit. Please download the starting_kit and test the tip1_visualise_camera_poses.py file to visualize the camera poses.
To convert to OpenCV format, you can do matrix multiplication of the Blender format pose (given by transforms_train.json) and the matrix [[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]].
pose_in_blender = poses[idx] # Given 4 x 4 transform_matrix in Blender format in transforms_train.json file.
blender2opencv = np.array([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]])
pose_in_opencv = np.matmul(pose_in_blender, blender2opencv) # This is the camera pose in OpenCV format.
Please find the details in the tip1_visualise_camera_poses.py file of the starting_kit.
Posted by: youngkyoonjang @ June 2, 2023, 4:45 p.m.