From 27b18c2cf54f14cd2e79dce053697025fb4a90e9 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Sat, 25 Apr 2026 23:58:27 -0400 Subject: [PATCH 1/2] Fix GLB export --- opendm/config.py | 2 +- stages/mvstex.py | 11 ----------- stages/odm_postprocess.py | 21 +++++++++++++++++++++ 3 files changed, 22 insertions(+), 12 deletions(-) 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()) From 0b4b5d9c993a84674cfea9e5740f58ac859c2ffc Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Sat, 25 Apr 2026 23:59:10 -0400 Subject: [PATCH 2/2] Bump version --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 0b2eb36f..c1e43e6d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.7.2 +3.7.3