Meshroom/meshroom/nodes/aliceVision/Split360Images.py
Candice Bentéjac c498f48e1e [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.
2023-06-16 10:32:01 +02:00

149 lines
5.3 KiB
Python

__version__ = "3.0"
from meshroom.core import desc
class Split360InputNodeSize(desc.DynamicNodeSize):
'''
The Split360Images will increase the amount of views in the SfMData.
This class converts the number of input views into the number of split output views.
'''
def computeSize(self, node):
s = super(Split360InputNodeSize, self).computeSize(node)
factor = 0
mode = node.attribute('splitMode')
if mode.value == 'equirectangular':
factor = node.attribute('equirectangularGroup.equirectangularNbSplits').value
elif mode.value == 'dualfisheye':
factor = 2
return s * factor
class Split360Images(desc.AVCommandLineNode):
commandLine = 'aliceVision_split360Images {allParams}'
size = Split360InputNodeSize('input')
category = 'Utils'
documentation = "This node is used to extract multiple images from equirectangular or dualfisheye images."
inputs = [
desc.File(
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"],
exclusive=True,
uid=[0],
),
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"],
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
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"],
exclusive=True,
uid=[0],
),
]
),
desc.GroupAttribute(name="equirectangularGroup", label="Equirectangular", description="Equirectangular", group=None,
enabled=lambda node: node.splitMode.value == "equirectangular",
groupDesc=[
desc.IntParam(
name="equirectangularNbSplits",
label='Nb 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.",
value=1200,
range=(100, 10000, 1),
uid=[0],
),
desc.BoolParam(
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 degrees).",
value=110.0,
range=(0.0, 180.0, 1.0),
uid=[0],
),
]
),
desc.ChoiceParam(
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"],
exclusive=True,
uid=[],
),
]
outputs = [
desc.File(
name="output",
label="Folder",
description="Output folder for extracted frames.",
value=desc.Node.internalFolder,
uid=[],
),
desc.File(
name="outSfMData",
label="SfMData File",
description="Output SfMData file.",
value=desc.Node.internalFolder + "rig.sfm",
uid=[],
),
]