mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-04-28 17:57:16 +02:00
New plugins load
MESHROOM_PLUGINS_PATH can be used to automatically load nodes and pipelines from a folder structure.
This commit is contained in:
parent
92555f6ab3
commit
db8fd02aeb
6 changed files with 42 additions and 2 deletions
|
@ -146,6 +146,7 @@ if not args.input and not args.inputRecursive:
|
|||
print('Nothing to compute. You need to set --input or --inputRecursive.')
|
||||
sys.exit(1)
|
||||
|
||||
meshroom.core.initPlugins()
|
||||
meshroom.core.initNodes()
|
||||
|
||||
graph = meshroom.core.graph.Graph(name=args.pipeline)
|
||||
|
|
|
@ -61,6 +61,7 @@ if args.extern:
|
|||
else:
|
||||
logging.getLogger().setLevel(meshroom.logStringToPython[args.verbose])
|
||||
|
||||
meshroom.core.initPlugins()
|
||||
meshroom.core.initNodes()
|
||||
|
||||
graph = meshroom.core.graph.loadGraph(args.graphFile)
|
||||
|
|
|
@ -22,6 +22,7 @@ parser.add_argument("--submitLabel",
|
|||
|
||||
args = parser.parse_args()
|
||||
|
||||
meshroom.core.initPlugins()
|
||||
meshroom.core.initNodes()
|
||||
meshroom.core.initSubmitters()
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ import importlib
|
|||
import inspect
|
||||
import logging
|
||||
import os
|
||||
from pathlib import Path
|
||||
import pkgutil
|
||||
import sys
|
||||
import tempfile
|
||||
|
@ -343,6 +344,35 @@ def loadAllNodes(folder):
|
|||
logging.debug(f'Nodes loaded [{package}]: {nodesStr}')
|
||||
|
||||
|
||||
def loadPluginFolder(folder):
|
||||
if not os.path.isdir(folder):
|
||||
logging.info(f"Plugin folder '{folder}' does not exist.")
|
||||
return
|
||||
|
||||
mrFolder = Path(folder, 'meshroom')
|
||||
if not mrFolder.exists():
|
||||
logging.info(f"Plugin folder '{folder}' does not contain a 'meshroom' folder.")
|
||||
return
|
||||
|
||||
binFolders = [Path(folder, 'bin')]
|
||||
libFolders = [Path(folder, 'lib'), Path(folder, 'lib64')]
|
||||
pythonPathFolders = [Path(folder)] + binFolders
|
||||
|
||||
loadAllNodes(folder=mrFolder)
|
||||
loadPipelineTemplates(folder=mrFolder)
|
||||
|
||||
|
||||
def loadPluginsFolder(folder):
|
||||
if not os.path.isdir(folder):
|
||||
logging.debug(f"PluginSet folder '{folder}' does not exist.")
|
||||
return
|
||||
|
||||
for file in os.listdir(folder):
|
||||
if os.path.isdir(file):
|
||||
subFolder = os.path.join(folder, file)
|
||||
loadPluginFolder(subFolder)
|
||||
|
||||
|
||||
def registerSubmitter(s):
|
||||
global submitters
|
||||
if s.name in submitters:
|
||||
|
@ -392,3 +422,9 @@ def initPipelines():
|
|||
for f in pipelineTemplatesFolders:
|
||||
loadPipelineTemplates(f)
|
||||
|
||||
|
||||
def initPlugins():
|
||||
additionalpluginsPath = EnvVar.getList(EnvVar.MESHROOM_PLUGINS_PATH)
|
||||
nodesFolders = [os.path.join(meshroomFolder, 'plugins')] + additionalpluginsPath
|
||||
for f in nodesFolders:
|
||||
loadPluginFolder(folder=f)
|
||||
|
|
|
@ -42,10 +42,10 @@ class EnvVar(Enum):
|
|||
)
|
||||
|
||||
# Core
|
||||
MESHROOM_PLUGINS_PATH = VarDefinition(str, "", "Paths to plugins folders")
|
||||
MESHROOM_PLUGINS_PATH = VarDefinition(str, "", "Paths to plugins folders containing nodes, submitters and pipeline templates")
|
||||
MESHROOM_NODES_PATH = VarDefinition(str, "", "Paths to set of nodes folders")
|
||||
MESHROOM_SUBMITTERS_PATH = VarDefinition(str, "", "Paths to set of submitters folders")
|
||||
MESHROOM_PIPELINE_TEMPLATES_PATH = VarDefinition(str, "", "Paths to pipeline templates folders")
|
||||
MESHROOM_PIPELINE_TEMPLATES_PATH = VarDefinition(str, "", "Paths to et of pipeline templates folders")
|
||||
|
||||
@staticmethod
|
||||
def get(envVar: "EnvVar") -> Any:
|
||||
|
|
|
@ -232,6 +232,7 @@ class MeshroomApp(QApplication):
|
|||
# - clean cache directory and make sure it exists on disk
|
||||
ThumbnailCache.initialize()
|
||||
|
||||
meshroom.core.initPlugins()
|
||||
meshroom.core.initNodes()
|
||||
meshroom.core.initSubmitters()
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue