[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:
Candice Bentéjac 2023-06-16 10:32:01 +02:00
parent 41280dc22a
commit c498f48e1e
12 changed files with 798 additions and 777 deletions

View file

@ -24,43 +24,46 @@ The alignment can be based on:
inputs = [
desc.File(
name='input',
label='Input',
description='''SfMData file .''',
value='',
name="input",
label="Input",
description="Input SfMData file .",
value="",
uid=[0],
),
desc.File(
name='reference',
label='Reference',
description='''Path to the scene used as the reference coordinate system.''',
value='',
name="reference",
label="Reference",
description="Path to the scene used as the reference coordinate system.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='method',
label='Alignment Method',
description="Alignment Method:\n"
" * from_cameras_viewid: Align cameras with same view 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_metadata: Align cameras with matching metadata, using 'metadataMatchingList'\n"
" * from_markers: Align from markers with the same Id\n",
value='from_cameras_viewid',
values=['from_cameras_viewid', 'from_cameras_poseid', 'from_cameras_filepath', 'from_cameras_metadata', 'from_markers'],
name="method",
label="Alignment Method",
description="Alignment method:\n"
" - from_cameras_viewid: Align cameras with same view 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_metadata: Align cameras with matching metadata, using 'metadataMatchingList'.\n"
" - from_markers: Align from markers with the same ID.\n",
value="from_cameras_viewid",
values=["from_cameras_viewid", "from_cameras_poseid", "from_cameras_filepath", "from_cameras_metadata", "from_markers"],
exclusive=True,
uid=[0],
),
desc.StringParam(
name='fileMatchingPattern',
label='File Matching Pattern',
description='Matching regular expression for the "from_cameras_filepath" method. '
'You should capture specific parts of the filepath with parenthesis to define matching elements.\n'
'Some examples of patterns:\n'
r' - Match the filename without extension (default value): ".*\/(.*?)\.\w{3}"' + '\n' +
r' - Match the filename suffix after "_": ".*\/.*(_.*?\.\w{3})"' + '\n' +
r' - Match the filename prefix before "_": ".*\/(.*?)_.*\.\w{3}"',
value=r'.*\/(.*?)\.\w{3}',
name="fileMatchingPattern",
label="File Matching Pattern",
description="Matching regular expression for the 'from_cameras_filepath' method.\n"
"You should capture specific parts of the filepath with parentheses to define matching elements.\n"
"Some examples of patterns:\n"
" - Match the filename without extension (default value): "
r'".*\/(.*?)\.\w{3}"' + "\n"
" - Match the filename suffix after '_': "
r'".*\/.*(_.*?\.\w{3})"' + "\n"
" - Match the filename prefix before '_': "
r'".*\/(.*?)_.*\.\w{3}"',
value=r".*\/(.*?)\.\w{3}",
uid=[0],
),
desc.ListAttribute(
@ -68,40 +71,41 @@ The alignment can be based on:
name="metadataMatching",
label="Metadata",
description="",
value="",
value="Metadata that should match to create the correspondences.",
uid=[0],
),
name="metadataMatchingList",
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(
name='applyScale',
label='Scale',
description='Apply scale transformation.',
name="applyScale",
label="Scale",
description="Apply scale transformation.",
value=True,
uid=[0]
),
desc.BoolParam(
name='applyRotation',
label='Rotation',
description='Apply rotation transformation.',
name="applyRotation",
label="Rotation",
description="Apply rotation transformation.",
value=True,
uid=[0]
),
desc.BoolParam(
name='applyTranslation',
label='Translation',
description='Apply translation transformation.',
name="applyTranslation",
label="Translation",
description="Apply translation transformation.",
value=True,
uid=[0]
),
desc.ChoiceParam(
name='verboseLevel',
label='Verbose Level',
description='''verbosity level (fatal, error, warning, info, debug, trace).''',
value='info',
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
name="verboseLevel",
label="Verbose Level",
description="Verbosity level (fatal, error, warning, info, debug, trace).",
value="info",
values=["fatal", "error", "warning", "info", "debug", "trace"],
exclusive=True,
uid=[],
),
@ -109,17 +113,17 @@ The alignment can be based on:
outputs = [
desc.File(
name='output',
label='SfMData File',
description='SfMData file.',
value=lambda attr: desc.Node.internalFolder + (os.path.splitext(os.path.basename(attr.node.input.value))[0] or 'sfmData') + '.abc',
name="output",
label="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",
uid=[],
),
desc.File(
name='outputViewsAndPoses',
label='Poses',
description='''Path to the output sfmdata file with cameras (views and poses).''',
value=desc.Node.internalFolder + 'cameras.sfm',
name="outputViewsAndPoses",
label="Poses",
description="Path to the output SfMData file with cameras (views and poses).",
value=desc.Node.internalFolder + "cameras.sfm",
uid=[],
),
]

View file

@ -7,57 +7,60 @@ class SfMDistances(desc.AVCommandLineNode):
commandLine = 'aliceVision_sfmDistances {allParams}'
size = desc.DynamicNodeSize('input')
documentation = '''
'''
inputs = [
desc.File(
name='input',
label='Input',
description='''SfMData file.''',
value='',
name="input",
label="Input",
description="SfMData file.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='objectType',
label='Type',
description='',
value='landmarks',
values=['landmarks', 'cameras'],
name="objectType",
label="Type",
description="",
value="landmarks",
values=["landmarks", "cameras"],
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name='landmarksDescriberTypes',
label='Describer Types',
description='Describer types used to describe an image (only used when using "landmarks").',
value=['cctag3'],
values=['sift', 'sift_float', 'sift_upright', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv'],
name="landmarksDescriberTypes",
label="Describer Types",
description="Describer types used to describe an image (only used when using 'landmarks').",
value=["cctag3"],
values=["sift", "sift_float", "sift_upright", "akaze", "akaze_liop", "akaze_mldb", "cctag3", "cctag4", "sift_ocv", "akaze_ocv"],
exclusive=False,
uid=[0],
joinChar=',',
joinChar=",",
),
desc.StringParam(
name='A',
label='A IDs',
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'
'It will list all elements if empty.',
value='',
name="A",
label="A IDs",
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"
"It will list all elements if empty.",
value="",
uid=[0],
),
desc.StringParam(
name='B',
label='B IDs',
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'
'It will list all elements if empty.',
value='',
name="B",
label="B IDs",
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"
"It will list all elements if empty.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='verboseLevel',
label='Verbose Level',
description='''verbosity level (fatal, error, warning, info, debug, trace).''',
value='info',
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
name="verboseLevel",
label="Verbose Level",
description="Verbosity level (fatal, error, warning, info, debug, trace).",
value="info",
values=["fatal", "error", "warning", "info", "debug", "trace"],
exclusive=True,
uid=[],
),

View file

@ -16,41 +16,44 @@ This node allows to transfer poses and/or intrinsics form one SfM scene onto ano
inputs = [
desc.File(
name='input',
label='Input',
description='''SfMData file .''',
value='',
name="input",
label="Input",
description="SfMData file.",
value="",
uid=[0],
),
desc.File(
name='reference',
label='Reference',
description='''Path to the scene used as the reference to retrieve resolved poses and intrinsics.''',
value='',
name="reference",
label="Reference",
description="Path to the scene used as the reference to retrieve resolved poses and intrinsics.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='method',
label='Matching Method',
name="method",
label="Matching Method",
description="Matching Method:\n"
" * from_viewid: Align cameras with same view Id\n"
" * from_filepath: Align cameras with a filepath matching, using 'fileMatchingPattern'\n"
" * from_metadata: Align cameras with matching metadata, using 'metadataMatchingList'\n"
" * from_intrinsicid: Copy intrinsics parameters\n",
value='from_viewid',
values=['from_viewid', 'from_filepath', 'from_metadata', 'from_intrinsicid'],
" - from_viewid: Align cameras with same view ID.\n"
" - from_filepath: Align cameras with a filepath matching, using 'fileMatchingPattern'.\n"
" - from_metadata: Align cameras with matching metadata, using 'metadataMatchingList'.\n"
" - from_intrinsicid: Copy intrinsics parameters.\n",
value="from_viewid",
values=["from_viewid", "from_filepath", "from_metadata", "from_intrinsicid"],
exclusive=True,
uid=[0],
),
desc.StringParam(
name='fileMatchingPattern',
label='File Matching Pattern',
description='Matching regular expression for the "from_cameras_filepath" method. '
'You should capture specific parts of the filepath with parenthesis to define matching elements.\n'
'Some examples of patterns:\n'
r' - Match the filename without extension (default value): ".*\/(.*?)\.\w{3}"' + '\n' +
r' - Match the filename suffix after "_": ".*\/.*(_.*?\.\w{3})"' + '\n' +
r' - Match the filename prefix before "_": ".*\/(.*?)_.*\.\w{3}"',
name="fileMatchingPattern",
label="File Matching Pattern",
description="Matching regular expression for the 'from_cameras_filepath' method.\n"
"You should capture specific parts of the filepath with parentheses to define matching elements.\n"
"Some examples of patterns:\n"
" - Match the filename without extension (default value): "
r'".*\/(.*?)\.\w{3}"' + "\n"
" - Match the filename suffix after \"_\": "
r'".*\/.*(_.*?\.\w{3})"' + "\n"
" - Match the filename prefix before \"_\": "
r'".*\/(.*?)_.*\.\w{3}"',
value=r'.*\/(.*?)\.\w{3}',
uid=[0],
),
@ -58,41 +61,43 @@ This node allows to transfer poses and/or intrinsics form one SfM scene onto ano
elementDesc=desc.File(
name="metadataMatching",
label="Metadata",
description="",
description="Metadata that should match to create correspondences.",
value="",
uid=[0],
),
name="metadataMatchingList",
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(
name='transferPoses',
label='Poses',
description='Transfer poses.',
name="transferPoses",
label="Poses",
description="Transfer poses.",
value=True,
uid=[0]
),
desc.BoolParam(
name='transferIntrinsics',
label='Intrinsics',
description='Transfer cameras intrinsics.',
name="transferIntrinsics",
label="Intrinsics",
description="Transfer cameras intrinsics.",
value=True,
uid=[0]
),
desc.BoolParam(
name='transferLandmarks',
label='Landmarks',
description='Transfer landmarks.',
name="transferLandmarks",
label="Landmarks",
description="Transfer landmarks.",
value=True,
uid=[0]
),
desc.ChoiceParam(
name='verboseLevel',
label='Verbose Level',
description='''verbosity level (fatal, error, warning, info, debug, trace).''',
value='info',
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
name="verboseLevel",
label="Verbose Level",
description="Verbosity level (fatal, error, warning, info, debug, trace).",
value="info",
values=["fatal", "error", "warning", "info", "debug", "trace"],
exclusive=True,
uid=[],
),
@ -100,17 +105,17 @@ This node allows to transfer poses and/or intrinsics form one SfM scene onto ano
outputs = [
desc.File(
name='output',
label='SfMData File',
description='SfMData file.',
value=lambda attr: desc.Node.internalFolder + (os.path.splitext(os.path.basename(attr.node.input.value))[0] or 'sfmData') + '.abc',
name="output",
label="SfMData",
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",
uid=[],
),
desc.File(
name='outputViewsAndPoses',
label='Poses',
description='''Path to the output sfmdata file with cameras (views and poses).''',
value=desc.Node.internalFolder + 'cameras.sfm',
name="outputViewsAndPoses",
label="Poses",
description="Path to the output SfMData file with cameras (views and poses).",
value=desc.Node.internalFolder + "cameras.sfm",
uid=[],
),
]

View file

@ -26,39 +26,39 @@ The transformation can be based on:
inputs = [
desc.File(
name='input',
label='Input',
description='''SfMData file .''',
value='',
name="input",
label="Input",
description="SfMData file.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='method',
label='Transformation Method',
name="method",
label="Transformation Method",
description="Transformation method:\n"
" * transformation: Apply a given transformation.\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_from_cameras: Defines coordinate system from cameras.\n"
" * auto_from_cameras_x_axis: Determines scene orientation from the cameras' X axis.\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_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_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.",
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'],
" - transformation: Apply a given transformation.\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_from_cameras: Defines coordinate system from cameras.\n"
" - auto_from_cameras_x_axis: Determines scene orientation from the cameras' X axis.\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_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_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.",
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"],
exclusive=True,
uid=[0],
),
desc.StringParam(
name='transformation',
label='Transformation',
name="transformation",
label="Transformation",
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"
" * from_single_camera: Camera UID or simplified regular expression to match image filepath (like '*camera2*.jpg')",
value='',
" - 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').",
value="",
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",
),
@ -73,19 +73,19 @@ The transformation can be based on:
description="Translation in space.",
groupDesc=[
desc.FloatParam(
name="x", label="x", description="X Offset",
name="x", label="x", description="X offset.",
value=0.0,
uid=[0],
range=(-20.0, 20.0, 0.01)
),
desc.FloatParam(
name="y", label="y", description="Y Offset",
name="y", label="y", description="Y offset.",
value=0.0,
uid=[0],
range=(-20.0, 20.0, 0.01)
),
desc.FloatParam(
name="z", label="z", description="Z Offset",
name="z", label="z", description="Z offset.",
value=0.0,
uid=[0],
range=(-20.0, 20.0, 0.01)
@ -96,22 +96,22 @@ The transformation can be based on:
desc.GroupAttribute(
name="manualRotation",
label="Euler Rotation",
description="Rotation in Euler degrees.",
description="Rotation in Euler angles.",
groupDesc=[
desc.FloatParam(
name="x", label="x", description="Euler X Rotation",
name="x", label="x", description="Euler X rotation.",
value=0.0,
uid=[0],
range=(-90.0, 90.0, 1.0)
),
desc.FloatParam(
name="y", label="y", description="Euler Y Rotation",
name="y", label="y", description="Euler Y rotation.",
value=0.0,
uid=[0],
range=(-180.0, 180.0, 1.0)
),
desc.FloatParam(
name="z", label="z", description="Euler Z Rotation",
name="z", label="z", description="Euler Z rotation.",
value=0.0,
uid=[0],
range=(-180.0, 180.0, 1.0)
@ -122,7 +122,7 @@ The transformation can be based on:
desc.FloatParam(
name="manualScale",
label="Scale",
description="Uniform Scale.",
description="Uniform scale.",
value=1.0,
uid=[0],
range=(0.0, 20.0, 0.01)
@ -132,19 +132,19 @@ The transformation can be based on:
enabled=lambda node: node.method.value == "manual",
),
desc.ChoiceParam(
name='landmarksDescriberTypes',
label='Landmarks Describer Types',
description='Image describer types used to compute the mean of the point cloud. (only for "landmarks" method).',
value=['sift', 'dspsift', 'akaze'],
values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'tag16h5', 'unknown'],
name="landmarksDescriberTypes",
label="Landmarks Describer Types",
description="Image describer types used to compute the mean of the point cloud (only for 'landmarks' method).",
value=["sift", "dspsift", "akaze"],
values=["sift", "sift_float", "sift_upright", "dspsift", "akaze", "akaze_liop", "akaze_mldb", "cctag3", "cctag4", "sift_ocv", "akaze_ocv", "tag16h5", "unknown"],
exclusive=False,
uid=[0],
joinChar=',',
joinChar=",",
),
desc.FloatParam(
name='scale',
label='Additional Scale',
description='Additional scale to apply.',
name="scale",
label="Additional Scale",
description="Additional scale to apply.",
value=1.0,
range=(0.0, 100.0, 0.1),
uid=[0],
@ -152,46 +152,46 @@ The transformation can be based on:
desc.ListAttribute(
name="markers",
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.GroupAttribute(name="markerCoord", label="Coord", description="", joinChar=",", groupDesc=[
desc.FloatParam(name="x", label="x", description="", 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="z", label="z", description="", value=0.0, uid=[0], range=(-2.0, 2.0, 1.0)),
desc.IntParam(name="markerId", label="Marker", description="Marker ID.", value=0, uid=[0], range=(0, 32, 1)),
desc.GroupAttribute(name="markerCoord", label="Coord", description="Marker coordinates.", joinChar=",", groupDesc=[
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="Y coordinates for the marker.", 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",
description="Markers alignment points",
description="Markers alignment points.",
),
desc.BoolParam(
name='applyScale',
label='Scale',
description='Apply scale transformation.',
name="applyScale",
label="Scale",
description="Apply scale transformation.",
value=True,
uid=[0],
enabled=lambda node: node.method.value != "manual",
),
desc.BoolParam(
name='applyRotation',
label='Rotation',
description='Apply rotation transformation.',
name="applyRotation",
label="Rotation",
description="Apply rotation transformation.",
value=True,
uid=[0],
enabled=lambda node: node.method.value != "manual",
),
desc.BoolParam(
name='applyTranslation',
label='Translation',
description='Apply translation transformation.',
name="applyTranslation",
label="Translation",
description="Apply translation transformation.",
value=True,
uid=[0],
enabled=lambda node: node.method.value != "manual",
),
desc.ChoiceParam(
name='verboseLevel',
label='Verbose Level',
description='''verbosity level (fatal, error, warning, info, debug, trace).''',
value='info',
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
name="verboseLevel",
label="Verbose Level",
description="Verbosity level (fatal, error, warning, info, debug, trace).",
value="info",
values=["fatal", "error", "warning", "info", "debug", "trace"],
exclusive=True,
uid=[],
),
@ -199,17 +199,17 @@ The transformation can be based on:
outputs = [
desc.File(
name='output',
label='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',
name="output",
label="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",
uid=[],
),
desc.File(
name='outputViewsAndPoses',
label='Poses',
description='''Path to the output sfmdata file with cameras (views and poses).''',
value=desc.Node.internalFolder + 'cameras.sfm',
name="outputViewsAndPoses",
label="Poses",
description="Path to the output SfMData file with cameras (views and poses).",
value=desc.Node.internalFolder + "cameras.sfm",
uid=[],
),
]

View file

@ -15,17 +15,17 @@ Contrary to the StructureFromMotion node, this node does not infer the camera po
inputs = [
desc.File(
name='input',
label='SfMData',
description='SfMData file. Must contain the camera calibration.',
value='',
name="input",
label="SfMData",
description="SfMData file. Must contain the camera calibration.",
value="",
uid=[0],
),
desc.ListAttribute(
elementDesc=desc.File(
name="featuresFolder",
label="Features Folder",
description="",
description="Folder containing some extracted features and descriptors.",
value="",
uid=[0],
),
@ -37,7 +37,7 @@ Contrary to the StructureFromMotion node, this node does not infer the camera po
elementDesc=desc.File(
name="matchesFolder",
label="Matches Folder",
description="",
description="Folder in which some computed matches are stored.",
value="",
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."
),
desc.ChoiceParam(
name='describerTypes',
label='Describer Types',
description='Describer types used to describe an image.',
value=['dspsift'],
values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'tag16h5'],
name="describerTypes",
label="Describer Types",
description="Describer types used to describe an image.",
value=["dspsift"],
values=["sift", "sift_float", "sift_upright", "dspsift", "akaze", "akaze_liop", "akaze_mldb", "cctag3", "cctag4", "sift_ocv", "akaze_ocv", "tag16h5"],
exclusive=False,
uid=[0],
joinChar=',',
joinChar=",",
),
desc.IntParam(
name='maxNumberOfMatches',
label='Maximum Number of Matches',
description='Maximum number of matches per image pair (and per feature type). \n'
'This can be useful to have a quick reconstruction overview. \n'
'0 means no limit.',
name="maxNumberOfMatches",
label="Maximum Number Of Matches",
description="Maximum number of matches per image pair (and per feature type).\n"
"This can be useful to have a quick reconstruction overview.\n"
"0 means no limit.",
value=0,
range=(0, 50000, 1),
uid=[0],
),
desc.IntParam(
name='minNumberOfMatches',
label='Minimum Number of Matches',
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.',
name="minNumberOfMatches",
label="Minimum Number Of Matches",
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.\n"
"0 means no limit.",
value=0,
range=(0, 50000, 1),
uid=[0],
),
desc.IntParam(
name='minNumberOfObservationsForTriangulation',
label='Min Observation For Triangulation',
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'
'but the number of final poses is a little bit reduced\n'
'(from 1.5% to 11% on the tested datasets).',
name="minNumberOfObservationsForTriangulation",
label="Min Observations For Triangulation",
description="Minimum number of observations to triangulate a point.\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"
"(from 1.5% to 11% on the tested datasets).",
value=2,
range=(2, 10, 1),
uid=[0],
advanced=True,
),
desc.FloatParam(
name='minAngleForTriangulation',
label='Min Angle For Triangulation',
description='Minimum angle for triangulation.',
name="minAngleForTriangulation",
label="Min Angle For Triangulation",
description="Minimum angle for triangulation.",
value=3.0,
range=(0.1, 10.0, 0.1),
uid=[0],
advanced=True,
),
desc.FloatParam(
name='minAngleForLandmark',
label='Min Angle For Landmark',
description='Minimum angle for landmark.',
name="minAngleForLandmark",
label="Min Angle For Landmark",
description="Minimum angle for landmark.",
value=2.0,
range=(0.1, 10.0, 0.1),
uid=[0],
advanced=True,
),
desc.BoolParam(
name='useRigConstraint',
label='Use Rig Constraint',
description='Enable/Disable rig constraint.',
name="useRigConstraint",
label="Use Rig Constraint",
description="Enable/Disable rig constraint.",
value=True,
uid=[0],
advanced=True,
),
desc.IntParam(
name='rigMinNbCamerasForCalibration',
label='Min Nb Cameras For Rig Calibration',
description='Minimal number of cameras to start the calibration of the rig',
name="rigMinNbCamerasForCalibration",
label="Min Nb Cameras For Rig Calibration",
description="Minimum number of cameras to start the calibration of the rig.",
value=20,
range=(1, 50, 1),
uid=[0],
advanced=True,
),
desc.BoolParam(
name='computeStructureColor',
label='Compute Structure Color',
description='Enable/Disable color computation of each 3D point.',
name="computeStructureColor",
label="Compute Structure Color",
description="Enable/Disable color computation of each 3D point.",
value=True,
uid=[0],
),
desc.ChoiceParam(
name='interFileExtension',
name="interFileExtension",
label='Inter File Extension',
description='Extension of the intermediate file export.',
value='.abc',
values=('.abc', '.ply'),
description="Extension of the intermediate file export.",
value=".abc",
values=(".abc", ".ply"),
exclusive=True,
uid=[],
advanced=True,
),
desc.ChoiceParam(
name='verboseLevel',
label='Verbose Level',
description='Verbosity level (fatal, error, warning, info, debug, trace).',
value='info',
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
name="verboseLevel",
label="Verbose Level",
description="Verbosity level (fatal, error, warning, info, debug, trace).",
value="info",
values=["fatal", "error", "warning", "info", "debug", "trace"],
exclusive=True,
uid=[],
)
@ -151,16 +152,16 @@ Contrary to the StructureFromMotion node, this node does not infer the camera po
outputs = [
desc.File(
name='output',
label='SfMData',
description='Path to the output sfmdata file',
value=desc.Node.internalFolder + 'sfm.abc',
name="output",
label="SfMData",
description="Path to the output SfMData file.",
value=desc.Node.internalFolder + "sfm.abc",
uid=[],
),
desc.File(
name='extraInfoFolder',
label='Folder',
description='Folder for intermediate reconstruction files and additional reconstruction information files.',
name="extraInfoFolder",
label="Folder",
description="Folder for intermediate reconstruction files and additional reconstruction information files.",
value=desc.Node.internalFolder,
uid=[],
),

View file

@ -72,46 +72,46 @@ Upload a textured mesh on Sketchfab.
group="",
),
desc.StringParam(
name='apiToken',
label='API Token',
description='Get your token from https://sketchfab.com/settings/password',
value='',
name="apiToken",
label="API Token",
description="Get your token from https://sketchfab.com/settings/password.",
value="",
uid=[0],
),
desc.StringParam(
name='title',
label='Title',
description='Title cannot be longer than 48 characters.',
value='',
name="title",
label="Title",
description="Title cannot be longer than 48 characters.",
value="",
uid=[0],
),
desc.StringParam(
name='description',
label='Description',
description='Description cannot be longer than 1024 characters.',
value='',
name="description",
label="Description",
description="Description cannot be longer than 1024 characters.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='license',
label='License',
description='License label.',
value='CC Attribution',
values=['CC Attribution',
'CC Attribution-ShareAlike',
'CC Attribution-NoDerivs',
'CC Attribution-NonCommercial',
'CC Attribution-NonCommercial-ShareAlike',
'CC Attribution-NonCommercial-NoDerivs'],
name="license",
label="License",
description="License label.",
value="CC Attribution",
values=["CC Attribution",
"CC Attribution-ShareAlike",
"CC Attribution-NoDerivs",
"CC Attribution-NonCommercial",
"CC Attribution-NonCommercial-ShareAlike",
"CC Attribution-NonCommercial-NoDerivs"],
exclusive=True,
uid=[0],
),
desc.ListAttribute(
elementDesc=desc.StringParam(
name='tag',
label='Tag',
description='Tag cannot be longer than 48 characters.',
value='',
name="tag",
label="Tag",
description="Tag cannot be longer than 48 characters.",
value="",
uid=[0],
),
name="tags",
@ -120,66 +120,66 @@ Upload a textured mesh on Sketchfab.
group="",
),
desc.ChoiceParam(
name='category',
label='Category',
description='Adding categories helps improve the discoverability of your model.',
value='none',
values=['none',
'animals-pets',
'architecture',
'art-abstract',
'cars-vehicles',
'characters-creatures',
'cultural-heritage-history',
'electronics-gadgets',
'fashion-style',
'food-drink',
'furniture-home',
'music',
'nature-plants',
'news-politics',
'people',
'places-travel',
'science-technology',
'sports-fitness',
'weapons-military'],
name="category",
label="Category",
description="Adding categories helps improve the discoverability of your model.",
value="none",
values=["none",
"animals-pets",
"architecture",
"art-abstract",
"cars-vehicles",
"characters-creatures",
"cultural-heritage-history",
"electronics-gadgets",
"fashion-style",
"food-drink",
"furniture-home",
"music",
"nature-plants",
"news-politics",
"people",
"places-travel",
"science-technology",
"sports-fitness",
"weapons-military"],
exclusive=True,
uid=[0],
),
desc.BoolParam(
name='isPublished',
label='Publish',
description='If the model is not published it will be saved as a draft.',
name="isPublished",
label="Publish",
description="If the model is not published, it will be saved as a draft.",
value=False,
uid=[0],
),
desc.BoolParam(
name='isInspectable',
label='Inspectable',
description='Allow 2D view in model inspector.',
name="isInspectable",
label="Inspectable",
description="Allow 2D view in model inspector.",
value=True,
uid=[0],
),
desc.BoolParam(
name='isPrivate',
label='Private',
description='Requires a pro account.',
name="isPrivate",
label="Private",
description="Requires a pro account.",
value=False,
uid=[0],
),
desc.StringParam(
name='password',
label='Password',
description='Requires a pro account.',
value='',
name="password",
label="Password",
description="Requires a pro account.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='verboseLevel',
label='Verbose Level',
description='''verbosity level (critical, error, warning, info, debug).''',
value='info',
values=['critical', 'error', 'warning', 'info', 'debug'],
name="verboseLevel",
label="Verbose Level",
description="Verbosity level (critical, error, warning, info, debug).",
value="info",
values=["critical", "error", "warning", "info", "debug"],
exclusive=True,
uid=[],
),

View file

@ -13,23 +13,23 @@ Spheres can be automatically detected or manually defined in the interface.
inputs = [
desc.File(
name='input',
name="input",
label="SfMData",
description='Input SfMData file.',
value='',
description="Input SfMData file.",
value="",
uid=[0]
),
desc.File(
name='modelPath',
label='Detection Network',
description='Deep learning network for automatic calibration sphere detection.',
value='${ALICEVISION_SPHERE_DETECTION_MODEL}',
name="modelPath",
label="Detection Network",
description="Deep learning network for automatic calibration sphere detection.",
value="${ALICEVISION_SPHERE_DETECTION_MODEL}",
uid=[0]
),
desc.BoolParam(
name='autoDetect',
label='Automatic Sphere Detection',
description='Automatic detection of calibration spheres',
name="autoDetect",
label="Automatic Sphere Detection",
description="Automatic detection of calibration spheres.",
value=False,
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).",
groupDesc=[
desc.FloatParam(
name="x", label="x", description="X Offset in pixels",
name="x", label="x", description="X offset in pixels.",
value=0.0,
uid=[0],
range=(-1000.0, 10000.0, 1.0)),
desc.FloatParam(
name="y", label="y", description="Y Offset in pixels",
name="y", label="y", description="Y offset in pixels.",
value=0.0,
uid=[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
),
desc.FloatParam(
name='sphereRadius',
label='Radius',
description='Sphere radius in pixels.',
name="sphereRadius",
label="Radius",
description="Sphere radius in pixels.",
value=500.0,
range=(0.0, 1000.0, 0.1),
enabled=lambda node: not node.autoDetect.value,
uid=[0]
),
desc.ChoiceParam(
name='verboseLevel',
label='Verbose Level',
description='Verbosity level (fatal, error, warning, info, debug, trace).',
value='info',
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
name="verboseLevel",
label="Verbose Level",
description="Verbosity level (fatal, error, warning, info, debug, trace).",
value="info",
values=["fatal", "error", "warning", "info", "debug", "trace"],
exclusive=True,
uid=[]
uid=[],
)
]
outputs = [
desc.File(
name='output',
label='Output Folder',
description='Sphere detection information will be written here.',
name="output",
label="Output Folder",
description="Sphere detection information will be written here.",
value=desc.Node.internalFolder,
uid=[]
)

View file

@ -28,83 +28,83 @@ class Split360Images(desc.AVCommandLineNode):
inputs = [
desc.File(
name='input',
label='Input',
name="input",
label="Input",
description="Single image, image folder or SfMData file.",
value='',
uid=[0],
),
desc.ChoiceParam(
name='splitMode',
label='Split Mode',
description="Split mode (equirectangular, dualfisheye)",
value='equirectangular',
values=['equirectangular', 'dualfisheye'],
name="splitMode",
label="Split Mode",
description="Split mode (equirectangular, dualfisheye).",
value="equirectangular",
values=["equirectangular", "dualfisheye"],
exclusive=True,
uid=[0],
),
desc.GroupAttribute(name="dualFisheyeGroup", label="Dual Fisheye", description="Dual Fisheye", group=None,
enabled=lambda node: node.splitMode.value == 'dualfisheye',
desc.GroupAttribute(name="dualFisheyeGroup", label="Dual Fisheye", description="Dual Fisheye.", group=None,
enabled=lambda node: node.splitMode.value == "dualfisheye",
groupDesc=[
desc.ChoiceParam(
name='dualFisheyeOffsetPresetX',
label='X Offset Preset',
description="Dual-Fisheye X offset preset",
value='center',
values=['center', 'left', 'right'],
name="dualFisheyeOffsetPresetX",
label="X Offset Preset",
description="Dual-Fisheye X offset preset.",
value="center",
values=["center", "left", "right"],
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name='dualFisheyeOffsetPresetY',
label='Y Offset Preset',
description="Dual-Fisheye Y offset preset",
value='center',
values=['center', 'top', 'bottom'],
name="dualFisheyeOffsetPresetY",
label="Y Offset Preset",
description="Dual-Fisheye Y offset preset.",
value="center",
values=["center", "top", "bottom"],
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name='dualFisheyeCameraModel',
label='Camera Model',
description="Dual-Fisheye camera model",
value='fisheye4',
values=['fisheye4', 'equidistant_r3'],
name="dualFisheyeCameraModel",
label="Camera Model",
description="Dual-Fisheye camera model.",
value="fisheye4",
values=["fisheye4", "equidistant_r3"],
exclusive=True,
uid=[0],
),
]
),
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=[
desc.IntParam(
name='equirectangularNbSplits',
name="equirectangularNbSplits",
label='Nb Splits',
description="Equirectangular number of splits",
description="Equirectangular number of splits.",
value=2,
range=(1, 100, 1),
uid=[0],
),
desc.IntParam(
name='equirectangularSplitResolution',
label='Split Resolution',
description="Equirectangular split resolution",
name="equirectangularSplitResolution",
label="Split Resolution",
description="Equirectangular split resolution.",
value=1200,
range=(100, 10000, 1),
uid=[0],
),
desc.BoolParam(
name='equirectangularPreviewMode',
label='Preview Mode',
description="Export a SVG file that simulates the split",
name="equirectangularPreviewMode",
label="Preview Mode",
description="Export a SVG file that simulates the split.",
value=False,
uid=[0],
),
desc.FloatParam(
name='fov',
label='Field of View',
description="Field of View to extract (in degree)",
name="fov",
label="Field Of View",
description="Field of View to extract (in degrees).",
value=110.0,
range=(0.0, 180.0, 1.0),
uid=[0],
@ -112,20 +112,20 @@ class Split360Images(desc.AVCommandLineNode):
]
),
desc.ChoiceParam(
name='extension',
label='Output File Extension',
description='Output Image File Extension.',
value='',
values=['', 'exr', 'jpg', 'tiff', 'png'],
name="extension",
label="Output File Extension",
description="Output image file extension.",
value="",
values=["", "exr", "jpg", "tiff", "png"],
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name='verboseLevel',
label='Verbose Level',
description='''verbosity level (fatal, error, warning, info, debug, trace).''',
value='info',
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
name="verboseLevel",
label="Verbose Level",
description="Verbosity level (fatal, error, warning, info, debug, trace).",
value="info",
values=["fatal", "error", "warning", "info", "debug", "trace"],
exclusive=True,
uid=[],
),
@ -133,17 +133,17 @@ class Split360Images(desc.AVCommandLineNode):
outputs = [
desc.File(
name='output',
label='Folder',
name="output",
label="Folder",
description="Output folder for extracted frames.",
value=desc.Node.internalFolder,
uid=[],
),
desc.File(
name='outSfMData',
label='SfMData file',
name="outSfMData",
label="SfMData File",
description="Output SfMData file.",
value=desc.Node.internalFolder + 'rig.sfm',
value=desc.Node.internalFolder + "rig.sfm",
uid=[],
),
]

View file

@ -63,10 +63,10 @@ It iterates like that, adding cameras and triangulating new 2D features into 3D
inputs = [
desc.File(
name='input',
label='SfMData',
name="input",
label="SfMData",
description='SfMData file.',
value='',
value="",
uid=[0],
),
desc.ListAttribute(
@ -91,291 +91,293 @@ It iterates like that, adding cameras and triangulating new 2D features into 3D
),
name="matchesFolders",
label="Matches Folders",
description="Folder(s) in which computed matches are stored."
description="Folder(s) in which the computed matches are stored."
),
desc.ChoiceParam(
name='describerTypes',
label='Describer Types',
description='Describer types used to describe an image.',
value=['dspsift'],
values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'tag16h5'],
name="describerTypes",
label="Describer Types",
description="Describer types used to describe an image.",
value=["dspsift"],
values=["sift", "sift_float", "sift_upright", "dspsift", "akaze", "akaze_liop", "akaze_mldb", "cctag3", "cctag4", "sift_ocv", "akaze_ocv", "tag16h5"],
exclusive=False,
uid=[0],
joinChar=',',
joinChar=",",
),
desc.ChoiceParam(
name='localizerEstimator',
label='Localizer Estimator',
description='Estimator type used to localize cameras (acransac, ransac, lsmeds, loransac, maxconsensus).',
value='acransac',
values=['acransac', 'ransac', 'lsmeds', 'loransac', 'maxconsensus'],
name="localizerEstimator",
label="Localizer Estimator",
description="Estimator type used to localize cameras (acransac, ransac, lsmeds, loransac, maxconsensus).",
value="acransac",
values=["acransac", "ransac", "lsmeds", "loransac", "maxconsensus"],
exclusive=True,
uid=[0],
advanced=True,
),
desc.ChoiceParam(
name='observationConstraint',
label='Observation Constraint',
description='Observation constraint mode used in the optimization:\n'
' * Basic: Use standard reprojection error in pixel coordinates\n'
' * Scale: Use reprojection error in pixel coordinates but relative to the feature scale',
value='Scale',
values=['Basic', 'Scale'],
name="observationConstraint",
label="Observation Constraint",
description="Observation constraint mode used in the optimization:\n"
" - Basic: Use standard reprojection error in pixel coordinates.\n"
" - Scale: Use reprojection error in pixel coordinates but relative to the feature scale.",
value="Scale",
values=["Basic", "Scale"],
exclusive=True,
uid=[0],
advanced=True,
),
desc.IntParam(
name='localizerEstimatorMaxIterations',
label='Localizer Max Ransac Iterations',
description='Maximum number of iterations allowed in ransac step.',
name="localizerEstimatorMaxIterations",
label="Localizer Max Ransac Iterations",
description="Maximum number of iterations allowed in the Ransac step.",
value=4096,
range=(1, 20000, 1),
uid=[0],
advanced=True,
),
desc.FloatParam(
name='localizerEstimatorError',
label='Localizer Max Ransac Error',
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 ACRansac, it will analyze the input data to select the optimal value).',
name="localizerEstimatorError",
label="Localizer Max Ransac Error",
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 ACRansac, it will analyze the input data to select the optimal value).",
value=0.0,
range=(0.0, 100.0, 0.1),
uid=[0],
advanced=True,
),
desc.BoolParam(
name='lockScenePreviouslyReconstructed',
label='Lock Scene Previously Reconstructed',
description='This option is useful for SfM augmentation. Lock previously reconstructed poses and intrinsics.',
name="lockScenePreviouslyReconstructed",
label="Lock Previously Reconstructed Scene",
description="Lock previously reconstructed poses and intrinsics.\n"
"This option is useful for SfM augmentation.",
value=False,
uid=[0],
),
desc.BoolParam(
name='useLocalBA',
label='Local Bundle Adjustment',
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.',
name="useLocalBA",
label="Local Bundle Adjustment",
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.",
value=True,
uid=[0],
),
desc.IntParam(
name='localBAGraphDistance',
label='LocalBA Graph Distance',
description='Graph-distance limit to define the Active region in the Local Bundle Adjustment strategy.',
name="localBAGraphDistance",
label="LocalBA Graph Distance",
description="Graph-distance limit to define the active region in the Local Bundle Adjustment strategy.",
value=1,
range=(2, 10, 1),
uid=[0],
advanced=True,
),
desc.IntParam(
name='nbFirstUnstableCameras',
label='First Unstable Cameras Nb',
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'
'Past this number, the bundle adjustment will only be performed once for N added cameras.',
name="nbFirstUnstableCameras",
label="First Unstable Cameras Nb",
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"
"Past this number, the bundle adjustment will only be performed once for N added cameras.",
value=30,
range=(0, 100, 1),
uid=[0],
advanced=True
),
desc.IntParam(
name='maxImagesPerGroup',
label='Max Images Per Group',
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.',
name="maxImagesPerGroup",
label="Max Images Per Group",
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.",
value=30,
range=(0, 100, 1),
uid=[0],
advanced=True
),
desc.IntParam(
name='bundleAdjustmentMaxOutliers',
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'
'Using a negative value for this threshold will disable BA iterations.',
name="bundleAdjustmentMaxOutliers",
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"
"Using a negative value for this threshold will disable BA iterations.",
value=50,
range=(-1, 1000, 1),
uid=[0],
advanced=True
),
desc.IntParam(
name='maxNumberOfMatches',
label='Maximum Number of Matches',
description='Maximum number of matches per image pair (and per feature type). \n'
'This can be useful to have a quick reconstruction overview. \n'
'0 means no limit.',
name="maxNumberOfMatches",
label="Maximum Number Of Matches",
description="Maximum number of matches per image pair (and per feature type).\n"
"This can be useful to have a quick reconstruction overview.\n"
"0 means no limit.",
value=0,
range=(0, 50000, 1),
uid=[0],
),
desc.IntParam(
name='minNumberOfMatches',
label='Minimum Number of Matches',
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.',
name="minNumberOfMatches",
label="Minimum Number Of Matches",
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.\n"
"0 means no limit.",
value=0,
range=(0, 50000, 1),
uid=[0],
),
desc.IntParam(
name='minInputTrackLength',
label='Min Input Track Length',
description='Minimum track length in input of SfM',
name="minInputTrackLength",
label="Min Input Track Length",
description="Minimum track length in input of SfM.",
value=2,
range=(2, 10, 1),
uid=[0],
),
desc.IntParam(
name='minNumberOfObservationsForTriangulation',
label='Min Observation For Triangulation',
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'
'but the number of final poses is a little bit reduced\n'
'(from 1.5% to 11% on the tested datasets).',
name="minNumberOfObservationsForTriangulation",
label="Min Observations For Triangulation",
description="Minimum number of observations to triangulate a point.\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"
"(from 1.5% to 11% on the tested datasets).",
value=2,
range=(2, 10, 1),
uid=[0],
advanced=True,
),
desc.FloatParam(
name='minAngleForTriangulation',
label='Min Angle For Triangulation',
description='Minimum angle for triangulation.',
name="minAngleForTriangulation",
label="Min Angle For Triangulation",
description="Minimum angle for triangulation.",
value=3.0,
range=(0.1, 10.0, 0.1),
uid=[0],
advanced=True,
),
desc.FloatParam(
name='minAngleForLandmark',
label='Min Angle For Landmark',
description='Minimum angle for landmark.',
name="minAngleForLandmark",
label="Min Angle For Landmark",
description="Minimum angle for landmark.",
value=2.0,
range=(0.1, 10.0, 0.1),
uid=[0],
advanced=True,
),
desc.FloatParam(
name='maxReprojectionError',
label='Max Reprojection Error',
description='Maximum reprojection error.',
name="maxReprojectionError",
label="Max Reprojection Error",
description="Maximum reprojection error.",
value=4.0,
range=(0.1, 10.0, 0.1),
uid=[0],
advanced=True,
),
desc.FloatParam(
name='minAngleInitialPair',
label='Min Angle Initial Pair',
description='Minimum angle for the initial pair.',
name="minAngleInitialPair",
label="Min Angle Initial Pair",
description="Minimum angle for the initial pair.",
value=5.0,
range=(0.1, 10.0, 0.1),
uid=[0],
advanced=True,
),
desc.FloatParam(
name='maxAngleInitialPair',
label='Max Angle Initial Pair',
description='Maximum angle for the initial pair.',
name="maxAngleInitialPair",
label="Max Angle Initial Pair",
description="Maximum angle for the initial pair.",
value=40.0,
range=(0.1, 60.0, 0.1),
uid=[0],
advanced=True,
),
desc.BoolParam(
name='useOnlyMatchesFromInputFolder',
label='Use Only Matches From Input Folder',
description='Use only matches from the input matchesFolder parameter.\n'
'Matches folders previously added to the SfMData file will be ignored.',
name="useOnlyMatchesFromInputFolder",
label="Use Only Matches From Input Folder",
description="Use only matches from the input matchesFolder parameter.\n"
"Matches folders previously added to the SfMData file will be ignored.",
value=False,
uid=[],
advanced=True,
),
desc.BoolParam(
name='useRigConstraint',
label='Use Rig Constraint',
description='Enable/Disable rig constraint.',
name="useRigConstraint",
label="Use Rig Constraint",
description="Enable/Disable rig constraint.",
value=True,
uid=[0],
advanced=True,
),
desc.IntParam(
name='rigMinNbCamerasForCalibration',
label='Min Nb Cameras For Rig Calibration',
description='Minimal number of cameras to start the calibration of the rig',
name="rigMinNbCamerasForCalibration",
label="Min Nb Cameras For Rig Calibration",
description="Minimum number of cameras to start the calibration of the rig.",
value=20,
range=(1, 50, 1),
uid=[0],
advanced=True,
),
desc.BoolParam(
name='lockAllIntrinsics',
label='Force Lock of All Intrinsic Camera Parameters',
description='Force to keep constant all the intrinsics parameters of the cameras (focal length, \n'
'principal point, distortion if any) during the reconstruction.\n'
'This may be helpful if the input cameras are already fully calibrated.',
name="lockAllIntrinsics",
label="Lock All Intrinsic Camera Parameters",
description="Force to keep all the intrinsic parameters of the cameras (focal length, \n"
"principal point, distortion if any) constant during the reconstruction.\n"
"This may be helpful if the input cameras are already fully calibrated.",
value=False,
uid=[0],
),
desc.IntParam(
name='minNbCamerasToRefinePrincipalPoint',
name="minNbCamerasToRefinePrincipalPoint",
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). '
'If we do not have enough cameras, the principal point in consider is considered in the center of the image. '
'If minNbCamerasToRefinePrincipalPoint<=0, the principal point is never refined. '
'If minNbCamerasToRefinePrincipalPoint==1, the principal point is always refined.',
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 is considered to be in the center of the image.\n"
"If minNbCamerasToRefinePrincipalPoint <= 0, the principal point is never refined."
"If minNbCamerasToRefinePrincipalPoint is set to 1, the principal point is always refined.",
value=3,
range=(0, 20, 1),
uid=[0],
advanced=True,
),
desc.BoolParam(
name='filterTrackForks',
label='Filter Track Forks',
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',
name="filterTrackForks",
label="Filter Track Forks",
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.",
value=False,
uid=[0],
),
desc.BoolParam(
name='computeStructureColor',
label='Compute Structure Color',
description='Enable/Disable color computation of each 3D point.',
name="computeStructureColor",
label="Compute Structure Color",
description="Enable/Disable color computation of every 3D point.",
value=True,
uid=[0],
),
desc.File(
name='initialPairA',
label='Initial Pair A',
description='View ID or filename of the first image (either with or without the full path).',
value='',
name="initialPairA",
label="Initial Pair A",
description="View ID or filename of the first image (either with or without the full path).",
value="",
uid=[0],
),
desc.File(
name='initialPairB',
label='Initial Pair B',
description='View ID or filename of the second image (either with or without the full path).',
value='',
name="initialPairB",
label="Initial Pair B",
description="View ID or filename of the second image (either with or without the full path).",
value="",
uid=[0],
),
desc.ChoiceParam(
name='interFileExtension',
label='Inter File Extension',
description='Extension of the intermediate file export.',
value='.abc',
values=('.abc', '.ply'),
name="interFileExtension",
label="Inter File Extension",
description="Extension of the intermediate file export.",
value=".abc",
values=(".abc", ".ply"),
exclusive=True,
uid=[],
advanced=True,
),
desc.ChoiceParam(
name='verboseLevel',
label='Verbose Level',
description='Verbosity level (fatal, error, warning, info, debug, trace).',
value='info',
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
name="verboseLevel",
label="Verbose Level",
description="Verbosity level (fatal, error, warning, info, debug, trace).",
value="info",
values=["fatal", "error", "warning", "info", "debug", "trace"],
exclusive=True,
uid=[],
)
@ -383,23 +385,23 @@ It iterates like that, adding cameras and triangulating new 2D features into 3D
outputs = [
desc.File(
name='output',
label='SfMData',
description='Path to the output sfmdata file',
value=desc.Node.internalFolder + 'sfm.abc',
name="output",
label="SfMData",
description="Path to the output SfM point cloud file (in SfMData format).",
value=desc.Node.internalFolder + "sfm.abc",
uid=[],
),
desc.File(
name='outputViewsAndPoses',
label='Views and Poses',
description='''Path to the output sfmdata file with cameras (views and poses).''',
value=desc.Node.internalFolder + 'cameras.sfm',
name="outputViewsAndPoses",
label="Views And Poses",
description="Path to the output SfMData file with cameras (views and poses).",
value=desc.Node.internalFolder + "cameras.sfm",
uid=[],
),
desc.File(
name='extraInfoFolder',
label='Folder',
description='Folder for intermediate reconstruction files and additional reconstruction information files.',
name="extraInfoFolder",
label="Folder",
description="Folder for intermediate reconstruction files and additional reconstruction information files.",
value=desc.Node.internalFolder,
uid=[],
),

View file

@ -25,146 +25,148 @@ Many cameras are contributing to the low frequencies and only the best ones cont
inputs = [
desc.File(
name='input',
label='Dense SfMData',
description='SfMData file.',
value='',
name="input",
label="Dense SfMData",
description="SfMData file.",
value="",
uid=[0],
),
desc.File(
name='imagesFolder',
label='Images Folder',
description='Use images from a specific folder instead of those specify in the SfMData file.\nFilename should be the image uid.',
value='',
name="imagesFolder",
label="Images Folder",
description="Use images from a specific folder instead of those specified in the SfMData file.\n"
"Filename should be the image UID.",
value="",
uid=[0],
),
desc.File(
name='inputMesh',
label='Mesh',
description='Optional input mesh to texture. By default, it will texture the result of the reconstruction.',
value='',
name="inputMesh",
label="Mesh",
description="Optional input mesh to texture. By default, it will texture the result of the reconstruction.",
value="",
uid=[0],
),
desc.File(
name='inputRefMesh',
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.',
value='',
name="inputRefMesh",
label="Ref Mesh",
description="Optional input mesh to compute height maps and normal maps.\n"
"If not provided, no additional map with geometric information will be generated.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='textureSide',
label='Texture Side',
description='''Output texture size''',
name="textureSide",
label="Texture Side",
description="Output texture size.",
value=8192,
values=(1024, 2048, 4096, 8192, 16384),
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name='downscale',
label='Texture Downscale',
description='''Texture downscale factor''',
name="downscale",
label="Texture Downscale",
description="Texture downscale factor.",
value=2,
values=(1, 2, 4, 8),
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name='outputMeshFileType',
label='Mesh File Type',
description='File Type',
value='obj',
values=('obj', 'gltf', 'fbx', 'stl'),
name="outputMeshFileType",
label="Mesh File Type",
description="File type for the mesh output.",
value="obj",
values=("obj", "gltf", "fbx", "stl"),
exclusive=True,
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 != ''),
group=None,
groupDesc=[
desc.BoolParam(
name='enable',
label='Enable',
description='Generate Textures',
name="enable",
label="Enable",
description="Generate textures if set to true.",
value=True,
uid=[],
group=None,
),
desc.ChoiceParam(
name='colorMappingFileType',
label='File Type',
description='Texture File Type',
value='exr',
values=('exr', 'png', 'tiff', 'jpg'),
name="colorMappingFileType",
label="File Type",
description="Texture file type.",
value="exr",
values=("exr", "png", "tiff", "jpg"),
exclusive=True,
uid=[0],
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 != ''),
group=None,
groupDesc=[
desc.BoolParam(
name='enable',
label='Enable',
description='Generate Normal / Bump Maps',
name="enable",
label="Enable",
description="Generate normal / bump maps if set to true.",
value=True,
uid=[],
group=None,
),
desc.ChoiceParam(
name='bumpType',
label='Bump Type',
description='Export Normal Map or Height Map',
value='Normal',
values=('Height', 'Normal'),
name="bumpType",
label="Bump Type",
description="Export normal map or height map.",
value="Normal",
values=("Height", "Normal"),
exclusive=True,
uid=[0],
enabled=lambda node: node.bumpMapping.enable.value,
),
desc.ChoiceParam(
name='normalFileType',
label='File Type',
description='NormalMap Texture File Type',
value='exr',
values = ('exr', 'png', 'tiff', 'jpg'),
name="normalFileType",
label="File Type",
description="File type for the normal map texture.",
value="exr",
values = ("exr", "png", "tiff", "jpg"),
exclusive=True,
uid=[0],
enabled=lambda node: node.bumpMapping.enable.value and node.bumpMapping.bumpType.value == "Normal",
),
desc.ChoiceParam(
name='heightFileType',
label='File Type',
description='HeightMap Texture File Type',
value='exr',
values=('exr',),
name="heightFileType",
label="File Type",
description="File type for the height map texture.",
value="exr",
values=("exr",),
exclusive=True,
uid=[0],
enabled=lambda node: node.bumpMapping.enable.value and node.bumpMapping.bumpType.value == "Height",
),
],
),
desc.GroupAttribute(name="displacementMapping", label="Displacement Mapping", description="Displacement Mapping Parameters",
enabled=lambda node: (node.inputRefMesh.value != ''),
desc.GroupAttribute(name="displacementMapping", label="Displacement Mapping", description="Displacement mapping parameters.",
enabled=lambda node: (node.inputRefMesh.value != ""),
group=None,
groupDesc=[
desc.BoolParam(
name='enable',
label='Enable',
description='Generate Height Maps for Displacement',
name="enable",
label="Enable",
description="Generate height maps for displacement.",
value=True,
uid=[],
group=None,
),
desc.ChoiceParam(
name='displacementMappingFileType',
label='File Type',
description='HeightMap Texture File Type',
value='exr',
values=('exr',),
name="displacementMappingFileType",
label="File Type",
description="File type for the height map texture.",
value="exr",
values=("exr",),
exclusive=True,
uid=[0],
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(
name='unwrapMethod',
label='Unwrap Method',
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'
' * LSCM (<= 600k faces): optimize space. Generates one atlas.\n'
' * ABF (<= 300k faces): optimize space and stretch. Generates one atlas.',
name="unwrapMethod",
label="Unwrap Method",
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"
" - LSCM (<= 600k faces): optimize space. Generates one atlas.\n"
" - ABF (<= 300k faces): optimize space and stretch. Generates one atlas.",
value="Basic",
values=("Basic", "LSCM", "ABF"),
exclusive=True,
uid=[0],
),
desc.BoolParam(
name='useUDIM',
label='Use UDIM',
description='Use UDIM UV mapping.',
name="useUDIM",
label="Use UDIM",
description="Use UDIM UV mapping.",
value=True,
uid=[0],
),
desc.BoolParam(
name='fillHoles',
label='Fill Holes',
description='Fill Texture holes with plausible values',
name="fillHoles",
label="Fill Holes",
description="Fill texture holes with plausible values.",
value=False,
uid=[0],
),
desc.IntParam(
name='padding',
label='Padding',
description='''Texture edge padding size in pixel''',
name="padding",
label="Padding",
description="Texture edge padding size in pixels.",
value=5,
range=(0, 20, 1),
uid=[0],
advanced=True,
),
desc.IntParam(
name='multiBandDownscale',
label='Multi Band Downscale',
description='''Width of frequency bands for multiband blending''',
name="multiBandDownscale",
label="Multi Band Downscale",
description="Width of frequency bands for multiband blending.",
value=4,
range=(0, 8, 2),
uid=[0],
@ -217,109 +219,113 @@ Many cameras are contributing to the low frequencies and only the best ones cont
),
desc.GroupAttribute(
name="multiBandNbContrib",
label="MultiBand contributions",
label="Multi-Band Contributions",
groupDesc=[
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="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="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="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),
],
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,
),
desc.BoolParam(
name='useScore',
label='Use Score',
description='Use triangles scores (ie. reprojection area) for multiband blending.',
name="useScore",
label="Use Score",
description="Use triangles scores (ie. reprojection area) for multi-band blending.",
value=True,
uid=[0],
advanced=True,
),
desc.FloatParam(
name='bestScoreThreshold',
label='Best Score Threshold',
description='''(0.0 to disable filtering based on threshold to relative best score)''',
name="bestScoreThreshold",
label="Best Score Threshold",
description="Setting this parameter to 0.0 disables filtering based on threshold to relative best score.",
value=0.1,
range=(0.0, 1.0, 0.01),
uid=[0],
advanced=True,
),
desc.FloatParam(
name='angleHardThreshold',
label='Angle Hard Threshold',
description='''(0.0 to disable angle hard threshold filtering)''',
name="angleHardThreshold",
label="Angle Hard Threshold",
description="Setting this parameter to 0.0 disables angle hard threshold filtering.",
value=90.0,
range=(0.0, 180.0, 0.01),
uid=[0],
advanced=True,
),
desc.ChoiceParam(
name='workingColorSpace',
label='Working Color Space',
name="workingColorSpace",
label="Working Color Space",
description="Color space for the texturing internal computation (does not impact the output file color space).",
value='sRGB',
values=('sRGB', 'Linear', 'ACES2065-1', 'ACEScg'),
value="sRGB",
values=("sRGB", "Linear", "ACES2065-1", "ACEScg"),
exclusive=True,
uid=[0],
advanced=True,
),
desc.ChoiceParam(
name='outputColorSpace',
label='Output Color Space',
name="outputColorSpace",
label="Output Color Space",
description="Color space for the output texture files.",
value='AUTO',
values=('sRGB', 'rec709', 'Linear', 'ACES2065-1', 'ACEScg', 'AUTO'),
value="AUTO",
values=("sRGB", "rec709", "Linear", "ACES2065-1", "ACEScg", "AUTO"),
exclusive=True,
uid=[0],
),
desc.BoolParam(
name='correctEV',
label='Correct Exposure',
description='Uniformize images exposure values.',
name="correctEV",
label="Correct Exposure",
description="Uniformize images exposure values.",
value=False,
uid=[0],
),
desc.BoolParam(
name='forceVisibleByAllVertices',
label='Force Visible By All Vertices',
description='''Triangle visibility is based on the union of vertices visibility.''',
name="forceVisibleByAllVertices",
label="Force Visible By All Vertices",
description="Triangle visibility is based on the union of vertices visibility.",
value=False,
uid=[0],
advanced=True,
),
desc.BoolParam(
name='flipNormals',
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.''',
name="flipNormals",
label="Flip Normals",
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,
uid=[0],
advanced=True,
),
desc.ChoiceParam(
name='visibilityRemappingMethod',
label='Visibility Remapping Method',
description='''Method to remap visibilities from the reconstruction to the input mesh (Pull, Push, PullPush, MeshItself).''',
value='PullPush',
values=['Pull', 'Push', 'PullPush', 'MeshItself'],
name="visibilityRemappingMethod",
label="Visibility Remapping Method",
description="Method to remap visibilities from the reconstruction to the input mesh (Pull, Push, PullPush, MeshItself).",
value="PullPush",
values=["Pull", "Push", "PullPush", "MeshItself"],
exclusive=True,
uid=[0],
advanced=True,
),
desc.FloatParam(
name='subdivisionTargetRatio',
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).''',
name="subdivisionTargetRatio",
label="Subdivision Target Ratio",
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,
range=(0.0, 1.0, 0.001),
uid=[0],
advanced=True,
),
desc.ChoiceParam(
name='verboseLevel',
label='Verbose Level',
description='''verbosity level (fatal, error, warning, info, debug, trace).''',
value='info',
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
name="verboseLevel",
label="Verbose Level",
description="Verbosity level (fatal, error, warning, info, debug, trace).",
value="info",
values=["fatal", "error", "warning", "info", "debug", "trace"],
exclusive=True,
uid=[],
),
@ -328,36 +334,36 @@ Many cameras are contributing to the low frequencies and only the best ones cont
outputs = [
desc.File(
name='output',
label='Folder',
description='Folder for output mesh: OBJ, material and texture files.',
name="output",
label="Folder",
description="Folder for output mesh: OBJ, material and texture files.",
value=desc.Node.internalFolder,
uid=[],
),
desc.File(
name='outputMesh',
label='Mesh',
description='Output Mesh file.',
value=desc.Node.internalFolder + 'texturedMesh.{outputMeshFileTypeValue}',
name="outputMesh",
label="Mesh",
description="Output mesh file.",
value=desc.Node.internalFolder + "texturedMesh.{outputMeshFileTypeValue}",
uid=[],
group='',
group="",
),
desc.File(
name='outputMaterial',
name="outputMaterial",
enabled= lambda node: node.outputMeshFileType.value == "obj",
label='Material',
description='Output Material file.',
value=desc.Node.internalFolder + 'texturedMesh.mtl',
label="Material",
description="Output material file.",
value=desc.Node.internalFolder + "texturedMesh.mtl",
uid=[],
group='',
group="",
),
desc.File(
name='outputTextures',
label='Textures',
description='Output Texture files.',
value= lambda attr: desc.Node.internalFolder + 'texture_*.' + attr.node.colorMapping.colorMappingFileType.value if attr.node.colorMapping.enable.value else '',
name="outputTextures",
label="Textures",
description="Output texture files.",
value= lambda attr: desc.Node.internalFolder + "texture_*." + attr.node.colorMapping.colorMappingFileType.value if attr.node.colorMapping.enable.value else "",
uid=[],
group=''
group=""
)
]

View file

@ -14,17 +14,17 @@ It fuses all feature matches between image pairs into tracks. Each track represe
inputs = [
desc.File(
name='input',
label='SfMData',
description='SfMData file.',
value='',
name="input",
label="SfMData",
description="Input SfMData file.",
value="",
uid=[0],
),
desc.ListAttribute(
elementDesc=desc.File(
name="featuresFolder",
label="Features Folder",
description="",
description="Folder containing some extracted features and descriptors.",
value="",
uid=[0],
),
@ -36,7 +36,7 @@ It fuses all feature matches between image pairs into tracks. Each track represe
elementDesc=desc.File(
name="matchesFolder",
label="Matches Folder",
description="",
description="Folder containing some matches.",
value="",
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."
),
desc.ChoiceParam(
name='describerTypes',
label='Describer Types',
description='Describer types used to describe an image.',
value=['dspsift'],
values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'tag16h5'],
name="describerTypes",
label="Describer Types",
description="Describer types used to describe an image.",
value=["dspsift"],
values=["sift", "sift_float", "sift_upright", "dspsift", "akaze", "akaze_liop", "akaze_mldb", "cctag3", "cctag4", "sift_ocv", "akaze_ocv", "tag16h5"],
exclusive=False,
uid=[0],
joinChar=',',
joinChar=",",
),
desc.IntParam(
name='minInputTrackLength',
label='Min Input Track Length',
description='Minimum track length',
name="minInputTrackLength",
label="Min Input Track Length",
description="Minimum track length.",
value=2,
range=(2, 10, 1),
uid=[0],
),
desc.BoolParam(
name='useOnlyMatchesFromInputFolder',
label='Use Only Matches From Input Folder',
description='Use only matches from the input matchesFolder parameter.\n'
'Matches folders previously added to the SfMData file will be ignored.',
name="useOnlyMatchesFromInputFolder",
label="Use Only Matches From Input Folder",
description="Use only matches from the input 'matchesFolder' parameter.\n"
"Matches folders previously added to the SfMData file will be ignored.",
value=False,
uid=[],
advanced=True,
),
desc.BoolParam(
name='filterTrackForks',
label='Filter Track Forks',
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',
name="filterTrackForks",
label="Filter Track Forks",
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.",
value=False,
uid=[0],
),
desc.ChoiceParam(
name='verboseLevel',
label='Verbose Level',
description='Verbosity level (fatal, error, warning, info, debug, trace).',
value='info',
values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'],
name="verboseLevel",
label="Verbose Level",
description="Verbosity level (fatal, error, warning, info, debug, trace).",
value="info",
values=["fatal", "error", "warning", "info", "debug", "trace"],
exclusive=True,
uid=[],
)
@ -92,10 +92,10 @@ It fuses all feature matches between image pairs into tracks. Each track represe
outputs = [
desc.File(
name='output',
label='Tracks',
description='Path to the output tracks file',
value=desc.Node.internalFolder + 'tracksFile.json',
name="output",
label="Tracks",
description="Path to the output tracks file.",
value=desc.Node.internalFolder + "tracksFile.json",
uid=[],
),
]

View file

@ -18,48 +18,48 @@ One frame per viewpoint will be rendered, and the undistorted views can optional
inputs = [
desc.File(
name='blenderCmd',
label='Blender Command',
description='Command to launch Blender',
value='blender',
name="blenderCmd",
label="Blender Command",
description="Command to launch Blender.",
value="blender",
uid=[],
group='',
group="",
),
desc.File(
name='script',
label='Script',
description='Path to the internal script for rendering in Blender',
value=os.path.join(currentDir, 'scripts' ,'preview.py'),
name="script",
label="Script",
description="Path to the internal script for rendering in Blender.",
value=os.path.join(currentDir, "scripts", "preview.py"),
uid=[],
group='',
group="",
advanced=True,
),
desc.File(
name='cameras',
label='Cameras',
description='SfmData with the views, poses and intrinsics to use (in JSON format)',
value='',
name="cameras",
label="Cameras",
description="SfMData with the views, poses and intrinsics to use (in JSON format).",
value="",
uid=[0],
),
desc.File(
name='model',
label='Model',
description='Point cloud (.abc) or mesh (.obj) to render',
value='',
name="model",
label="Model",
description="Point cloud (.abc) or mesh (.obj) to render.",
value="",
uid=[0],
),
desc.BoolParam(
name='useBackground',
label='Display Background',
description='Use the undistorted images as background',
name="useBackground",
label="Display Background",
description="Use the undistorted images as background.",
value=True,
uid=[0],
),
desc.File(
name='undistortedImages',
label='Undistorted Images',
description='Folder containing the undistorted images',
value='',
name="undistortedImages",
label="Undistorted Images",
description="Folder containing the undistorted images.",
value="",
uid=[0],
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",
label="Point Cloud Settings",
group=None,
enabled=lambda node: node.model.value.lower().endswith('.abc'),
description="Settings for point cloud rendering",
enabled=lambda node: node.model.value.lower().endswith(".abc"),
description="Settings for point cloud rendering.",
groupDesc=[
desc.FloatParam(
name='particleSize',
label='Particle Size',
description='Scale of particles used for the point cloud',
name="particleSize",
label="Particle Size",
description="Scale of particles used for the point cloud.",
value=0.01,
range=(0.01, 1.0, 0.01),
uid=[0],
),
desc.ChoiceParam(
name='particleColor',
label='Particle Color',
description='Color of particles used for the point cloud',
value='Red',
values=['Grey', 'White', 'Red', 'Green', 'Magenta'],
name="particleColor",
label="Particle Color",
description="Color of particles used for the point cloud.",
value="Red",
values=["Grey", "White", "Red", "Green", "Magenta"],
exclusive=True,
uid=[0],
),
@ -93,24 +93,24 @@ One frame per viewpoint will be rendered, and the undistorted views can optional
name="meshParams",
label="Mesh Settings",
group=None,
enabled=lambda node: node.model.value.lower().endswith('.obj'),
description="Setting for mesh rendering",
enabled=lambda node: node.model.value.lower().endswith(".obj"),
description="Setting for mesh rendering.",
groupDesc=[
desc.ChoiceParam(
name='shading',
label='Shading',
description='Shading method for visualizing the mesh',
value='wireframe',
values=['wireframe', 'line_art'],
name="shading",
label="Shading",
description="Shading method for visualizing the mesh.",
value="wireframe",
values=["wireframe", "line_art"],
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name='edgeColor',
label='Edge Color',
description='Color of the mesh edges',
value='Red',
values=['Grey', 'White', 'Red', 'Green', 'Magenta'],
name="edgeColor",
label="Edge Color",
description="Color of the mesh edges.",
value="Red",
values=["Grey", "White", "Red", "Green", "Magenta"],
exclusive=True,
uid=[0],
),
@ -120,19 +120,19 @@ One frame per viewpoint will be rendered, and the undistorted views can optional
outputs = [
desc.File(
name='output',
label='Output',
description='Output folder',
name="output",
label="Output",
description="Output folder.",
value=desc.Node.internalFolder,
uid=[],
),
desc.File(
name='frames',
label='Frames',
description='Frames rendered in Blender',
semantic='image',
value=desc.Node.internalFolder + '<FILENAME>_preview.jpg',
name="frames",
label="Frames",
description="Frames rendered in Blender.",
semantic="image",
value=desc.Node.internalFolder + "<FILENAME>_preview.jpg",
uid=[],
group='',
group="",
),
]