(path, images, eval, llffhold=8)
| 140 | ply_data.write(path) |
| 141 | |
| 142 | def readColmapSceneInfo(path, images, eval, llffhold=8): |
| 143 | try: |
| 144 | cameras_extrinsic_file = os.path.join(path, "sparse/0", "images.bin") |
| 145 | cameras_intrinsic_file = os.path.join(path, "sparse/0", "cameras.bin") |
| 146 | cam_extrinsics = read_extrinsics_binary(cameras_extrinsic_file) |
| 147 | cam_intrinsics = read_intrinsics_binary(cameras_intrinsic_file) |
| 148 | except: |
| 149 | cameras_extrinsic_file = os.path.join(path, "sparse/0", "images.txt") |
| 150 | cameras_intrinsic_file = os.path.join(path, "sparse/0", "cameras.txt") |
| 151 | cam_extrinsics = read_extrinsics_text(cameras_extrinsic_file) |
| 152 | cam_intrinsics = read_intrinsics_text(cameras_intrinsic_file) |
| 153 | |
| 154 | reading_dir = "images" if images == None else images |
| 155 | cam_infos_unsorted = readColmapCameras(cam_extrinsics=cam_extrinsics, cam_intrinsics=cam_intrinsics, images_folder=os.path.join(path, reading_dir)) |
| 156 | cam_infos = sorted(cam_infos_unsorted.copy(), key = lambda x : x.image_name) |
| 157 | |
| 158 | if eval: |
| 159 | train_cam_infos = [c for idx, c in enumerate(cam_infos) if idx % llffhold != 0] |
| 160 | test_cam_infos = [c for idx, c in enumerate(cam_infos) if idx % llffhold == 0] |
| 161 | else: |
| 162 | train_cam_infos = cam_infos |
| 163 | test_cam_infos = [] |
| 164 | |
| 165 | nerf_normalization = getNerfppNorm(train_cam_infos) |
| 166 | |
| 167 | ply_path = os.path.join(path, "sparse/0/points3D.ply") |
| 168 | bin_path = os.path.join(path, "sparse/0/points3D.bin") |
| 169 | txt_path = os.path.join(path, "sparse/0/points3D.txt") |
| 170 | if not os.path.exists(ply_path): |
| 171 | print("Converting point3d.bin to .ply, will happen only the first time you open the scene.") |
| 172 | try: |
| 173 | xyz, rgb, _ = read_points3D_binary(bin_path) |
| 174 | except: |
| 175 | xyz, rgb, _ = read_points3D_text(txt_path) |
| 176 | storePly(ply_path, xyz, rgb) |
| 177 | try: |
| 178 | pcd = fetchPly(ply_path) |
| 179 | except: |
| 180 | pcd = None |
| 181 | |
| 182 | scene_info = SceneInfo(point_cloud=pcd, |
| 183 | train_cameras=train_cam_infos, |
| 184 | test_cameras=test_cam_infos, |
| 185 | nerf_normalization=nerf_normalization, |
| 186 | ply_path=ply_path) |
| 187 | return scene_info |
| 188 | |
| 189 | def readCamerasFromTransforms(path, transformsfile, white_background, extension=".png"): |
| 190 | cam_infos = [] |
nothing calls this directly
no test coverage detected