diff --git a/scene/dataset_readers.py b/scene/dataset_readers.py index 98c73e8..2a6f904 100644 --- a/scene/dataset_readers.py +++ b/scene/dataset_readers.py @@ -187,10 +187,15 @@ def readCamerasFromTransforms(path, transformsfile, white_background, extension= for idx, frame in enumerate(frames): cam_name = os.path.join(path, frame["file_path"] + extension) - matrix = np.linalg.inv(np.array(frame["transform_matrix"])) - R = -np.transpose(matrix[:3,:3]) - R[:,0] = -R[:,0] - T = -matrix[:3, 3] + # NeRF 'transform_matrix' is a camera-to-world transform + c2w = np.array(frame["transform_matrix"]) + # change from OpenGL/Blender camera axes (Y up, Z back) to COLMAP (Y down, Z forward) + c2w[:3, 1:3] *= -1 + + # get the world-to-camera transform and set R, T + w2c = np.linalg.inv(c2w) + R = np.transpose(w2c[:3,:3]) # R is stored transposed due to 'glm' in CUDA code + T = w2c[:3, 3] image_path = os.path.join(path, cam_name) image_name = Path(cam_name).stem