mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-06-11 07:11:52 +02:00
[nodes] S-T: Harmonize and improve labels and descriptions
Use CamelCase for all labels, always end descriptions with periods, and replace the mixed use of single and double quotes with double quotes only.
This commit is contained in:
parent
41280dc22a
commit
c498f48e1e
12 changed files with 798 additions and 777 deletions
|
@ -24,43 +24,46 @@ The alignment can be based on:
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='input',
|
name="input",
|
||||||
label='Input',
|
label="Input",
|
||||||
description='''SfMData file .''',
|
description="Input SfMData file .",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='reference',
|
name="reference",
|
||||||
label='Reference',
|
label="Reference",
|
||||||
description='''Path to the scene used as the reference coordinate system.''',
|
description="Path to the scene used as the reference coordinate system.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='method',
|
name="method",
|
||||||
label='Alignment Method',
|
label="Alignment Method",
|
||||||
description="Alignment Method:\n"
|
description="Alignment method:\n"
|
||||||
" * from_cameras_viewid: Align cameras with same view Id\n"
|
" - from_cameras_viewid: Align cameras with same view ID.\n"
|
||||||
" * from_cameras_poseid: Align cameras with same pose Id\n"
|
" - from_cameras_poseid: Align cameras with same pose ID.\n"
|
||||||
" * from_cameras_filepath: Align cameras with a filepath matching, using 'fileMatchingPattern'\n"
|
" - from_cameras_filepath: Align cameras with a filepath matching, using 'fileMatchingPattern'.\n"
|
||||||
" * from_cameras_metadata: Align cameras with matching metadata, using 'metadataMatchingList'\n"
|
" - from_cameras_metadata: Align cameras with matching metadata, using 'metadataMatchingList'.\n"
|
||||||
" * from_markers: Align from markers with the same Id\n",
|
" - from_markers: Align from markers with the same ID.\n",
|
||||||
value='from_cameras_viewid',
|
value="from_cameras_viewid",
|
||||||
values=['from_cameras_viewid', 'from_cameras_poseid', 'from_cameras_filepath', 'from_cameras_metadata', 'from_markers'],
|
values=["from_cameras_viewid", "from_cameras_poseid", "from_cameras_filepath", "from_cameras_metadata", "from_markers"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.StringParam(
|
desc.StringParam(
|
||||||
name='fileMatchingPattern',
|
name="fileMatchingPattern",
|
||||||
label='File Matching Pattern',
|
label="File Matching Pattern",
|
||||||
description='Matching regular expression for the "from_cameras_filepath" method. '
|
description="Matching regular expression for the 'from_cameras_filepath' method.\n"
|
||||||
'You should capture specific parts of the filepath with parenthesis to define matching elements.\n'
|
"You should capture specific parts of the filepath with parentheses to define matching elements.\n"
|
||||||
'Some examples of patterns:\n'
|
"Some examples of patterns:\n"
|
||||||
r' - Match the filename without extension (default value): ".*\/(.*?)\.\w{3}"' + '\n' +
|
" - Match the filename without extension (default value): "
|
||||||
r' - Match the filename suffix after "_": ".*\/.*(_.*?\.\w{3})"' + '\n' +
|
r'".*\/(.*?)\.\w{3}"' + "\n"
|
||||||
r' - Match the filename prefix before "_": ".*\/(.*?)_.*\.\w{3}"',
|
" - Match the filename suffix after '_': "
|
||||||
value=r'.*\/(.*?)\.\w{3}',
|
r'".*\/.*(_.*?\.\w{3})"' + "\n"
|
||||||
|
" - Match the filename prefix before '_': "
|
||||||
|
r'".*\/(.*?)_.*\.\w{3}"',
|
||||||
|
value=r".*\/(.*?)\.\w{3}",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ListAttribute(
|
desc.ListAttribute(
|
||||||
|
@ -68,40 +71,41 @@ The alignment can be based on:
|
||||||
name="metadataMatching",
|
name="metadataMatching",
|
||||||
label="Metadata",
|
label="Metadata",
|
||||||
description="",
|
description="",
|
||||||
value="",
|
value="Metadata that should match to create the correspondences.",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
name="metadataMatchingList",
|
name="metadataMatchingList",
|
||||||
label="Metadata Matching List",
|
label="Metadata Matching List",
|
||||||
description='List of metadata that should match to create the correspondences. If the list is empty, the default value will be used: ["Make", "Model", "Exif:BodySerialNumber", "Exif:LensSerialNumber"].',
|
description="List of metadata that should match to create the correspondences.\n"
|
||||||
|
"If the list is empty, the default value will be used: ['Make', 'Model', 'Exif:BodySerialNumber', 'Exif:LensSerialNumber'].",
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='applyScale',
|
name="applyScale",
|
||||||
label='Scale',
|
label="Scale",
|
||||||
description='Apply scale transformation.',
|
description="Apply scale transformation.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0]
|
uid=[0]
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='applyRotation',
|
name="applyRotation",
|
||||||
label='Rotation',
|
label="Rotation",
|
||||||
description='Apply rotation transformation.',
|
description="Apply rotation transformation.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0]
|
uid=[0]
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='applyTranslation',
|
name="applyTranslation",
|
||||||
label='Translation',
|
label="Translation",
|
||||||
description='Apply translation transformation.',
|
description="Apply translation transformation.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0]
|
uid=[0]
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='verboseLevel',
|
name="verboseLevel",
|
||||||
label='Verbose Level',
|
label="Verbose Level",
|
||||||
description='''verbosity level (fatal, error, warning, info, debug, trace).''',
|
description="Verbosity level (fatal, error, warning, info, debug, trace).",
|
||||||
value='info',
|
value="info",
|
||||||
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
|
values=["fatal", "error", "warning", "info", "debug", "trace"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
|
@ -109,17 +113,17 @@ The alignment can be based on:
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='output',
|
name="output",
|
||||||
label='SfMData File',
|
label="SfMData File",
|
||||||
description='SfMData file.',
|
description="Output SfMData file.",
|
||||||
value=lambda attr: desc.Node.internalFolder + (os.path.splitext(os.path.basename(attr.node.input.value))[0] or 'sfmData') + '.abc',
|
value=lambda attr: desc.Node.internalFolder + (os.path.splitext(os.path.basename(attr.node.input.value))[0] or "sfmData") + ".abc",
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='outputViewsAndPoses',
|
name="outputViewsAndPoses",
|
||||||
label='Poses',
|
label="Poses",
|
||||||
description='''Path to the output sfmdata file with cameras (views and poses).''',
|
description="Path to the output SfMData file with cameras (views and poses).",
|
||||||
value=desc.Node.internalFolder + 'cameras.sfm',
|
value=desc.Node.internalFolder + "cameras.sfm",
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
|
@ -7,57 +7,60 @@ class SfMDistances(desc.AVCommandLineNode):
|
||||||
commandLine = 'aliceVision_sfmDistances {allParams}'
|
commandLine = 'aliceVision_sfmDistances {allParams}'
|
||||||
size = desc.DynamicNodeSize('input')
|
size = desc.DynamicNodeSize('input')
|
||||||
|
|
||||||
|
documentation = '''
|
||||||
|
'''
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='input',
|
name="input",
|
||||||
label='Input',
|
label="Input",
|
||||||
description='''SfMData file.''',
|
description="SfMData file.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='objectType',
|
name="objectType",
|
||||||
label='Type',
|
label="Type",
|
||||||
description='',
|
description="",
|
||||||
value='landmarks',
|
value="landmarks",
|
||||||
values=['landmarks', 'cameras'],
|
values=["landmarks", "cameras"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='landmarksDescriberTypes',
|
name="landmarksDescriberTypes",
|
||||||
label='Describer Types',
|
label="Describer Types",
|
||||||
description='Describer types used to describe an image (only used when using "landmarks").',
|
description="Describer types used to describe an image (only used when using 'landmarks').",
|
||||||
value=['cctag3'],
|
value=["cctag3"],
|
||||||
values=['sift', 'sift_float', 'sift_upright', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv'],
|
values=["sift", "sift_float", "sift_upright", "akaze", "akaze_liop", "akaze_mldb", "cctag3", "cctag4", "sift_ocv", "akaze_ocv"],
|
||||||
exclusive=False,
|
exclusive=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
joinChar=',',
|
joinChar=",",
|
||||||
),
|
),
|
||||||
desc.StringParam(
|
desc.StringParam(
|
||||||
name='A',
|
name="A",
|
||||||
label='A IDs',
|
label="A IDs",
|
||||||
description='It will display the distances between A and B elements.\n'
|
description="It will display the distances between A and B elements.\n"
|
||||||
'This value should be an ID or a list of IDs of landmarks IDs or cameras (UID or filename without extension).\n'
|
"This value should be an ID or a list of IDs of landmarks IDs or cameras (UID or filename without extension).\n"
|
||||||
'It will list all elements if empty.',
|
"It will list all elements if empty.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.StringParam(
|
desc.StringParam(
|
||||||
name='B',
|
name="B",
|
||||||
label='B IDs',
|
label="B IDs",
|
||||||
description='It will display the distances between A and B elements.\n'
|
description="It will display the distances between A and B elements.\n"
|
||||||
'This value should be an ID or a list of IDs of landmarks IDs or cameras (UID or filename without extension).\n'
|
"This value should be an ID or a list of IDs of landmarks IDs or cameras (UID or filename without extension).\n"
|
||||||
'It will list all elements if empty.',
|
"It will list all elements if empty.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='verboseLevel',
|
name="verboseLevel",
|
||||||
label='Verbose Level',
|
label="Verbose Level",
|
||||||
description='''verbosity level (fatal, error, warning, info, debug, trace).''',
|
description="Verbosity level (fatal, error, warning, info, debug, trace).",
|
||||||
value='info',
|
value="info",
|
||||||
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
|
values=["fatal", "error", "warning", "info", "debug", "trace"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
|
|
|
@ -16,41 +16,44 @@ This node allows to transfer poses and/or intrinsics form one SfM scene onto ano
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='input',
|
name="input",
|
||||||
label='Input',
|
label="Input",
|
||||||
description='''SfMData file .''',
|
description="SfMData file.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='reference',
|
name="reference",
|
||||||
label='Reference',
|
label="Reference",
|
||||||
description='''Path to the scene used as the reference to retrieve resolved poses and intrinsics.''',
|
description="Path to the scene used as the reference to retrieve resolved poses and intrinsics.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='method',
|
name="method",
|
||||||
label='Matching Method',
|
label="Matching Method",
|
||||||
description="Matching Method:\n"
|
description="Matching Method:\n"
|
||||||
" * from_viewid: Align cameras with same view Id\n"
|
" - from_viewid: Align cameras with same view ID.\n"
|
||||||
" * from_filepath: Align cameras with a filepath matching, using 'fileMatchingPattern'\n"
|
" - from_filepath: Align cameras with a filepath matching, using 'fileMatchingPattern'.\n"
|
||||||
" * from_metadata: Align cameras with matching metadata, using 'metadataMatchingList'\n"
|
" - from_metadata: Align cameras with matching metadata, using 'metadataMatchingList'.\n"
|
||||||
" * from_intrinsicid: Copy intrinsics parameters\n",
|
" - from_intrinsicid: Copy intrinsics parameters.\n",
|
||||||
value='from_viewid',
|
value="from_viewid",
|
||||||
values=['from_viewid', 'from_filepath', 'from_metadata', 'from_intrinsicid'],
|
values=["from_viewid", "from_filepath", "from_metadata", "from_intrinsicid"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.StringParam(
|
desc.StringParam(
|
||||||
name='fileMatchingPattern',
|
name="fileMatchingPattern",
|
||||||
label='File Matching Pattern',
|
label="File Matching Pattern",
|
||||||
description='Matching regular expression for the "from_cameras_filepath" method. '
|
description="Matching regular expression for the 'from_cameras_filepath' method.\n"
|
||||||
'You should capture specific parts of the filepath with parenthesis to define matching elements.\n'
|
"You should capture specific parts of the filepath with parentheses to define matching elements.\n"
|
||||||
'Some examples of patterns:\n'
|
"Some examples of patterns:\n"
|
||||||
r' - Match the filename without extension (default value): ".*\/(.*?)\.\w{3}"' + '\n' +
|
" - Match the filename without extension (default value): "
|
||||||
r' - Match the filename suffix after "_": ".*\/.*(_.*?\.\w{3})"' + '\n' +
|
r'".*\/(.*?)\.\w{3}"' + "\n"
|
||||||
r' - Match the filename prefix before "_": ".*\/(.*?)_.*\.\w{3}"',
|
" - Match the filename suffix after \"_\": "
|
||||||
|
r'".*\/.*(_.*?\.\w{3})"' + "\n"
|
||||||
|
" - Match the filename prefix before \"_\": "
|
||||||
|
r'".*\/(.*?)_.*\.\w{3}"',
|
||||||
value=r'.*\/(.*?)\.\w{3}',
|
value=r'.*\/(.*?)\.\w{3}',
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
|
@ -58,41 +61,43 @@ This node allows to transfer poses and/or intrinsics form one SfM scene onto ano
|
||||||
elementDesc=desc.File(
|
elementDesc=desc.File(
|
||||||
name="metadataMatching",
|
name="metadataMatching",
|
||||||
label="Metadata",
|
label="Metadata",
|
||||||
description="",
|
description="Metadata that should match to create correspondences.",
|
||||||
value="",
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
name="metadataMatchingList",
|
name="metadataMatchingList",
|
||||||
label="Metadata Matching List",
|
label="Metadata Matching List",
|
||||||
description='List of metadata that should match to create the correspondences. If the list is empty, the default value will be used: ["Make", "Model", "Exif:BodySerialNumber", "Exif:LensSerialNumber"].',
|
description="List of metadata that should match to create the correspondences.\n"
|
||||||
|
"If the list is empty, the default value will be used:\n"
|
||||||
|
"['Make', 'Model', 'Exif:BodySerialNumber', 'Exif:LensSerialNumber'].",
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='transferPoses',
|
name="transferPoses",
|
||||||
label='Poses',
|
label="Poses",
|
||||||
description='Transfer poses.',
|
description="Transfer poses.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0]
|
uid=[0]
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='transferIntrinsics',
|
name="transferIntrinsics",
|
||||||
label='Intrinsics',
|
label="Intrinsics",
|
||||||
description='Transfer cameras intrinsics.',
|
description="Transfer cameras intrinsics.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0]
|
uid=[0]
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='transferLandmarks',
|
name="transferLandmarks",
|
||||||
label='Landmarks',
|
label="Landmarks",
|
||||||
description='Transfer landmarks.',
|
description="Transfer landmarks.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0]
|
uid=[0]
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='verboseLevel',
|
name="verboseLevel",
|
||||||
label='Verbose Level',
|
label="Verbose Level",
|
||||||
description='''verbosity level (fatal, error, warning, info, debug, trace).''',
|
description="Verbosity level (fatal, error, warning, info, debug, trace).",
|
||||||
value='info',
|
value="info",
|
||||||
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
|
values=["fatal", "error", "warning", "info", "debug", "trace"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
|
@ -100,17 +105,17 @@ This node allows to transfer poses and/or intrinsics form one SfM scene onto ano
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='output',
|
name="output",
|
||||||
label='SfMData File',
|
label="SfMData",
|
||||||
description='SfMData file.',
|
description="Path to the output SfM point cloud file (in SfMData format).",
|
||||||
value=lambda attr: desc.Node.internalFolder + (os.path.splitext(os.path.basename(attr.node.input.value))[0] or 'sfmData') + '.abc',
|
value=lambda attr: desc.Node.internalFolder + (os.path.splitext(os.path.basename(attr.node.input.value))[0] or "sfmData") + ".abc",
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='outputViewsAndPoses',
|
name="outputViewsAndPoses",
|
||||||
label='Poses',
|
label="Poses",
|
||||||
description='''Path to the output sfmdata file with cameras (views and poses).''',
|
description="Path to the output SfMData file with cameras (views and poses).",
|
||||||
value=desc.Node.internalFolder + 'cameras.sfm',
|
value=desc.Node.internalFolder + "cameras.sfm",
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
|
@ -26,39 +26,39 @@ The transformation can be based on:
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='input',
|
name="input",
|
||||||
label='Input',
|
label="Input",
|
||||||
description='''SfMData file .''',
|
description="SfMData file.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='method',
|
name="method",
|
||||||
label='Transformation Method',
|
label="Transformation Method",
|
||||||
description="Transformation method:\n"
|
description="Transformation method:\n"
|
||||||
" * transformation: Apply a given transformation.\n"
|
" - transformation: Apply a given transformation.\n"
|
||||||
" * manual: Apply the gizmo transformation (show the transformed input).\n"
|
" - manual: Apply the gizmo transformation (show the transformed input).\n"
|
||||||
" * auto: Determines scene orientation from the cameras' X axis, determines north and scale from GPS information if available, and defines ground level from the point cloud.\n"
|
" - auto: Determines scene orientation from the cameras' X axis, determines north and scale from GPS information if available, and defines ground level from the point cloud.\n"
|
||||||
" * auto_from_cameras: Defines coordinate system from cameras.\n"
|
" - auto_from_cameras: Defines coordinate system from cameras.\n"
|
||||||
" * auto_from_cameras_x_axis: Determines scene orientation from the cameras' X axis.\n"
|
" - auto_from_cameras_x_axis: Determines scene orientation from the cameras' X axis.\n"
|
||||||
" * auto_from_landmarks: Defines coordinate system from landmarks.\n"
|
" - auto_from_landmarks: Defines coordinate system from landmarks.\n"
|
||||||
" * from_single_camera: Defines the coordinate system from the camera specified by --tranformation.\n"
|
" - from_single_camera: Defines the coordinate system from the camera specified by --tranformation.\n"
|
||||||
" * from_center_camera: Defines the coordinate system from the camera closest to the center of the reconstruction.\n"
|
" - from_center_camera: Defines the coordinate system from the camera closest to the center of the reconstruction.\n"
|
||||||
" * from_markers: Defines the coordinate system from markers specified by --markers.\n"
|
" - from_markers: Defines the coordinate system from markers specified by --markers.\n"
|
||||||
" * from_gps: Defines coordinate system from GPS metadata.\n"
|
" - from_gps: Defines coordinate system from GPS metadata.\n"
|
||||||
" * align_ground: Defines ground level from the point cloud density. It assumes that the scene is oriented.",
|
" - align_ground: Defines ground level from the point cloud density. It assumes that the scene is oriented.",
|
||||||
value='auto',
|
value="auto",
|
||||||
values=['transformation', 'manual', 'auto', 'auto_from_cameras', 'auto_from_cameras_x_axis', 'auto_from_landmarks', 'from_single_camera', 'from_center_camera', 'from_markers', 'from_gps', 'align_ground'],
|
values=["transformation", "manual", "auto", "auto_from_cameras", "auto_from_cameras_x_axis", "auto_from_landmarks", "from_single_camera", "from_center_camera", "from_markers", "from_gps", "align_ground"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.StringParam(
|
desc.StringParam(
|
||||||
name='transformation',
|
name="transformation",
|
||||||
label='Transformation',
|
label="Transformation",
|
||||||
description="Required only for 'transformation' and 'from_single_camera' methods:\n"
|
description="Required only for 'transformation' and 'from_single_camera' methods:\n"
|
||||||
" * transformation: Align [X,Y,Z] to +Y-axis, rotate around Y by R deg, scale by S; syntax: X,Y,Z;R;S\n"
|
" - transformation: Align [X,Y,Z] to +Y-axis, rotate around Y by R deg, scale by S; syntax: X,Y,Z;R;S\n"
|
||||||
" * from_single_camera: Camera UID or simplified regular expression to match image filepath (like '*camera2*.jpg')",
|
" - from_single_camera: Camera UID or simplified regular expression to match image filepath (like '*camera2*.jpg').",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
enabled=lambda node: node.method.value == "transformation" or node.method.value == "from_single_camera" or node.method.value == "auto_from_cameras_x_axis",
|
enabled=lambda node: node.method.value == "transformation" or node.method.value == "from_single_camera" or node.method.value == "auto_from_cameras_x_axis",
|
||||||
),
|
),
|
||||||
|
@ -73,19 +73,19 @@ The transformation can be based on:
|
||||||
description="Translation in space.",
|
description="Translation in space.",
|
||||||
groupDesc=[
|
groupDesc=[
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name="x", label="x", description="X Offset",
|
name="x", label="x", description="X offset.",
|
||||||
value=0.0,
|
value=0.0,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
range=(-20.0, 20.0, 0.01)
|
range=(-20.0, 20.0, 0.01)
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name="y", label="y", description="Y Offset",
|
name="y", label="y", description="Y offset.",
|
||||||
value=0.0,
|
value=0.0,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
range=(-20.0, 20.0, 0.01)
|
range=(-20.0, 20.0, 0.01)
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name="z", label="z", description="Z Offset",
|
name="z", label="z", description="Z offset.",
|
||||||
value=0.0,
|
value=0.0,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
range=(-20.0, 20.0, 0.01)
|
range=(-20.0, 20.0, 0.01)
|
||||||
|
@ -96,22 +96,22 @@ The transformation can be based on:
|
||||||
desc.GroupAttribute(
|
desc.GroupAttribute(
|
||||||
name="manualRotation",
|
name="manualRotation",
|
||||||
label="Euler Rotation",
|
label="Euler Rotation",
|
||||||
description="Rotation in Euler degrees.",
|
description="Rotation in Euler angles.",
|
||||||
groupDesc=[
|
groupDesc=[
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name="x", label="x", description="Euler X Rotation",
|
name="x", label="x", description="Euler X rotation.",
|
||||||
value=0.0,
|
value=0.0,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
range=(-90.0, 90.0, 1.0)
|
range=(-90.0, 90.0, 1.0)
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name="y", label="y", description="Euler Y Rotation",
|
name="y", label="y", description="Euler Y rotation.",
|
||||||
value=0.0,
|
value=0.0,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
range=(-180.0, 180.0, 1.0)
|
range=(-180.0, 180.0, 1.0)
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name="z", label="z", description="Euler Z Rotation",
|
name="z", label="z", description="Euler Z rotation.",
|
||||||
value=0.0,
|
value=0.0,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
range=(-180.0, 180.0, 1.0)
|
range=(-180.0, 180.0, 1.0)
|
||||||
|
@ -122,7 +122,7 @@ The transformation can be based on:
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name="manualScale",
|
name="manualScale",
|
||||||
label="Scale",
|
label="Scale",
|
||||||
description="Uniform Scale.",
|
description="Uniform scale.",
|
||||||
value=1.0,
|
value=1.0,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
range=(0.0, 20.0, 0.01)
|
range=(0.0, 20.0, 0.01)
|
||||||
|
@ -132,19 +132,19 @@ The transformation can be based on:
|
||||||
enabled=lambda node: node.method.value == "manual",
|
enabled=lambda node: node.method.value == "manual",
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='landmarksDescriberTypes',
|
name="landmarksDescriberTypes",
|
||||||
label='Landmarks Describer Types',
|
label="Landmarks Describer Types",
|
||||||
description='Image describer types used to compute the mean of the point cloud. (only for "landmarks" method).',
|
description="Image describer types used to compute the mean of the point cloud (only for 'landmarks' method).",
|
||||||
value=['sift', 'dspsift', 'akaze'],
|
value=["sift", "dspsift", "akaze"],
|
||||||
values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'tag16h5', 'unknown'],
|
values=["sift", "sift_float", "sift_upright", "dspsift", "akaze", "akaze_liop", "akaze_mldb", "cctag3", "cctag4", "sift_ocv", "akaze_ocv", "tag16h5", "unknown"],
|
||||||
exclusive=False,
|
exclusive=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
joinChar=',',
|
joinChar=",",
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name='scale',
|
name="scale",
|
||||||
label='Additional Scale',
|
label="Additional Scale",
|
||||||
description='Additional scale to apply.',
|
description="Additional scale to apply.",
|
||||||
value=1.0,
|
value=1.0,
|
||||||
range=(0.0, 100.0, 0.1),
|
range=(0.0, 100.0, 0.1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
|
@ -152,46 +152,46 @@ The transformation can be based on:
|
||||||
desc.ListAttribute(
|
desc.ListAttribute(
|
||||||
name="markers",
|
name="markers",
|
||||||
elementDesc=desc.GroupAttribute(name="markerAlign", label="Marker Align", description="", joinChar=":", groupDesc=[
|
elementDesc=desc.GroupAttribute(name="markerAlign", label="Marker Align", description="", joinChar=":", groupDesc=[
|
||||||
desc.IntParam(name="markerId", label="Marker", description="Marker Id", value=0, uid=[0], range=(0, 32, 1)),
|
desc.IntParam(name="markerId", label="Marker", description="Marker ID.", value=0, uid=[0], range=(0, 32, 1)),
|
||||||
desc.GroupAttribute(name="markerCoord", label="Coord", description="", joinChar=",", groupDesc=[
|
desc.GroupAttribute(name="markerCoord", label="Coord", description="Marker coordinates.", joinChar=",", groupDesc=[
|
||||||
desc.FloatParam(name="x", label="x", description="", value=0.0, uid=[0], range=(-2.0, 2.0, 1.0)),
|
desc.FloatParam(name="x", label="x", description="X coordinates for the marker.", value=0.0, uid=[0], range=(-2.0, 2.0, 1.0)),
|
||||||
desc.FloatParam(name="y", label="y", description="", value=0.0, uid=[0], range=(-2.0, 2.0, 1.0)),
|
desc.FloatParam(name="y", label="y", description="Y coordinates for the marker.", value=0.0, uid=[0], range=(-2.0, 2.0, 1.0)),
|
||||||
desc.FloatParam(name="z", label="z", description="", value=0.0, uid=[0], range=(-2.0, 2.0, 1.0)),
|
desc.FloatParam(name="z", label="z", description="Z coordinates for the marker.", value=0.0, uid=[0], range=(-2.0, 2.0, 1.0)),
|
||||||
])
|
])
|
||||||
]),
|
]),
|
||||||
label="Markers",
|
label="Markers",
|
||||||
description="Markers alignment points",
|
description="Markers alignment points.",
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='applyScale',
|
name="applyScale",
|
||||||
label='Scale',
|
label="Scale",
|
||||||
description='Apply scale transformation.',
|
description="Apply scale transformation.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
enabled=lambda node: node.method.value != "manual",
|
enabled=lambda node: node.method.value != "manual",
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='applyRotation',
|
name="applyRotation",
|
||||||
label='Rotation',
|
label="Rotation",
|
||||||
description='Apply rotation transformation.',
|
description="Apply rotation transformation.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
enabled=lambda node: node.method.value != "manual",
|
enabled=lambda node: node.method.value != "manual",
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='applyTranslation',
|
name="applyTranslation",
|
||||||
label='Translation',
|
label="Translation",
|
||||||
description='Apply translation transformation.',
|
description="Apply translation transformation.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
enabled=lambda node: node.method.value != "manual",
|
enabled=lambda node: node.method.value != "manual",
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='verboseLevel',
|
name="verboseLevel",
|
||||||
label='Verbose Level',
|
label="Verbose Level",
|
||||||
description='''verbosity level (fatal, error, warning, info, debug, trace).''',
|
description="Verbosity level (fatal, error, warning, info, debug, trace).",
|
||||||
value='info',
|
value="info",
|
||||||
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
|
values=["fatal", "error", "warning", "info", "debug", "trace"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
|
@ -199,17 +199,17 @@ The transformation can be based on:
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='output',
|
name="output",
|
||||||
label='SfMData File',
|
label="SfMData File",
|
||||||
description='''Aligned SfMData file .''',
|
description="Aligned SfMData file.",
|
||||||
value=lambda attr: desc.Node.internalFolder + (os.path.splitext(os.path.basename(attr.node.input.value))[0] or 'sfmData') + '.abc',
|
value=lambda attr: desc.Node.internalFolder + (os.path.splitext(os.path.basename(attr.node.input.value))[0] or "sfmData") + ".abc",
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='outputViewsAndPoses',
|
name="outputViewsAndPoses",
|
||||||
label='Poses',
|
label="Poses",
|
||||||
description='''Path to the output sfmdata file with cameras (views and poses).''',
|
description="Path to the output SfMData file with cameras (views and poses).",
|
||||||
value=desc.Node.internalFolder + 'cameras.sfm',
|
value=desc.Node.internalFolder + "cameras.sfm",
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
|
@ -15,17 +15,17 @@ Contrary to the StructureFromMotion node, this node does not infer the camera po
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='input',
|
name="input",
|
||||||
label='SfMData',
|
label="SfMData",
|
||||||
description='SfMData file. Must contain the camera calibration.',
|
description="SfMData file. Must contain the camera calibration.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ListAttribute(
|
desc.ListAttribute(
|
||||||
elementDesc=desc.File(
|
elementDesc=desc.File(
|
||||||
name="featuresFolder",
|
name="featuresFolder",
|
||||||
label="Features Folder",
|
label="Features Folder",
|
||||||
description="",
|
description="Folder containing some extracted features and descriptors.",
|
||||||
value="",
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
|
@ -37,7 +37,7 @@ Contrary to the StructureFromMotion node, this node does not infer the camera po
|
||||||
elementDesc=desc.File(
|
elementDesc=desc.File(
|
||||||
name="matchesFolder",
|
name="matchesFolder",
|
||||||
label="Matches Folder",
|
label="Matches Folder",
|
||||||
description="",
|
description="Folder in which some computed matches are stored.",
|
||||||
value="",
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
|
@ -46,104 +46,105 @@ Contrary to the StructureFromMotion node, this node does not infer the camera po
|
||||||
description="Folder(s) in which computed matches are stored."
|
description="Folder(s) in which computed matches are stored."
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='describerTypes',
|
name="describerTypes",
|
||||||
label='Describer Types',
|
label="Describer Types",
|
||||||
description='Describer types used to describe an image.',
|
description="Describer types used to describe an image.",
|
||||||
value=['dspsift'],
|
value=["dspsift"],
|
||||||
values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'tag16h5'],
|
values=["sift", "sift_float", "sift_upright", "dspsift", "akaze", "akaze_liop", "akaze_mldb", "cctag3", "cctag4", "sift_ocv", "akaze_ocv", "tag16h5"],
|
||||||
exclusive=False,
|
exclusive=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
joinChar=',',
|
joinChar=",",
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='maxNumberOfMatches',
|
name="maxNumberOfMatches",
|
||||||
label='Maximum Number of Matches',
|
label="Maximum Number Of Matches",
|
||||||
description='Maximum number of matches per image pair (and per feature type). \n'
|
description="Maximum number of matches per image pair (and per feature type).\n"
|
||||||
'This can be useful to have a quick reconstruction overview. \n'
|
"This can be useful to have a quick reconstruction overview.\n"
|
||||||
'0 means no limit.',
|
"0 means no limit.",
|
||||||
value=0,
|
value=0,
|
||||||
range=(0, 50000, 1),
|
range=(0, 50000, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='minNumberOfMatches',
|
name="minNumberOfMatches",
|
||||||
label='Minimum Number of Matches',
|
label="Minimum Number Of Matches",
|
||||||
description='Minimum number of matches per image pair (and per feature type). \n'
|
description="Minimum number of matches per image pair (and per feature type).\n"
|
||||||
'This can be useful to have a meaningful reconstruction with accurate keypoints. 0 means no limit.',
|
"This can be useful to have a meaningful reconstruction with accurate keypoints.\n"
|
||||||
|
"0 means no limit.",
|
||||||
value=0,
|
value=0,
|
||||||
range=(0, 50000, 1),
|
range=(0, 50000, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='minNumberOfObservationsForTriangulation',
|
name="minNumberOfObservationsForTriangulation",
|
||||||
label='Min Observation For Triangulation',
|
label="Min Observations For Triangulation",
|
||||||
description='Minimum number of observations to triangulate a point.\n'
|
description="Minimum number of observations to triangulate a point.\n"
|
||||||
'Set it to 3 (or more) reduces drastically the noise in the point cloud,\n'
|
"Setting it to 3 (or more) reduces drastically the noise in the point cloud,\n"
|
||||||
'but the number of final poses is a little bit reduced\n'
|
"but the number of final poses is a little bit reduced\n"
|
||||||
'(from 1.5% to 11% on the tested datasets).',
|
"(from 1.5% to 11% on the tested datasets).",
|
||||||
value=2,
|
value=2,
|
||||||
range=(2, 10, 1),
|
range=(2, 10, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name='minAngleForTriangulation',
|
name="minAngleForTriangulation",
|
||||||
label='Min Angle For Triangulation',
|
label="Min Angle For Triangulation",
|
||||||
description='Minimum angle for triangulation.',
|
description="Minimum angle for triangulation.",
|
||||||
value=3.0,
|
value=3.0,
|
||||||
range=(0.1, 10.0, 0.1),
|
range=(0.1, 10.0, 0.1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name='minAngleForLandmark',
|
name="minAngleForLandmark",
|
||||||
label='Min Angle For Landmark',
|
label="Min Angle For Landmark",
|
||||||
description='Minimum angle for landmark.',
|
description="Minimum angle for landmark.",
|
||||||
value=2.0,
|
value=2.0,
|
||||||
range=(0.1, 10.0, 0.1),
|
range=(0.1, 10.0, 0.1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='useRigConstraint',
|
name="useRigConstraint",
|
||||||
label='Use Rig Constraint',
|
label="Use Rig Constraint",
|
||||||
description='Enable/Disable rig constraint.',
|
description="Enable/Disable rig constraint.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='rigMinNbCamerasForCalibration',
|
name="rigMinNbCamerasForCalibration",
|
||||||
label='Min Nb Cameras For Rig Calibration',
|
label="Min Nb Cameras For Rig Calibration",
|
||||||
description='Minimal number of cameras to start the calibration of the rig',
|
description="Minimum number of cameras to start the calibration of the rig.",
|
||||||
value=20,
|
value=20,
|
||||||
range=(1, 50, 1),
|
range=(1, 50, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='computeStructureColor',
|
name="computeStructureColor",
|
||||||
label='Compute Structure Color',
|
label="Compute Structure Color",
|
||||||
description='Enable/Disable color computation of each 3D point.',
|
description="Enable/Disable color computation of each 3D point.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='interFileExtension',
|
name="interFileExtension",
|
||||||
label='Inter File Extension',
|
label='Inter File Extension',
|
||||||
description='Extension of the intermediate file export.',
|
description="Extension of the intermediate file export.",
|
||||||
value='.abc',
|
value=".abc",
|
||||||
values=('.abc', '.ply'),
|
values=(".abc", ".ply"),
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[],
|
uid=[],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='verboseLevel',
|
name="verboseLevel",
|
||||||
label='Verbose Level',
|
label="Verbose Level",
|
||||||
description='Verbosity level (fatal, error, warning, info, debug, trace).',
|
description="Verbosity level (fatal, error, warning, info, debug, trace).",
|
||||||
value='info',
|
value="info",
|
||||||
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
|
values=["fatal", "error", "warning", "info", "debug", "trace"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[],
|
uid=[],
|
||||||
)
|
)
|
||||||
|
@ -151,16 +152,16 @@ Contrary to the StructureFromMotion node, this node does not infer the camera po
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='output',
|
name="output",
|
||||||
label='SfMData',
|
label="SfMData",
|
||||||
description='Path to the output sfmdata file',
|
description="Path to the output SfMData file.",
|
||||||
value=desc.Node.internalFolder + 'sfm.abc',
|
value=desc.Node.internalFolder + "sfm.abc",
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='extraInfoFolder',
|
name="extraInfoFolder",
|
||||||
label='Folder',
|
label="Folder",
|
||||||
description='Folder for intermediate reconstruction files and additional reconstruction information files.',
|
description="Folder for intermediate reconstruction files and additional reconstruction information files.",
|
||||||
value=desc.Node.internalFolder,
|
value=desc.Node.internalFolder,
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
|
|
|
@ -72,46 +72,46 @@ Upload a textured mesh on Sketchfab.
|
||||||
group="",
|
group="",
|
||||||
),
|
),
|
||||||
desc.StringParam(
|
desc.StringParam(
|
||||||
name='apiToken',
|
name="apiToken",
|
||||||
label='API Token',
|
label="API Token",
|
||||||
description='Get your token from https://sketchfab.com/settings/password',
|
description="Get your token from https://sketchfab.com/settings/password.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.StringParam(
|
desc.StringParam(
|
||||||
name='title',
|
name="title",
|
||||||
label='Title',
|
label="Title",
|
||||||
description='Title cannot be longer than 48 characters.',
|
description="Title cannot be longer than 48 characters.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.StringParam(
|
desc.StringParam(
|
||||||
name='description',
|
name="description",
|
||||||
label='Description',
|
label="Description",
|
||||||
description='Description cannot be longer than 1024 characters.',
|
description="Description cannot be longer than 1024 characters.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='license',
|
name="license",
|
||||||
label='License',
|
label="License",
|
||||||
description='License label.',
|
description="License label.",
|
||||||
value='CC Attribution',
|
value="CC Attribution",
|
||||||
values=['CC Attribution',
|
values=["CC Attribution",
|
||||||
'CC Attribution-ShareAlike',
|
"CC Attribution-ShareAlike",
|
||||||
'CC Attribution-NoDerivs',
|
"CC Attribution-NoDerivs",
|
||||||
'CC Attribution-NonCommercial',
|
"CC Attribution-NonCommercial",
|
||||||
'CC Attribution-NonCommercial-ShareAlike',
|
"CC Attribution-NonCommercial-ShareAlike",
|
||||||
'CC Attribution-NonCommercial-NoDerivs'],
|
"CC Attribution-NonCommercial-NoDerivs"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ListAttribute(
|
desc.ListAttribute(
|
||||||
elementDesc=desc.StringParam(
|
elementDesc=desc.StringParam(
|
||||||
name='tag',
|
name="tag",
|
||||||
label='Tag',
|
label="Tag",
|
||||||
description='Tag cannot be longer than 48 characters.',
|
description="Tag cannot be longer than 48 characters.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
name="tags",
|
name="tags",
|
||||||
|
@ -120,66 +120,66 @@ Upload a textured mesh on Sketchfab.
|
||||||
group="",
|
group="",
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='category',
|
name="category",
|
||||||
label='Category',
|
label="Category",
|
||||||
description='Adding categories helps improve the discoverability of your model.',
|
description="Adding categories helps improve the discoverability of your model.",
|
||||||
value='none',
|
value="none",
|
||||||
values=['none',
|
values=["none",
|
||||||
'animals-pets',
|
"animals-pets",
|
||||||
'architecture',
|
"architecture",
|
||||||
'art-abstract',
|
"art-abstract",
|
||||||
'cars-vehicles',
|
"cars-vehicles",
|
||||||
'characters-creatures',
|
"characters-creatures",
|
||||||
'cultural-heritage-history',
|
"cultural-heritage-history",
|
||||||
'electronics-gadgets',
|
"electronics-gadgets",
|
||||||
'fashion-style',
|
"fashion-style",
|
||||||
'food-drink',
|
"food-drink",
|
||||||
'furniture-home',
|
"furniture-home",
|
||||||
'music',
|
"music",
|
||||||
'nature-plants',
|
"nature-plants",
|
||||||
'news-politics',
|
"news-politics",
|
||||||
'people',
|
"people",
|
||||||
'places-travel',
|
"places-travel",
|
||||||
'science-technology',
|
"science-technology",
|
||||||
'sports-fitness',
|
"sports-fitness",
|
||||||
'weapons-military'],
|
"weapons-military"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='isPublished',
|
name="isPublished",
|
||||||
label='Publish',
|
label="Publish",
|
||||||
description='If the model is not published it will be saved as a draft.',
|
description="If the model is not published, it will be saved as a draft.",
|
||||||
value=False,
|
value=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='isInspectable',
|
name="isInspectable",
|
||||||
label='Inspectable',
|
label="Inspectable",
|
||||||
description='Allow 2D view in model inspector.',
|
description="Allow 2D view in model inspector.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='isPrivate',
|
name="isPrivate",
|
||||||
label='Private',
|
label="Private",
|
||||||
description='Requires a pro account.',
|
description="Requires a pro account.",
|
||||||
value=False,
|
value=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.StringParam(
|
desc.StringParam(
|
||||||
name='password',
|
name="password",
|
||||||
label='Password',
|
label="Password",
|
||||||
description='Requires a pro account.',
|
description="Requires a pro account.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='verboseLevel',
|
name="verboseLevel",
|
||||||
label='Verbose Level',
|
label="Verbose Level",
|
||||||
description='''verbosity level (critical, error, warning, info, debug).''',
|
description="Verbosity level (critical, error, warning, info, debug).",
|
||||||
value='info',
|
value="info",
|
||||||
values=['critical', 'error', 'warning', 'info', 'debug'],
|
values=["critical", "error", "warning", "info", "debug"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
|
|
|
@ -13,23 +13,23 @@ Spheres can be automatically detected or manually defined in the interface.
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='input',
|
name="input",
|
||||||
label="SfMData",
|
label="SfMData",
|
||||||
description='Input SfMData file.',
|
description="Input SfMData file.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0]
|
uid=[0]
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='modelPath',
|
name="modelPath",
|
||||||
label='Detection Network',
|
label="Detection Network",
|
||||||
description='Deep learning network for automatic calibration sphere detection.',
|
description="Deep learning network for automatic calibration sphere detection.",
|
||||||
value='${ALICEVISION_SPHERE_DETECTION_MODEL}',
|
value="${ALICEVISION_SPHERE_DETECTION_MODEL}",
|
||||||
uid=[0]
|
uid=[0]
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='autoDetect',
|
name="autoDetect",
|
||||||
label='Automatic Sphere Detection',
|
label="Automatic Sphere Detection",
|
||||||
description='Automatic detection of calibration spheres',
|
description="Automatic detection of calibration spheres.",
|
||||||
value=False,
|
value=False,
|
||||||
uid=[0]
|
uid=[0]
|
||||||
),
|
),
|
||||||
|
@ -48,12 +48,12 @@ Spheres can be automatically detected or manually defined in the interface.
|
||||||
description="Center of the circle (XY offset to the center of the image in pixels).",
|
description="Center of the circle (XY offset to the center of the image in pixels).",
|
||||||
groupDesc=[
|
groupDesc=[
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name="x", label="x", description="X Offset in pixels",
|
name="x", label="x", description="X offset in pixels.",
|
||||||
value=0.0,
|
value=0.0,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
range=(-1000.0, 10000.0, 1.0)),
|
range=(-1000.0, 10000.0, 1.0)),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name="y", label="y", description="Y Offset in pixels",
|
name="y", label="y", description="Y offset in pixels.",
|
||||||
value=0.0,
|
value=0.0,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
range=(-1000.0, 10000.0, 1.0)),
|
range=(-1000.0, 10000.0, 1.0)),
|
||||||
|
@ -62,30 +62,30 @@ Spheres can be automatically detected or manually defined in the interface.
|
||||||
group=None # skip group from command line
|
group=None # skip group from command line
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name='sphereRadius',
|
name="sphereRadius",
|
||||||
label='Radius',
|
label="Radius",
|
||||||
description='Sphere radius in pixels.',
|
description="Sphere radius in pixels.",
|
||||||
value=500.0,
|
value=500.0,
|
||||||
range=(0.0, 1000.0, 0.1),
|
range=(0.0, 1000.0, 0.1),
|
||||||
enabled=lambda node: not node.autoDetect.value,
|
enabled=lambda node: not node.autoDetect.value,
|
||||||
uid=[0]
|
uid=[0]
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='verboseLevel',
|
name="verboseLevel",
|
||||||
label='Verbose Level',
|
label="Verbose Level",
|
||||||
description='Verbosity level (fatal, error, warning, info, debug, trace).',
|
description="Verbosity level (fatal, error, warning, info, debug, trace).",
|
||||||
value='info',
|
value="info",
|
||||||
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
|
values=["fatal", "error", "warning", "info", "debug", "trace"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[]
|
uid=[],
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='output',
|
name="output",
|
||||||
label='Output Folder',
|
label="Output Folder",
|
||||||
description='Sphere detection information will be written here.',
|
description="Sphere detection information will be written here.",
|
||||||
value=desc.Node.internalFolder,
|
value=desc.Node.internalFolder,
|
||||||
uid=[]
|
uid=[]
|
||||||
)
|
)
|
||||||
|
|
|
@ -28,83 +28,83 @@ class Split360Images(desc.AVCommandLineNode):
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='input',
|
name="input",
|
||||||
label='Input',
|
label="Input",
|
||||||
description="Single image, image folder or SfMData file.",
|
description="Single image, image folder or SfMData file.",
|
||||||
value='',
|
value='',
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='splitMode',
|
name="splitMode",
|
||||||
label='Split Mode',
|
label="Split Mode",
|
||||||
description="Split mode (equirectangular, dualfisheye)",
|
description="Split mode (equirectangular, dualfisheye).",
|
||||||
value='equirectangular',
|
value="equirectangular",
|
||||||
values=['equirectangular', 'dualfisheye'],
|
values=["equirectangular", "dualfisheye"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.GroupAttribute(name="dualFisheyeGroup", label="Dual Fisheye", description="Dual Fisheye", group=None,
|
desc.GroupAttribute(name="dualFisheyeGroup", label="Dual Fisheye", description="Dual Fisheye.", group=None,
|
||||||
enabled=lambda node: node.splitMode.value == 'dualfisheye',
|
enabled=lambda node: node.splitMode.value == "dualfisheye",
|
||||||
groupDesc=[
|
groupDesc=[
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='dualFisheyeOffsetPresetX',
|
name="dualFisheyeOffsetPresetX",
|
||||||
label='X Offset Preset',
|
label="X Offset Preset",
|
||||||
description="Dual-Fisheye X offset preset",
|
description="Dual-Fisheye X offset preset.",
|
||||||
value='center',
|
value="center",
|
||||||
values=['center', 'left', 'right'],
|
values=["center", "left", "right"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='dualFisheyeOffsetPresetY',
|
name="dualFisheyeOffsetPresetY",
|
||||||
label='Y Offset Preset',
|
label="Y Offset Preset",
|
||||||
description="Dual-Fisheye Y offset preset",
|
description="Dual-Fisheye Y offset preset.",
|
||||||
value='center',
|
value="center",
|
||||||
values=['center', 'top', 'bottom'],
|
values=["center", "top", "bottom"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='dualFisheyeCameraModel',
|
name="dualFisheyeCameraModel",
|
||||||
label='Camera Model',
|
label="Camera Model",
|
||||||
description="Dual-Fisheye camera model",
|
description="Dual-Fisheye camera model.",
|
||||||
value='fisheye4',
|
value="fisheye4",
|
||||||
values=['fisheye4', 'equidistant_r3'],
|
values=["fisheye4", "equidistant_r3"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
desc.GroupAttribute(name="equirectangularGroup", label="Equirectangular", description="Equirectangular", group=None,
|
desc.GroupAttribute(name="equirectangularGroup", label="Equirectangular", description="Equirectangular", group=None,
|
||||||
enabled=lambda node: node.splitMode.value == 'equirectangular',
|
enabled=lambda node: node.splitMode.value == "equirectangular",
|
||||||
groupDesc=[
|
groupDesc=[
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='equirectangularNbSplits',
|
name="equirectangularNbSplits",
|
||||||
label='Nb Splits',
|
label='Nb Splits',
|
||||||
description="Equirectangular number of splits",
|
description="Equirectangular number of splits.",
|
||||||
value=2,
|
value=2,
|
||||||
range=(1, 100, 1),
|
range=(1, 100, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='equirectangularSplitResolution',
|
name="equirectangularSplitResolution",
|
||||||
label='Split Resolution',
|
label="Split Resolution",
|
||||||
description="Equirectangular split resolution",
|
description="Equirectangular split resolution.",
|
||||||
value=1200,
|
value=1200,
|
||||||
range=(100, 10000, 1),
|
range=(100, 10000, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='equirectangularPreviewMode',
|
name="equirectangularPreviewMode",
|
||||||
label='Preview Mode',
|
label="Preview Mode",
|
||||||
description="Export a SVG file that simulates the split",
|
description="Export a SVG file that simulates the split.",
|
||||||
value=False,
|
value=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name='fov',
|
name="fov",
|
||||||
label='Field of View',
|
label="Field Of View",
|
||||||
description="Field of View to extract (in degree)",
|
description="Field of View to extract (in degrees).",
|
||||||
value=110.0,
|
value=110.0,
|
||||||
range=(0.0, 180.0, 1.0),
|
range=(0.0, 180.0, 1.0),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
|
@ -112,20 +112,20 @@ class Split360Images(desc.AVCommandLineNode):
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='extension',
|
name="extension",
|
||||||
label='Output File Extension',
|
label="Output File Extension",
|
||||||
description='Output Image File Extension.',
|
description="Output image file extension.",
|
||||||
value='',
|
value="",
|
||||||
values=['', 'exr', 'jpg', 'tiff', 'png'],
|
values=["", "exr", "jpg", "tiff", "png"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='verboseLevel',
|
name="verboseLevel",
|
||||||
label='Verbose Level',
|
label="Verbose Level",
|
||||||
description='''verbosity level (fatal, error, warning, info, debug, trace).''',
|
description="Verbosity level (fatal, error, warning, info, debug, trace).",
|
||||||
value='info',
|
value="info",
|
||||||
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
|
values=["fatal", "error", "warning", "info", "debug", "trace"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
|
@ -133,17 +133,17 @@ class Split360Images(desc.AVCommandLineNode):
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='output',
|
name="output",
|
||||||
label='Folder',
|
label="Folder",
|
||||||
description="Output folder for extracted frames.",
|
description="Output folder for extracted frames.",
|
||||||
value=desc.Node.internalFolder,
|
value=desc.Node.internalFolder,
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='outSfMData',
|
name="outSfMData",
|
||||||
label='SfMData file',
|
label="SfMData File",
|
||||||
description="Output SfMData file.",
|
description="Output SfMData file.",
|
||||||
value=desc.Node.internalFolder + 'rig.sfm',
|
value=desc.Node.internalFolder + "rig.sfm",
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
|
@ -63,10 +63,10 @@ It iterates like that, adding cameras and triangulating new 2D features into 3D
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='input',
|
name="input",
|
||||||
label='SfMData',
|
label="SfMData",
|
||||||
description='SfMData file.',
|
description='SfMData file.',
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ListAttribute(
|
desc.ListAttribute(
|
||||||
|
@ -91,291 +91,293 @@ It iterates like that, adding cameras and triangulating new 2D features into 3D
|
||||||
),
|
),
|
||||||
name="matchesFolders",
|
name="matchesFolders",
|
||||||
label="Matches Folders",
|
label="Matches Folders",
|
||||||
description="Folder(s) in which computed matches are stored."
|
description="Folder(s) in which the computed matches are stored."
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='describerTypes',
|
name="describerTypes",
|
||||||
label='Describer Types',
|
label="Describer Types",
|
||||||
description='Describer types used to describe an image.',
|
description="Describer types used to describe an image.",
|
||||||
value=['dspsift'],
|
value=["dspsift"],
|
||||||
values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'tag16h5'],
|
values=["sift", "sift_float", "sift_upright", "dspsift", "akaze", "akaze_liop", "akaze_mldb", "cctag3", "cctag4", "sift_ocv", "akaze_ocv", "tag16h5"],
|
||||||
exclusive=False,
|
exclusive=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
joinChar=',',
|
joinChar=",",
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='localizerEstimator',
|
name="localizerEstimator",
|
||||||
label='Localizer Estimator',
|
label="Localizer Estimator",
|
||||||
description='Estimator type used to localize cameras (acransac, ransac, lsmeds, loransac, maxconsensus).',
|
description="Estimator type used to localize cameras (acransac, ransac, lsmeds, loransac, maxconsensus).",
|
||||||
value='acransac',
|
value="acransac",
|
||||||
values=['acransac', 'ransac', 'lsmeds', 'loransac', 'maxconsensus'],
|
values=["acransac", "ransac", "lsmeds", "loransac", "maxconsensus"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='observationConstraint',
|
name="observationConstraint",
|
||||||
label='Observation Constraint',
|
label="Observation Constraint",
|
||||||
description='Observation constraint mode used in the optimization:\n'
|
description="Observation constraint mode used in the optimization:\n"
|
||||||
' * Basic: Use standard reprojection error in pixel coordinates\n'
|
" - Basic: Use standard reprojection error in pixel coordinates.\n"
|
||||||
' * Scale: Use reprojection error in pixel coordinates but relative to the feature scale',
|
" - Scale: Use reprojection error in pixel coordinates but relative to the feature scale.",
|
||||||
value='Scale',
|
value="Scale",
|
||||||
values=['Basic', 'Scale'],
|
values=["Basic", "Scale"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='localizerEstimatorMaxIterations',
|
name="localizerEstimatorMaxIterations",
|
||||||
label='Localizer Max Ransac Iterations',
|
label="Localizer Max Ransac Iterations",
|
||||||
description='Maximum number of iterations allowed in ransac step.',
|
description="Maximum number of iterations allowed in the Ransac step.",
|
||||||
value=4096,
|
value=4096,
|
||||||
range=(1, 20000, 1),
|
range=(1, 20000, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name='localizerEstimatorError',
|
name="localizerEstimatorError",
|
||||||
label='Localizer Max Ransac Error',
|
label="Localizer Max Ransac Error",
|
||||||
description='Maximum error (in pixels) allowed for camera localization (resectioning).\n'
|
description="Maximum error (in pixels) allowed for camera localization (resectioning).\n"
|
||||||
'If set to 0, it will select a threshold according to the localizer estimator used\n'
|
"If set to 0, it will select a threshold according to the localizer estimator used\n"
|
||||||
'(if ACRansac, it will analyze the input data to select the optimal value).',
|
"(if ACRansac, it will analyze the input data to select the optimal value).",
|
||||||
value=0.0,
|
value=0.0,
|
||||||
range=(0.0, 100.0, 0.1),
|
range=(0.0, 100.0, 0.1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='lockScenePreviouslyReconstructed',
|
name="lockScenePreviouslyReconstructed",
|
||||||
label='Lock Scene Previously Reconstructed',
|
label="Lock Previously Reconstructed Scene",
|
||||||
description='This option is useful for SfM augmentation. Lock previously reconstructed poses and intrinsics.',
|
description="Lock previously reconstructed poses and intrinsics.\n"
|
||||||
|
"This option is useful for SfM augmentation.",
|
||||||
value=False,
|
value=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='useLocalBA',
|
name="useLocalBA",
|
||||||
label='Local Bundle Adjustment',
|
label="Local Bundle Adjustment",
|
||||||
description='It reduces the reconstruction time, especially for large datasets (500+ images),\n'
|
description="It reduces the reconstruction time, especially for large datasets (500+ images),\n"
|
||||||
'by avoiding computation of the Bundle Adjustment on areas that are not changing.',
|
"by avoiding computation of the Bundle Adjustment on areas that are not changing.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='localBAGraphDistance',
|
name="localBAGraphDistance",
|
||||||
label='LocalBA Graph Distance',
|
label="LocalBA Graph Distance",
|
||||||
description='Graph-distance limit to define the Active region in the Local Bundle Adjustment strategy.',
|
description="Graph-distance limit to define the active region in the Local Bundle Adjustment strategy.",
|
||||||
value=1,
|
value=1,
|
||||||
range=(2, 10, 1),
|
range=(2, 10, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='nbFirstUnstableCameras',
|
name="nbFirstUnstableCameras",
|
||||||
label='First Unstable Cameras Nb',
|
label="First Unstable Cameras Nb",
|
||||||
description='Number of cameras for which the bundle adjustment is performed every single time a camera is added.\n'
|
description="Number of cameras for which the bundle adjustment is performed every single time a camera is added.\n"
|
||||||
'This leads to more stable results while computations are not too expensive, as there is little data.\n'
|
"This leads to more stable results while computations are not too expensive, as there is little data.\n"
|
||||||
'Past this number, the bundle adjustment will only be performed once for N added cameras.',
|
"Past this number, the bundle adjustment will only be performed once for N added cameras.",
|
||||||
value=30,
|
value=30,
|
||||||
range=(0, 100, 1),
|
range=(0, 100, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True
|
advanced=True
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='maxImagesPerGroup',
|
name="maxImagesPerGroup",
|
||||||
label='Max Images Per Group',
|
label="Max Images Per Group",
|
||||||
description='Maximum number of cameras that can be added before the bundle adjustment has to be performed again.\n'
|
description="Maximum number of cameras that can be added before the bundle adjustment has to be performed again.\n"
|
||||||
'This prevents adding too much data at once without performing the bundle adjustment.',
|
"This prevents adding too much data at once without performing the bundle adjustment.",
|
||||||
value=30,
|
value=30,
|
||||||
range=(0, 100, 1),
|
range=(0, 100, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True
|
advanced=True
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='bundleAdjustmentMaxOutliers',
|
name="bundleAdjustmentMaxOutliers",
|
||||||
label='Max Nb of Outliers after BA',
|
label="Max Nb Of Outliers After BA",
|
||||||
description='Threshold for the maximum number of outliers allowed at the end of a bundle adjustment iteration.\n'
|
description="Threshold for the maximum number of outliers allowed at the end of a bundle adjustment iteration.\n"
|
||||||
'Using a negative value for this threshold will disable BA iterations.',
|
"Using a negative value for this threshold will disable BA iterations.",
|
||||||
value=50,
|
value=50,
|
||||||
range=(-1, 1000, 1),
|
range=(-1, 1000, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True
|
advanced=True
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='maxNumberOfMatches',
|
name="maxNumberOfMatches",
|
||||||
label='Maximum Number of Matches',
|
label="Maximum Number Of Matches",
|
||||||
description='Maximum number of matches per image pair (and per feature type). \n'
|
description="Maximum number of matches per image pair (and per feature type).\n"
|
||||||
'This can be useful to have a quick reconstruction overview. \n'
|
"This can be useful to have a quick reconstruction overview.\n"
|
||||||
'0 means no limit.',
|
"0 means no limit.",
|
||||||
value=0,
|
value=0,
|
||||||
range=(0, 50000, 1),
|
range=(0, 50000, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='minNumberOfMatches',
|
name="minNumberOfMatches",
|
||||||
label='Minimum Number of Matches',
|
label="Minimum Number Of Matches",
|
||||||
description='Minimum number of matches per image pair (and per feature type). \n'
|
description="Minimum number of matches per image pair (and per feature type).\n"
|
||||||
'This can be useful to have a meaningful reconstruction with accurate keypoints. 0 means no limit.',
|
"This can be useful to have a meaningful reconstruction with accurate keypoints.\n"
|
||||||
|
"0 means no limit.",
|
||||||
value=0,
|
value=0,
|
||||||
range=(0, 50000, 1),
|
range=(0, 50000, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='minInputTrackLength',
|
name="minInputTrackLength",
|
||||||
label='Min Input Track Length',
|
label="Min Input Track Length",
|
||||||
description='Minimum track length in input of SfM',
|
description="Minimum track length in input of SfM.",
|
||||||
value=2,
|
value=2,
|
||||||
range=(2, 10, 1),
|
range=(2, 10, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='minNumberOfObservationsForTriangulation',
|
name="minNumberOfObservationsForTriangulation",
|
||||||
label='Min Observation For Triangulation',
|
label="Min Observations For Triangulation",
|
||||||
description='Minimum number of observations to triangulate a point.\n'
|
description="Minimum number of observations to triangulate a point.\n"
|
||||||
'Set it to 3 (or more) reduces drastically the noise in the point cloud,\n'
|
"Setting it to 3 (or more) reduces drastically the noise in the point cloud,\n"
|
||||||
'but the number of final poses is a little bit reduced\n'
|
"but the number of final poses is a little bit reduced\n"
|
||||||
'(from 1.5% to 11% on the tested datasets).',
|
"(from 1.5% to 11% on the tested datasets).",
|
||||||
value=2,
|
value=2,
|
||||||
range=(2, 10, 1),
|
range=(2, 10, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name='minAngleForTriangulation',
|
name="minAngleForTriangulation",
|
||||||
label='Min Angle For Triangulation',
|
label="Min Angle For Triangulation",
|
||||||
description='Minimum angle for triangulation.',
|
description="Minimum angle for triangulation.",
|
||||||
value=3.0,
|
value=3.0,
|
||||||
range=(0.1, 10.0, 0.1),
|
range=(0.1, 10.0, 0.1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name='minAngleForLandmark',
|
name="minAngleForLandmark",
|
||||||
label='Min Angle For Landmark',
|
label="Min Angle For Landmark",
|
||||||
description='Minimum angle for landmark.',
|
description="Minimum angle for landmark.",
|
||||||
value=2.0,
|
value=2.0,
|
||||||
range=(0.1, 10.0, 0.1),
|
range=(0.1, 10.0, 0.1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name='maxReprojectionError',
|
name="maxReprojectionError",
|
||||||
label='Max Reprojection Error',
|
label="Max Reprojection Error",
|
||||||
description='Maximum reprojection error.',
|
description="Maximum reprojection error.",
|
||||||
value=4.0,
|
value=4.0,
|
||||||
range=(0.1, 10.0, 0.1),
|
range=(0.1, 10.0, 0.1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name='minAngleInitialPair',
|
name="minAngleInitialPair",
|
||||||
label='Min Angle Initial Pair',
|
label="Min Angle Initial Pair",
|
||||||
description='Minimum angle for the initial pair.',
|
description="Minimum angle for the initial pair.",
|
||||||
value=5.0,
|
value=5.0,
|
||||||
range=(0.1, 10.0, 0.1),
|
range=(0.1, 10.0, 0.1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name='maxAngleInitialPair',
|
name="maxAngleInitialPair",
|
||||||
label='Max Angle Initial Pair',
|
label="Max Angle Initial Pair",
|
||||||
description='Maximum angle for the initial pair.',
|
description="Maximum angle for the initial pair.",
|
||||||
value=40.0,
|
value=40.0,
|
||||||
range=(0.1, 60.0, 0.1),
|
range=(0.1, 60.0, 0.1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='useOnlyMatchesFromInputFolder',
|
name="useOnlyMatchesFromInputFolder",
|
||||||
label='Use Only Matches From Input Folder',
|
label="Use Only Matches From Input Folder",
|
||||||
description='Use only matches from the input matchesFolder parameter.\n'
|
description="Use only matches from the input matchesFolder parameter.\n"
|
||||||
'Matches folders previously added to the SfMData file will be ignored.',
|
"Matches folders previously added to the SfMData file will be ignored.",
|
||||||
value=False,
|
value=False,
|
||||||
uid=[],
|
uid=[],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='useRigConstraint',
|
name="useRigConstraint",
|
||||||
label='Use Rig Constraint',
|
label="Use Rig Constraint",
|
||||||
description='Enable/Disable rig constraint.',
|
description="Enable/Disable rig constraint.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='rigMinNbCamerasForCalibration',
|
name="rigMinNbCamerasForCalibration",
|
||||||
label='Min Nb Cameras For Rig Calibration',
|
label="Min Nb Cameras For Rig Calibration",
|
||||||
description='Minimal number of cameras to start the calibration of the rig',
|
description="Minimum number of cameras to start the calibration of the rig.",
|
||||||
value=20,
|
value=20,
|
||||||
range=(1, 50, 1),
|
range=(1, 50, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='lockAllIntrinsics',
|
name="lockAllIntrinsics",
|
||||||
label='Force Lock of All Intrinsic Camera Parameters',
|
label="Lock All Intrinsic Camera Parameters",
|
||||||
description='Force to keep constant all the intrinsics parameters of the cameras (focal length, \n'
|
description="Force to keep all the intrinsic parameters of the cameras (focal length, \n"
|
||||||
'principal point, distortion if any) during the reconstruction.\n'
|
"principal point, distortion if any) constant during the reconstruction.\n"
|
||||||
'This may be helpful if the input cameras are already fully calibrated.',
|
"This may be helpful if the input cameras are already fully calibrated.",
|
||||||
value=False,
|
value=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='minNbCamerasToRefinePrincipalPoint',
|
name="minNbCamerasToRefinePrincipalPoint",
|
||||||
label='Min Nb Cameras To Refine Principal Point',
|
label='Min Nb Cameras To Refine Principal Point',
|
||||||
description='Minimal number of cameras to refine the principal point of the cameras (one of the intrinsic parameters of the camera). '
|
description="Minimum number of cameras to refine the principal point of the cameras (one of the intrinsic parameters of the camera).\n"
|
||||||
'If we do not have enough cameras, the principal point in consider is considered in the center of the image. '
|
"If we do not have enough cameras, the principal point is considered to be in the center of the image.\n"
|
||||||
'If minNbCamerasToRefinePrincipalPoint<=0, the principal point is never refined. '
|
"If minNbCamerasToRefinePrincipalPoint <= 0, the principal point is never refined."
|
||||||
'If minNbCamerasToRefinePrincipalPoint==1, the principal point is always refined.',
|
"If minNbCamerasToRefinePrincipalPoint is set to 1, the principal point is always refined.",
|
||||||
value=3,
|
value=3,
|
||||||
range=(0, 20, 1),
|
range=(0, 20, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='filterTrackForks',
|
name="filterTrackForks",
|
||||||
label='Filter Track Forks',
|
label="Filter Track Forks",
|
||||||
description='Enable/Disable the track forks removal. A track contains a fork when incoherent matches \n'
|
description="Enable/Disable the track forks removal. A track contains a fork when incoherent matches \n"
|
||||||
'lead to multiple features in the same image for a single track. \n',
|
"lead to multiple features in the same image for a single track.",
|
||||||
value=False,
|
value=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='computeStructureColor',
|
name="computeStructureColor",
|
||||||
label='Compute Structure Color',
|
label="Compute Structure Color",
|
||||||
description='Enable/Disable color computation of each 3D point.',
|
description="Enable/Disable color computation of every 3D point.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='initialPairA',
|
name="initialPairA",
|
||||||
label='Initial Pair A',
|
label="Initial Pair A",
|
||||||
description='View ID or filename of the first image (either with or without the full path).',
|
description="View ID or filename of the first image (either with or without the full path).",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='initialPairB',
|
name="initialPairB",
|
||||||
label='Initial Pair B',
|
label="Initial Pair B",
|
||||||
description='View ID or filename of the second image (either with or without the full path).',
|
description="View ID or filename of the second image (either with or without the full path).",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='interFileExtension',
|
name="interFileExtension",
|
||||||
label='Inter File Extension',
|
label="Inter File Extension",
|
||||||
description='Extension of the intermediate file export.',
|
description="Extension of the intermediate file export.",
|
||||||
value='.abc',
|
value=".abc",
|
||||||
values=('.abc', '.ply'),
|
values=(".abc", ".ply"),
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[],
|
uid=[],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='verboseLevel',
|
name="verboseLevel",
|
||||||
label='Verbose Level',
|
label="Verbose Level",
|
||||||
description='Verbosity level (fatal, error, warning, info, debug, trace).',
|
description="Verbosity level (fatal, error, warning, info, debug, trace).",
|
||||||
value='info',
|
value="info",
|
||||||
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
|
values=["fatal", "error", "warning", "info", "debug", "trace"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[],
|
uid=[],
|
||||||
)
|
)
|
||||||
|
@ -383,23 +385,23 @@ It iterates like that, adding cameras and triangulating new 2D features into 3D
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='output',
|
name="output",
|
||||||
label='SfMData',
|
label="SfMData",
|
||||||
description='Path to the output sfmdata file',
|
description="Path to the output SfM point cloud file (in SfMData format).",
|
||||||
value=desc.Node.internalFolder + 'sfm.abc',
|
value=desc.Node.internalFolder + "sfm.abc",
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='outputViewsAndPoses',
|
name="outputViewsAndPoses",
|
||||||
label='Views and Poses',
|
label="Views And Poses",
|
||||||
description='''Path to the output sfmdata file with cameras (views and poses).''',
|
description="Path to the output SfMData file with cameras (views and poses).",
|
||||||
value=desc.Node.internalFolder + 'cameras.sfm',
|
value=desc.Node.internalFolder + "cameras.sfm",
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='extraInfoFolder',
|
name="extraInfoFolder",
|
||||||
label='Folder',
|
label="Folder",
|
||||||
description='Folder for intermediate reconstruction files and additional reconstruction information files.',
|
description="Folder for intermediate reconstruction files and additional reconstruction information files.",
|
||||||
value=desc.Node.internalFolder,
|
value=desc.Node.internalFolder,
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
|
|
|
@ -25,146 +25,148 @@ Many cameras are contributing to the low frequencies and only the best ones cont
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='input',
|
name="input",
|
||||||
label='Dense SfMData',
|
label="Dense SfMData",
|
||||||
description='SfMData file.',
|
description="SfMData file.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='imagesFolder',
|
name="imagesFolder",
|
||||||
label='Images Folder',
|
label="Images Folder",
|
||||||
description='Use images from a specific folder instead of those specify in the SfMData file.\nFilename should be the image uid.',
|
description="Use images from a specific folder instead of those specified in the SfMData file.\n"
|
||||||
value='',
|
"Filename should be the image UID.",
|
||||||
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='inputMesh',
|
name="inputMesh",
|
||||||
label='Mesh',
|
label="Mesh",
|
||||||
description='Optional input mesh to texture. By default, it will texture the result of the reconstruction.',
|
description="Optional input mesh to texture. By default, it will texture the result of the reconstruction.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='inputRefMesh',
|
name="inputRefMesh",
|
||||||
label='Ref Mesh',
|
label="Ref Mesh",
|
||||||
description='Optional input mesh to compute height maps and normal maps. If not provided, no additional maps with geometric information will be generated.',
|
description="Optional input mesh to compute height maps and normal maps.\n"
|
||||||
value='',
|
"If not provided, no additional map with geometric information will be generated.",
|
||||||
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='textureSide',
|
name="textureSide",
|
||||||
label='Texture Side',
|
label="Texture Side",
|
||||||
description='''Output texture size''',
|
description="Output texture size.",
|
||||||
value=8192,
|
value=8192,
|
||||||
values=(1024, 2048, 4096, 8192, 16384),
|
values=(1024, 2048, 4096, 8192, 16384),
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='downscale',
|
name="downscale",
|
||||||
label='Texture Downscale',
|
label="Texture Downscale",
|
||||||
description='''Texture downscale factor''',
|
description="Texture downscale factor.",
|
||||||
value=2,
|
value=2,
|
||||||
values=(1, 2, 4, 8),
|
values=(1, 2, 4, 8),
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='outputMeshFileType',
|
name="outputMeshFileType",
|
||||||
label='Mesh File Type',
|
label="Mesh File Type",
|
||||||
description='File Type',
|
description="File type for the mesh output.",
|
||||||
value='obj',
|
value="obj",
|
||||||
values=('obj', 'gltf', 'fbx', 'stl'),
|
values=("obj", "gltf", "fbx", "stl"),
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.GroupAttribute(name="colorMapping", label="Color Mapping", description="Color Map Parameters",
|
desc.GroupAttribute(name="colorMapping", label="Color Mapping", description="Color map parameters.",
|
||||||
enabled=lambda node: (node.imagesFolder.value != ''),
|
enabled=lambda node: (node.imagesFolder.value != ''),
|
||||||
group=None,
|
group=None,
|
||||||
groupDesc=[
|
groupDesc=[
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='enable',
|
name="enable",
|
||||||
label='Enable',
|
label="Enable",
|
||||||
description='Generate Textures',
|
description="Generate textures if set to true.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[],
|
uid=[],
|
||||||
group=None,
|
group=None,
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='colorMappingFileType',
|
name="colorMappingFileType",
|
||||||
label='File Type',
|
label="File Type",
|
||||||
description='Texture File Type',
|
description="Texture file type.",
|
||||||
value='exr',
|
value="exr",
|
||||||
values=('exr', 'png', 'tiff', 'jpg'),
|
values=("exr", "png", "tiff", "jpg"),
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
enabled=lambda node: node.colorMapping.enable.value,
|
enabled=lambda node: node.colorMapping.enable.value,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
desc.GroupAttribute(name="bumpMapping", label="Bump Mapping", description="Bump Mapping Parameters",
|
desc.GroupAttribute(name="bumpMapping", label="Bump Mapping", description="Bump mapping parameters.",
|
||||||
enabled=lambda node: (node.inputRefMesh.value != ''),
|
enabled=lambda node: (node.inputRefMesh.value != ''),
|
||||||
group=None,
|
group=None,
|
||||||
groupDesc=[
|
groupDesc=[
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='enable',
|
name="enable",
|
||||||
label='Enable',
|
label="Enable",
|
||||||
description='Generate Normal / Bump Maps',
|
description="Generate normal / bump maps if set to true.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[],
|
uid=[],
|
||||||
group=None,
|
group=None,
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='bumpType',
|
name="bumpType",
|
||||||
label='Bump Type',
|
label="Bump Type",
|
||||||
description='Export Normal Map or Height Map',
|
description="Export normal map or height map.",
|
||||||
value='Normal',
|
value="Normal",
|
||||||
values=('Height', 'Normal'),
|
values=("Height", "Normal"),
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
enabled=lambda node: node.bumpMapping.enable.value,
|
enabled=lambda node: node.bumpMapping.enable.value,
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='normalFileType',
|
name="normalFileType",
|
||||||
label='File Type',
|
label="File Type",
|
||||||
description='NormalMap Texture File Type',
|
description="File type for the normal map texture.",
|
||||||
value='exr',
|
value="exr",
|
||||||
values = ('exr', 'png', 'tiff', 'jpg'),
|
values = ("exr", "png", "tiff", "jpg"),
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
enabled=lambda node: node.bumpMapping.enable.value and node.bumpMapping.bumpType.value == "Normal",
|
enabled=lambda node: node.bumpMapping.enable.value and node.bumpMapping.bumpType.value == "Normal",
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='heightFileType',
|
name="heightFileType",
|
||||||
label='File Type',
|
label="File Type",
|
||||||
description='HeightMap Texture File Type',
|
description="File type for the height map texture.",
|
||||||
value='exr',
|
value="exr",
|
||||||
values=('exr',),
|
values=("exr",),
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
enabled=lambda node: node.bumpMapping.enable.value and node.bumpMapping.bumpType.value == "Height",
|
enabled=lambda node: node.bumpMapping.enable.value and node.bumpMapping.bumpType.value == "Height",
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
desc.GroupAttribute(name="displacementMapping", label="Displacement Mapping", description="Displacement Mapping Parameters",
|
desc.GroupAttribute(name="displacementMapping", label="Displacement Mapping", description="Displacement mapping parameters.",
|
||||||
enabled=lambda node: (node.inputRefMesh.value != ''),
|
enabled=lambda node: (node.inputRefMesh.value != ""),
|
||||||
group=None,
|
group=None,
|
||||||
groupDesc=[
|
groupDesc=[
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='enable',
|
name="enable",
|
||||||
label='Enable',
|
label="Enable",
|
||||||
description='Generate Height Maps for Displacement',
|
description="Generate height maps for displacement.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[],
|
uid=[],
|
||||||
group=None,
|
group=None,
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='displacementMappingFileType',
|
name="displacementMappingFileType",
|
||||||
label='File Type',
|
label="File Type",
|
||||||
description='HeightMap Texture File Type',
|
description="File type for the height map texture.",
|
||||||
value='exr',
|
value="exr",
|
||||||
values=('exr',),
|
values=("exr",),
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
enabled=lambda node: node.displacementMapping.enable.value,
|
enabled=lambda node: node.displacementMapping.enable.value,
|
||||||
|
@ -172,44 +174,44 @@ Many cameras are contributing to the low frequencies and only the best ones cont
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='unwrapMethod',
|
name="unwrapMethod",
|
||||||
label='Unwrap Method',
|
label="Unwrap Method",
|
||||||
description='Method to unwrap input mesh if it does not have UV coordinates.\n'
|
description="Method to unwrap input mesh if it does not have UV coordinates.\n"
|
||||||
' * Basic (> 600k faces) fast and simple. Can generate multiple atlases.\n'
|
" - Basic (> 600k faces) fast and simple. Can generate multiple atlases.\n"
|
||||||
' * LSCM (<= 600k faces): optimize space. Generates one atlas.\n'
|
" - LSCM (<= 600k faces): optimize space. Generates one atlas.\n"
|
||||||
' * ABF (<= 300k faces): optimize space and stretch. Generates one atlas.',
|
" - ABF (<= 300k faces): optimize space and stretch. Generates one atlas.",
|
||||||
value="Basic",
|
value="Basic",
|
||||||
values=("Basic", "LSCM", "ABF"),
|
values=("Basic", "LSCM", "ABF"),
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='useUDIM',
|
name="useUDIM",
|
||||||
label='Use UDIM',
|
label="Use UDIM",
|
||||||
description='Use UDIM UV mapping.',
|
description="Use UDIM UV mapping.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='fillHoles',
|
name="fillHoles",
|
||||||
label='Fill Holes',
|
label="Fill Holes",
|
||||||
description='Fill Texture holes with plausible values',
|
description="Fill texture holes with plausible values.",
|
||||||
value=False,
|
value=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='padding',
|
name="padding",
|
||||||
label='Padding',
|
label="Padding",
|
||||||
description='''Texture edge padding size in pixel''',
|
description="Texture edge padding size in pixels.",
|
||||||
value=5,
|
value=5,
|
||||||
range=(0, 20, 1),
|
range=(0, 20, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='multiBandDownscale',
|
name="multiBandDownscale",
|
||||||
label='Multi Band Downscale',
|
label="Multi Band Downscale",
|
||||||
description='''Width of frequency bands for multiband blending''',
|
description="Width of frequency bands for multiband blending.",
|
||||||
value=4,
|
value=4,
|
||||||
range=(0, 8, 2),
|
range=(0, 8, 2),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
|
@ -217,109 +219,113 @@ Many cameras are contributing to the low frequencies and only the best ones cont
|
||||||
),
|
),
|
||||||
desc.GroupAttribute(
|
desc.GroupAttribute(
|
||||||
name="multiBandNbContrib",
|
name="multiBandNbContrib",
|
||||||
label="MultiBand contributions",
|
label="Multi-Band Contributions",
|
||||||
groupDesc=[
|
groupDesc=[
|
||||||
desc.IntParam(name="high", label="High Freq", description="High Frequency Band", value=1, uid=[0], range=None),
|
desc.IntParam(name="high", label="High Freq", description="High frequency band.", value=1, uid=[0], range=None),
|
||||||
desc.IntParam(name="midHigh", label="Mid-High Freq", description="Mid-High Frequency Band", value=5, uid=[0], range=None),
|
desc.IntParam(name="midHigh", label="Mid-High Freq", description="Mid-high frequency band.", value=5, uid=[0], range=None),
|
||||||
desc.IntParam(name="midLow", label="Mid-Low Freq", description="Mid-Low Frequency Band", value=10, uid=[0], range=None),
|
desc.IntParam(name="midLow", label="Mid-Low Freq", description="Mid-low frequency band.", value=10, uid=[0], range=None),
|
||||||
desc.IntParam(name="low", label="Low Freq", description="Low Frequency Band", value=0, uid=[0], range=None),
|
desc.IntParam(name="low", label="Low Freq", description="Low frequency band", value=0, uid=[0], range=None),
|
||||||
],
|
],
|
||||||
description='''Number of contributions per frequency band for multiband blending (each frequency band also contributes to lower bands)''',
|
description="Number of contributions per frequency band for multi-band blending (each frequency band also contributes to lower bands).",
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='useScore',
|
name="useScore",
|
||||||
label='Use Score',
|
label="Use Score",
|
||||||
description='Use triangles scores (ie. reprojection area) for multiband blending.',
|
description="Use triangles scores (ie. reprojection area) for multi-band blending.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name='bestScoreThreshold',
|
name="bestScoreThreshold",
|
||||||
label='Best Score Threshold',
|
label="Best Score Threshold",
|
||||||
description='''(0.0 to disable filtering based on threshold to relative best score)''',
|
description="Setting this parameter to 0.0 disables filtering based on threshold to relative best score.",
|
||||||
value=0.1,
|
value=0.1,
|
||||||
range=(0.0, 1.0, 0.01),
|
range=(0.0, 1.0, 0.01),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name='angleHardThreshold',
|
name="angleHardThreshold",
|
||||||
label='Angle Hard Threshold',
|
label="Angle Hard Threshold",
|
||||||
description='''(0.0 to disable angle hard threshold filtering)''',
|
description="Setting this parameter to 0.0 disables angle hard threshold filtering.",
|
||||||
value=90.0,
|
value=90.0,
|
||||||
range=(0.0, 180.0, 0.01),
|
range=(0.0, 180.0, 0.01),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='workingColorSpace',
|
name="workingColorSpace",
|
||||||
label='Working Color Space',
|
label="Working Color Space",
|
||||||
description="Color space for the texturing internal computation (does not impact the output file color space).",
|
description="Color space for the texturing internal computation (does not impact the output file color space).",
|
||||||
value='sRGB',
|
value="sRGB",
|
||||||
values=('sRGB', 'Linear', 'ACES2065-1', 'ACEScg'),
|
values=("sRGB", "Linear", "ACES2065-1", "ACEScg"),
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='outputColorSpace',
|
name="outputColorSpace",
|
||||||
label='Output Color Space',
|
label="Output Color Space",
|
||||||
description="Color space for the output texture files.",
|
description="Color space for the output texture files.",
|
||||||
value='AUTO',
|
value="AUTO",
|
||||||
values=('sRGB', 'rec709', 'Linear', 'ACES2065-1', 'ACEScg', 'AUTO'),
|
values=("sRGB", "rec709", "Linear", "ACES2065-1", "ACEScg", "AUTO"),
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='correctEV',
|
name="correctEV",
|
||||||
label='Correct Exposure',
|
label="Correct Exposure",
|
||||||
description='Uniformize images exposure values.',
|
description="Uniformize images exposure values.",
|
||||||
value=False,
|
value=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='forceVisibleByAllVertices',
|
name="forceVisibleByAllVertices",
|
||||||
label='Force Visible By All Vertices',
|
label="Force Visible By All Vertices",
|
||||||
description='''Triangle visibility is based on the union of vertices visibility.''',
|
description="Triangle visibility is based on the union of vertices visibility.",
|
||||||
value=False,
|
value=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='flipNormals',
|
name="flipNormals",
|
||||||
label='Flip Normals',
|
label="Flip Normals",
|
||||||
description='''Option to flip face normals. It can be needed as it depends on the vertices order in triangles and the convention change from one software to another.''',
|
description="Option to flip face normals.\n"
|
||||||
|
"It can be needed as it depends on the vertices order in triangles and the convention changes from one software to another.",
|
||||||
value=False,
|
value=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='visibilityRemappingMethod',
|
name="visibilityRemappingMethod",
|
||||||
label='Visibility Remapping Method',
|
label="Visibility Remapping Method",
|
||||||
description='''Method to remap visibilities from the reconstruction to the input mesh (Pull, Push, PullPush, MeshItself).''',
|
description="Method to remap visibilities from the reconstruction to the input mesh (Pull, Push, PullPush, MeshItself).",
|
||||||
value='PullPush',
|
value="PullPush",
|
||||||
values=['Pull', 'Push', 'PullPush', 'MeshItself'],
|
values=["Pull", "Push", "PullPush", "MeshItself"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name='subdivisionTargetRatio',
|
name="subdivisionTargetRatio",
|
||||||
label='Subdivision Target Ratio',
|
label="Subdivision Target Ratio",
|
||||||
description='''Percentage of the density of the reconstruction as the target for the subdivision (0: disable subdivision, 0.5: half density of the reconstruction, 1: full density of the reconstruction).''',
|
description="Percentage of the density of the reconstruction as the target for the subdivision:\n"
|
||||||
|
" - 0: disable subdivision.\n"
|
||||||
|
" - 0.5: half density of the reconstruction.\n"
|
||||||
|
" - 1: full density of the reconstruction).",
|
||||||
value=0.8,
|
value=0.8,
|
||||||
range=(0.0, 1.0, 0.001),
|
range=(0.0, 1.0, 0.001),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='verboseLevel',
|
name="verboseLevel",
|
||||||
label='Verbose Level',
|
label="Verbose Level",
|
||||||
description='''verbosity level (fatal, error, warning, info, debug, trace).''',
|
description="Verbosity level (fatal, error, warning, info, debug, trace).",
|
||||||
value='info',
|
value="info",
|
||||||
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
|
values=["fatal", "error", "warning", "info", "debug", "trace"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
|
@ -328,36 +334,36 @@ Many cameras are contributing to the low frequencies and only the best ones cont
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='output',
|
name="output",
|
||||||
label='Folder',
|
label="Folder",
|
||||||
description='Folder for output mesh: OBJ, material and texture files.',
|
description="Folder for output mesh: OBJ, material and texture files.",
|
||||||
value=desc.Node.internalFolder,
|
value=desc.Node.internalFolder,
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='outputMesh',
|
name="outputMesh",
|
||||||
label='Mesh',
|
label="Mesh",
|
||||||
description='Output Mesh file.',
|
description="Output mesh file.",
|
||||||
value=desc.Node.internalFolder + 'texturedMesh.{outputMeshFileTypeValue}',
|
value=desc.Node.internalFolder + "texturedMesh.{outputMeshFileTypeValue}",
|
||||||
uid=[],
|
uid=[],
|
||||||
group='',
|
group="",
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='outputMaterial',
|
name="outputMaterial",
|
||||||
enabled= lambda node: node.outputMeshFileType.value == "obj",
|
enabled= lambda node: node.outputMeshFileType.value == "obj",
|
||||||
label='Material',
|
label="Material",
|
||||||
description='Output Material file.',
|
description="Output material file.",
|
||||||
value=desc.Node.internalFolder + 'texturedMesh.mtl',
|
value=desc.Node.internalFolder + "texturedMesh.mtl",
|
||||||
uid=[],
|
uid=[],
|
||||||
group='',
|
group="",
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='outputTextures',
|
name="outputTextures",
|
||||||
label='Textures',
|
label="Textures",
|
||||||
description='Output Texture files.',
|
description="Output texture files.",
|
||||||
value= lambda attr: desc.Node.internalFolder + 'texture_*.' + attr.node.colorMapping.colorMappingFileType.value if attr.node.colorMapping.enable.value else '',
|
value= lambda attr: desc.Node.internalFolder + "texture_*." + attr.node.colorMapping.colorMappingFileType.value if attr.node.colorMapping.enable.value else "",
|
||||||
uid=[],
|
uid=[],
|
||||||
group=''
|
group=""
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -14,17 +14,17 @@ It fuses all feature matches between image pairs into tracks. Each track represe
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='input',
|
name="input",
|
||||||
label='SfMData',
|
label="SfMData",
|
||||||
description='SfMData file.',
|
description="Input SfMData file.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ListAttribute(
|
desc.ListAttribute(
|
||||||
elementDesc=desc.File(
|
elementDesc=desc.File(
|
||||||
name="featuresFolder",
|
name="featuresFolder",
|
||||||
label="Features Folder",
|
label="Features Folder",
|
||||||
description="",
|
description="Folder containing some extracted features and descriptors.",
|
||||||
value="",
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
|
@ -36,7 +36,7 @@ It fuses all feature matches between image pairs into tracks. Each track represe
|
||||||
elementDesc=desc.File(
|
elementDesc=desc.File(
|
||||||
name="matchesFolder",
|
name="matchesFolder",
|
||||||
label="Matches Folder",
|
label="Matches Folder",
|
||||||
description="",
|
description="Folder containing some matches.",
|
||||||
value="",
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
|
@ -45,46 +45,46 @@ It fuses all feature matches between image pairs into tracks. Each track represe
|
||||||
description="Folder(s) in which computed matches are stored."
|
description="Folder(s) in which computed matches are stored."
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='describerTypes',
|
name="describerTypes",
|
||||||
label='Describer Types',
|
label="Describer Types",
|
||||||
description='Describer types used to describe an image.',
|
description="Describer types used to describe an image.",
|
||||||
value=['dspsift'],
|
value=["dspsift"],
|
||||||
values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'tag16h5'],
|
values=["sift", "sift_float", "sift_upright", "dspsift", "akaze", "akaze_liop", "akaze_mldb", "cctag3", "cctag4", "sift_ocv", "akaze_ocv", "tag16h5"],
|
||||||
exclusive=False,
|
exclusive=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
joinChar=',',
|
joinChar=",",
|
||||||
),
|
),
|
||||||
desc.IntParam(
|
desc.IntParam(
|
||||||
name='minInputTrackLength',
|
name="minInputTrackLength",
|
||||||
label='Min Input Track Length',
|
label="Min Input Track Length",
|
||||||
description='Minimum track length',
|
description="Minimum track length.",
|
||||||
value=2,
|
value=2,
|
||||||
range=(2, 10, 1),
|
range=(2, 10, 1),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='useOnlyMatchesFromInputFolder',
|
name="useOnlyMatchesFromInputFolder",
|
||||||
label='Use Only Matches From Input Folder',
|
label="Use Only Matches From Input Folder",
|
||||||
description='Use only matches from the input matchesFolder parameter.\n'
|
description="Use only matches from the input 'matchesFolder' parameter.\n"
|
||||||
'Matches folders previously added to the SfMData file will be ignored.',
|
"Matches folders previously added to the SfMData file will be ignored.",
|
||||||
value=False,
|
value=False,
|
||||||
uid=[],
|
uid=[],
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='filterTrackForks',
|
name="filterTrackForks",
|
||||||
label='Filter Track Forks',
|
label="Filter Track Forks",
|
||||||
description='Enable/Disable the track forks removal. A track contains a fork when incoherent matches \n'
|
description="Enable/Disable the track forks removal. A track contains a fork when incoherent matches\n"
|
||||||
'lead to multiple features in the same image for a single track. \n',
|
"lead to multiple features in the same image for a single track.",
|
||||||
value=False,
|
value=False,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='verboseLevel',
|
name="verboseLevel",
|
||||||
label='Verbose Level',
|
label="Verbose Level",
|
||||||
description='Verbosity level (fatal, error, warning, info, debug, trace).',
|
description="Verbosity level (fatal, error, warning, info, debug, trace).",
|
||||||
value='info',
|
value="info",
|
||||||
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
|
values=["fatal", "error", "warning", "info", "debug", "trace"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[],
|
uid=[],
|
||||||
)
|
)
|
||||||
|
@ -92,10 +92,10 @@ It fuses all feature matches between image pairs into tracks. Each track represe
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='output',
|
name="output",
|
||||||
label='Tracks',
|
label="Tracks",
|
||||||
description='Path to the output tracks file',
|
description="Path to the output tracks file.",
|
||||||
value=desc.Node.internalFolder + 'tracksFile.json',
|
value=desc.Node.internalFolder + "tracksFile.json",
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
|
@ -18,48 +18,48 @@ One frame per viewpoint will be rendered, and the undistorted views can optional
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='blenderCmd',
|
name="blenderCmd",
|
||||||
label='Blender Command',
|
label="Blender Command",
|
||||||
description='Command to launch Blender',
|
description="Command to launch Blender.",
|
||||||
value='blender',
|
value="blender",
|
||||||
uid=[],
|
uid=[],
|
||||||
group='',
|
group="",
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='script',
|
name="script",
|
||||||
label='Script',
|
label="Script",
|
||||||
description='Path to the internal script for rendering in Blender',
|
description="Path to the internal script for rendering in Blender.",
|
||||||
value=os.path.join(currentDir, 'scripts' ,'preview.py'),
|
value=os.path.join(currentDir, "scripts", "preview.py"),
|
||||||
uid=[],
|
uid=[],
|
||||||
group='',
|
group="",
|
||||||
advanced=True,
|
advanced=True,
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='cameras',
|
name="cameras",
|
||||||
label='Cameras',
|
label="Cameras",
|
||||||
description='SfmData with the views, poses and intrinsics to use (in JSON format)',
|
description="SfMData with the views, poses and intrinsics to use (in JSON format).",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='model',
|
name="model",
|
||||||
label='Model',
|
label="Model",
|
||||||
description='Point cloud (.abc) or mesh (.obj) to render',
|
description="Point cloud (.abc) or mesh (.obj) to render.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.BoolParam(
|
desc.BoolParam(
|
||||||
name='useBackground',
|
name="useBackground",
|
||||||
label='Display Background',
|
label="Display Background",
|
||||||
description='Use the undistorted images as background',
|
description="Use the undistorted images as background.",
|
||||||
value=True,
|
value=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='undistortedImages',
|
name="undistortedImages",
|
||||||
label='Undistorted Images',
|
label="Undistorted Images",
|
||||||
description='Folder containing the undistorted images',
|
description="Folder containing the undistorted images.",
|
||||||
value='',
|
value="",
|
||||||
uid=[0],
|
uid=[0],
|
||||||
enabled=lambda node: node.useBackground.value,
|
enabled=lambda node: node.useBackground.value,
|
||||||
),
|
),
|
||||||
|
@ -67,23 +67,23 @@ One frame per viewpoint will be rendered, and the undistorted views can optional
|
||||||
name="pointCloudParams",
|
name="pointCloudParams",
|
||||||
label="Point Cloud Settings",
|
label="Point Cloud Settings",
|
||||||
group=None,
|
group=None,
|
||||||
enabled=lambda node: node.model.value.lower().endswith('.abc'),
|
enabled=lambda node: node.model.value.lower().endswith(".abc"),
|
||||||
description="Settings for point cloud rendering",
|
description="Settings for point cloud rendering.",
|
||||||
groupDesc=[
|
groupDesc=[
|
||||||
desc.FloatParam(
|
desc.FloatParam(
|
||||||
name='particleSize',
|
name="particleSize",
|
||||||
label='Particle Size',
|
label="Particle Size",
|
||||||
description='Scale of particles used for the point cloud',
|
description="Scale of particles used for the point cloud.",
|
||||||
value=0.01,
|
value=0.01,
|
||||||
range=(0.01, 1.0, 0.01),
|
range=(0.01, 1.0, 0.01),
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='particleColor',
|
name="particleColor",
|
||||||
label='Particle Color',
|
label="Particle Color",
|
||||||
description='Color of particles used for the point cloud',
|
description="Color of particles used for the point cloud.",
|
||||||
value='Red',
|
value="Red",
|
||||||
values=['Grey', 'White', 'Red', 'Green', 'Magenta'],
|
values=["Grey", "White", "Red", "Green", "Magenta"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
|
@ -93,24 +93,24 @@ One frame per viewpoint will be rendered, and the undistorted views can optional
|
||||||
name="meshParams",
|
name="meshParams",
|
||||||
label="Mesh Settings",
|
label="Mesh Settings",
|
||||||
group=None,
|
group=None,
|
||||||
enabled=lambda node: node.model.value.lower().endswith('.obj'),
|
enabled=lambda node: node.model.value.lower().endswith(".obj"),
|
||||||
description="Setting for mesh rendering",
|
description="Setting for mesh rendering.",
|
||||||
groupDesc=[
|
groupDesc=[
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='shading',
|
name="shading",
|
||||||
label='Shading',
|
label="Shading",
|
||||||
description='Shading method for visualizing the mesh',
|
description="Shading method for visualizing the mesh.",
|
||||||
value='wireframe',
|
value="wireframe",
|
||||||
values=['wireframe', 'line_art'],
|
values=["wireframe", "line_art"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
desc.ChoiceParam(
|
desc.ChoiceParam(
|
||||||
name='edgeColor',
|
name="edgeColor",
|
||||||
label='Edge Color',
|
label="Edge Color",
|
||||||
description='Color of the mesh edges',
|
description="Color of the mesh edges.",
|
||||||
value='Red',
|
value="Red",
|
||||||
values=['Grey', 'White', 'Red', 'Green', 'Magenta'],
|
values=["Grey", "White", "Red", "Green", "Magenta"],
|
||||||
exclusive=True,
|
exclusive=True,
|
||||||
uid=[0],
|
uid=[0],
|
||||||
),
|
),
|
||||||
|
@ -120,19 +120,19 @@ One frame per viewpoint will be rendered, and the undistorted views can optional
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
desc.File(
|
desc.File(
|
||||||
name='output',
|
name="output",
|
||||||
label='Output',
|
label="Output",
|
||||||
description='Output folder',
|
description="Output folder.",
|
||||||
value=desc.Node.internalFolder,
|
value=desc.Node.internalFolder,
|
||||||
uid=[],
|
uid=[],
|
||||||
),
|
),
|
||||||
desc.File(
|
desc.File(
|
||||||
name='frames',
|
name="frames",
|
||||||
label='Frames',
|
label="Frames",
|
||||||
description='Frames rendered in Blender',
|
description="Frames rendered in Blender.",
|
||||||
semantic='image',
|
semantic="image",
|
||||||
value=desc.Node.internalFolder + '<FILENAME>_preview.jpg',
|
value=desc.Node.internalFolder + "<FILENAME>_preview.jpg",
|
||||||
uid=[],
|
uid=[],
|
||||||
group='',
|
group="",
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue