(args, paths)
| 49 | |
| 50 | |
| 51 | def decode(args, paths): |
| 52 | from encoding.model import ShapeAutoEncoder |
| 53 | from utils.triplane_util import load_triplane_data |
| 54 | import glob |
| 55 | |
| 56 | # dist_util.setup_dist(args.gpu_id) |
| 57 | |
| 58 | log_dir = encoding_log_dir(args.tag) |
| 59 | ae_model = ShapeAutoEncoder(log_dir, args) |
| 60 | ae_model.load_ckpt("final") |
| 61 | |
| 62 | for path in paths: |
| 63 | feat_maps = load_triplane_data(path, device=dist_util.dev(), compose=False) |
| 64 | feat_maps = [fm.unsqueeze(0) for fm in feat_maps] |
| 65 | |
| 66 | save_dir = os.path.dirname(path) |
| 67 | if args.vox: |
| 68 | ae_model.decode_voxel(save_dir, feat_maps, args.reso) |
| 69 | else: |
| 70 | if args.copy_mtl: |
| 71 | try: |
| 72 | mtl_path = glob.glob(os.path.join(os.path.dirname(args.data_path), "mesh/*.mtl"))[0] |
| 73 | except: |
| 74 | mtl_path = None |
| 75 | else: |
| 76 | mtl_path = None |
| 77 | ae_model.decode_texmesh(save_dir, feat_maps, args.reso, n_faces=args.n_faces, texture_reso=args.texreso, |
| 78 | save_highres_mesh=False, n_surf_pc=-1, mtl_path=mtl_path, file_format=args.file_format) |
| 79 | |
| 80 | |
| 81 | if __name__ == "__main__": |
no test coverage detected