diff --git a/VERSION b/VERSION index 0b2eb36f..c1e43e6d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.7.2 +3.7.3 diff --git a/opendm/config.py b/opendm/config.py index 58109d12..647fe949 100755 --- a/opendm/config.py +++ b/opendm/config.py @@ -40,7 +40,7 @@ 'force_gps': 'opensfm', 'gcp': 'dataset', 'geo': 'dataset', - 'gltf': 'mvs_texturing', + 'gltf': 'odm_postprocess', 'gps_accuracy': 'dataset', 'gps_z_offset': 'dataset', 'help': None, diff --git a/stages/mvstex.py b/stages/mvstex.py index f797650e..b0006ebd 100644 --- a/stages/mvstex.py +++ b/stages/mvstex.py @@ -8,7 +8,6 @@ from opendm.multispectral import get_primary_band_name from opendm.photo import find_largest_photo_dim from opendm.objpacker import obj_pack -from opendm.gltf import obj2glb class ODMMvsTexStage(types.ODM_Stage): def process(self, args, outputs): @@ -129,16 +128,6 @@ def add_run(nvm_file, primary=True, band=None): '{maxTextureSize} '.format(**kwargs)) if r['primary'] and (not r['nadir'] or args.skip_3dmodel): - # GlTF? - if args.gltf: - log.ODM_INFO("Generating glTF Binary") - odm_textured_model_glb = os.path.join(r['out_dir'], tree.odm_textured_model_glb) - - try: - obj2glb(odm_textured_model_obj, odm_textured_model_glb, rtc=reconstruction.get_proj_offset(), _info=log.ODM_INFO) - except Exception as e: - log.ODM_WARNING(str(e)) - # Single material? if args.texturing_single_material: log.ODM_INFO("Packing to single material") diff --git a/stages/odm_postprocess.py b/stages/odm_postprocess.py index 55bb3421..45b27fab 100644 --- a/stages/odm_postprocess.py +++ b/stages/odm_postprocess.py @@ -5,6 +5,7 @@ from opendm import types from opendm.utils import copy_paths, get_processing_results_paths from opendm.ogctiles import build_3dtiles +from opendm.gltf import obj2glb class ODMPostProcess(types.ODM_Stage): def process(self, args, outputs): @@ -13,6 +14,26 @@ def process(self, args, outputs): log.ODM_INFO("Post Processing") + if args.gltf: + textured_model = os.path.join(tree.odm_texturing, tree.odm_textured_model_obj) + textured_model_25d = os.path.join(tree.odm_25dtexturing, tree.odm_textured_model_obj) + + if os.path.isfile(textured_model) and not args.skip_3dmodel: + input_obj = textured_model + elif os.path.isfile(textured_model_25d): + input_obj = textured_model_25d + else: + input_obj = textured_model + + odm_textured_model_glb = os.path.join(os.path.dirname(input_obj), tree.odm_textured_model_glb) + + if not os.path.exists(odm_textured_model_glb) or self.rerun(): + log.ODM_INFO("Generating glTF Binary") + try: + obj2glb(input_obj, odm_textured_model_glb, rtc=reconstruction.get_proj_offset(), _info=log.ODM_INFO) + except Exception as e: + log.ODM_WARNING(str(e)) + if getattr(args, '3d_tiles'): build_3dtiles(args, tree, reconstruction, self.rerun())