MCPcopy Create free account
hub / github.com/NVlabs/InstantSplat / Scene

Class Scene

scene/__init__.py:23–106  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 2

trainingFunction · 0.90
render_setsFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected