b :param path: Path to colmap scene main folder.
(self, args : ModelParams, gaussians : GaussianModel, load_iteration=None, shuffle=True, resolution_scales=[1.0])
| 23 | gaussians : GaussianModel |
| 24 | |
| 25 | def __init__(self, args : ModelParams, gaussians : GaussianModel, load_iteration=None, shuffle=True, resolution_scales=[1.0]): |
| 26 | """b |
| 27 | :param path: Path to colmap scene main folder. |
| 28 | """ |
| 29 | self.model_path = args.model_path |
| 30 | self.loaded_iter = None |
| 31 | self.gaussians = gaussians |
| 32 | |
| 33 | if load_iteration: |
| 34 | if load_iteration == -1: |
| 35 | self.loaded_iter = searchForMaxIteration(os.path.join(self.model_path, "point_cloud")) |
| 36 | else: |
| 37 | self.loaded_iter = load_iteration |
| 38 | print("Loading trained model at iteration {}".format(self.loaded_iter)) |
| 39 | |
| 40 | self.train_cameras = {} |
| 41 | self.test_cameras = {} |
| 42 | |
| 43 | if os.path.exists(os.path.join(args.source_path, "sparse")): |
| 44 | scene_info = sceneLoadTypeCallbacks["Colmap"](args.source_path, args.images, args.eval) |
| 45 | elif os.path.exists(os.path.join(args.source_path, "transforms_train.json")): |
| 46 | print("Found transforms_train.json file, assuming Blender data set!") |
| 47 | scene_info = sceneLoadTypeCallbacks["Blender"](args.source_path, args.white_background, args.eval) |
| 48 | elif args.source_path.endswith(".smc"): |
| 49 | print("Found smc file, assuming DNA-Rendering data set!") |
| 50 | scene_info = sceneLoadTypeCallbacks["DNA-Rendeing"](args.source_path, args.white_background, args.eval) |
| 51 | else: |
| 52 | assert False, "Could not recognize scene type!" |
| 53 | |
| 54 | if not self.loaded_iter: |
| 55 | with open(scene_info.ply_path, 'rb') as src_file, open(os.path.join(self.model_path, "input.ply") , 'wb') as dest_file: |
| 56 | dest_file.write(src_file.read()) |
| 57 | json_cams = [] |
| 58 | camlist = [] |
| 59 | if scene_info.test_cameras: |
| 60 | camlist.extend(scene_info.test_cameras) |
| 61 | if scene_info.train_cameras: |
| 62 | camlist.extend(scene_info.train_cameras) |
| 63 | for id, cam in enumerate(camlist): |
| 64 | json_cams.append(camera_to_JSON(id, cam)) |
| 65 | with open(os.path.join(self.model_path, "cameras.json"), 'w') as file: |
| 66 | json.dump(json_cams, file) |
| 67 | |
| 68 | if shuffle: |
| 69 | random.shuffle(scene_info.train_cameras) # Multi-res consistent random shuffling |
| 70 | random.shuffle(scene_info.test_cameras) # Multi-res consistent random shuffling |
| 71 | |
| 72 | self.cameras_extent = scene_info.nerf_normalization["radius"] |
| 73 | |
| 74 | for resolution_scale in resolution_scales: |
| 75 | print("Loading Training Cameras") |
| 76 | self.train_cameras[resolution_scale] = cameraList_from_camInfos(scene_info.train_cameras, resolution_scale, args) |
| 77 | print("Loading Test Cameras") |
| 78 | self.test_cameras[resolution_scale] = cameraList_from_camInfos(scene_info.test_cameras, resolution_scale, args) |
| 79 | |
| 80 | if self.loaded_iter: |
| 81 | self.gaussians.load_ply(os.path.join(self.model_path, |
| 82 | "point_cloud", |
nothing calls this directly
no test coverage detected