From a6be4e4938347904cc459375bc90887e47d624ce Mon Sep 17 00:00:00 2001 From: Vincent Demoulin Date: Fri, 5 Jul 2024 09:04:09 +0200 Subject: [PATCH] Create Init functions for nodes, submitters and pipelines --- bin/meshroom_batch | 1 + bin/meshroom_compute | 2 ++ bin/meshroom_submit | 3 +++ meshroom/core/__init__.py | 50 ++++++++++++++++++++------------------- meshroom/ui/app.py | 2 ++ 5 files changed, 34 insertions(+), 24 deletions(-) diff --git a/bin/meshroom_batch b/bin/meshroom_batch index 2b6dcab7..45d7b75c 100755 --- a/bin/meshroom_batch +++ b/bin/meshroom_batch @@ -14,6 +14,7 @@ from meshroom import multiview from meshroom.core.desc import InitNode import logging +meshroom.core.initPlugins() parser = argparse.ArgumentParser(description='Launch the full photogrammetry or Panorama HDR pipeline.') parser.add_argument('-i', '--input', metavar='NODEINSTANCE:"SFM/FOLDERS/IMAGES;..."', type=str, nargs='*', diff --git a/bin/meshroom_compute b/bin/meshroom_compute index 7060c7dc..ace6fec0 100755 --- a/bin/meshroom_compute +++ b/bin/meshroom_compute @@ -31,6 +31,8 @@ parser.add_argument('-i', '--iteration', type=int, args = parser.parse_args() +meshroom.core.initNodes() + graph = meshroom.core.graph.loadGraph(args.graphFile) if args.cache: graph.cacheDir = args.cache diff --git a/bin/meshroom_submit b/bin/meshroom_submit index 40f61c37..404a87f9 100755 --- a/bin/meshroom_submit +++ b/bin/meshroom_submit @@ -22,4 +22,7 @@ parser.add_argument("--submitLabel", args = parser.parse_args() +meshroom.core.initNodes() +meshroom.core.initSubmitters() + meshroom.core.graph.submit(args.meshroomFile, args.submitter, toNode=args.toNode, submitLabel=args.submitLabel) diff --git a/meshroom/core/__init__.py b/meshroom/core/__init__.py index fb68a4b5..ab957986 100644 --- a/meshroom/core/__init__.py +++ b/meshroom/core/__init__.py @@ -330,30 +330,32 @@ def loadPipelineTemplates(folder): if file.endswith(".mg") and file not in pipelineTemplates: pipelineTemplates[os.path.splitext(file)[0]] = os.path.join(folder, file) -meshroomFolder = os.path.dirname(os.path.dirname(__file__)) +def initNodes(): + meshroomFolder = os.path.dirname(os.path.dirname(__file__)) + additionalNodesPath = os.environ.get("MESHROOM_NODES_PATH", "").split(os.pathsep) + # filter empty strings + additionalNodesPath = [i for i in additionalNodesPath if i] + nodesFolders = [os.path.join(meshroomFolder, 'nodes')] + additionalNodesPath + for f in nodesFolders: + loadAllNodes(folder=f) -additionalNodesPath = os.environ.get("MESHROOM_NODES_PATH", "").split(os.pathsep) -# filter empty strings -additionalNodesPath = [i for i in additionalNodesPath if i] +def initSubmitters(): + meshroomFolder = os.path.dirname(os.path.dirname(__file__)) + subs = loadSubmitters(os.environ.get("MESHROOM_SUBMITTERS_PATH", meshroomFolder), 'submitters') + for sub in subs: + registerSubmitter(sub()) -# Load plugins: -# - Nodes -nodesFolders = [os.path.join(meshroomFolder, 'nodes')] + additionalNodesPath +def initPipelines(): + meshroomFolder = os.path.dirname(os.path.dirname(__file__)) + # Load pipeline templates: check in the default folder and any folder the user might have + # added to the environment variable + additionalPipelinesPath = os.environ.get("MESHROOM_PIPELINE_TEMPLATES_PATH", "").split(os.pathsep) + additionalPipelinesPath = [i for i in additionalPipelinesPath if i] + pipelineTemplatesFolders = [os.path.join(meshroomFolder, 'pipelines')] + additionalPipelinesPath + for f in pipelineTemplatesFolders: + loadPipelineTemplates(f) -for f in nodesFolders: - loadAllNodes(folder=f) - -# - Submitters -subs = loadSubmitters(os.environ.get("MESHROOM_SUBMITTERS_PATH", meshroomFolder), 'submitters') - -for sub in subs: - registerSubmitter(sub()) - -# Load pipeline templates: check in the default folder and any folder the user might have -# added to the environment variable -additionalPipelinesPath = os.environ.get("MESHROOM_PIPELINE_TEMPLATES_PATH", "").split(os.pathsep) -additionalPipelinesPath = [i for i in additionalPipelinesPath if i] -pipelineTemplatesFolders = [os.path.join(meshroomFolder, 'pipelines')] + additionalPipelinesPath - -for f in pipelineTemplatesFolders: - loadPipelineTemplates(f) +def initPlugins(): + initNodes() + initSubmitters() + initPipelines() diff --git a/meshroom/ui/app.py b/meshroom/ui/app.py index b83d88b6..16b2e14d 100644 --- a/meshroom/ui/app.py +++ b/meshroom/ui/app.py @@ -124,6 +124,8 @@ class MeshroomApp(QApplication): # - clean cache directory and make sure it exists on disk ThumbnailCache.initialize() + meshroom.core.initPlugins() + # QML engine setup qmlDir = os.path.join(pwd, "qml") url = os.path.join(qmlDir, "main.qml")