Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[nodes] New node "RenderAnimatedCamera" using blender API #1432

Merged
merged 9 commits into from
Jul 23, 2021
8 changes: 8 additions & 0 deletions meshroom/nodes/aliceVision/ExportAnimatedCamera.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,5 +100,13 @@ class ExportAnimatedCamera(desc.CommandLineNode):
group='', # exclude from command line
uid=[],
),
desc.File(
name='outputUndistorted',
label='Output Undistorted images Filepath',
description='Output Undistorted images.',
value=desc.Node.internalFolder + 'undistort',
group='', # exclude from command line
uid=[],
),
]

136 changes: 136 additions & 0 deletions meshroom/nodes/blender/RenderAnimatedCamera.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
__version__ = "1.0"

from meshroom.core import desc
import os.path

currentDir = os.path.dirname(os.path.abspath(__file__))

class RenderAnimatedCamera(desc.CommandLineNode):
commandLine = '{blenderPathValue} -b --python {scriptPathValue} -- {allParams}'

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add category and documentation variables.

category = 'Export'
documentation = '''
This node makes a rendering of the sfmData scene through an animated camera using the Blender rendering engine.
It supports both Point Clouds (.abc) and Meshes (.obj).
'''

inputs = [
desc.File(
name='blenderPath',
label='Blender Path',
description='''Path to blender executable''',
value=os.environ.get('BLENDER',"C:/Program Files/Blender Foundation/Blender 2.91/blender.exe"),
uid=[],
group='',
),
desc.File(
name='scriptPath',
label='Script Path',
description='''Path to the internal script for rendering in Blender''',
value=os.path.join(currentDir, 'scripts' ,'renderAnimatedCameraInBlender.py'),
uid=[],
group='',
),
desc.File(
name='sfmCameraPath',
label='SfmData with Animated Camera',
description='''SfmData with the animated camera to render''',
value='',
uid=[0],
),
desc.File(
name='model',
label='Model',
description='Point Cloud or Mesh used in the rendering',
value='',
uid=[0],
),
desc.BoolParam(
name='useBackground',
label='Display Background',
description='Use the undistorted images as background',
value=True,
uid=[0],
),
desc.File(
name='undistortedImages',
label='Undistorted Images Folder',
description='''Input folder with the undistorted images''',
value='',
uid=[0],
enabled=lambda node: node.useBackground.value,
),
desc.GroupAttribute(
name="pointCloudParams",
label="Point Cloud Settings",
group=None,
enabled=lambda node: node.model.value.lower().endswith('.abc'),
description="Setting of the render if we use a Point Cloud",
groupDesc=[
desc.FloatParam(
name='pointCloudDensity',
label='Density',
description='''Reduce the points density for the point cloud rendering''',
value=0.25,
range=(0.01, 0.5, 0.01),
uid=[0],
),
desc.FloatParam(
name='particleSize',
label='Particle Size',
description='''Scale of particles used to show the point cloud''',
value=0.1,
range=(0.01, 1, 0.01),
uid=[0],
),
desc.ChoiceParam(
name='particleColor',
label='Particle Color',
description='''Color of particles used to show the point cloud''',
value='Red',
values=['Grey', 'White', 'Red', 'Green', 'Magenta'],
exclusive=True,
uid=[0],
joinChar=',',
),
]
),
desc.GroupAttribute(
name="meshParams",
label="Mesh Settings",
group=None,
enabled=lambda node: node.model.value.lower().endswith('.obj'),
description="Setting of the render if we use a Mesh",
groupDesc=[
desc.ChoiceParam(
name='edgeColor',
label='Edge Color',
description='''Color of the edges of the rendered object''',
value='Red',
values=['Grey', 'White', 'Red', 'Green', 'Magenta'],
exclusive=True,
uid=[0],
joinChar=',',
),
]
),
desc.ChoiceParam(
name='videoFormat',
label='Video Format',
description='''Choose the format of the output among this list of supported format''',
value='mkv',
values=['mkv', 'mp4', 'mov', 'avi'],
exclusive=True,
uid=[0],
),
]

outputs = [
desc.File(
name='outputPath',
label='Output Path',
description='''Output Folder''',
value=desc.Node.internalFolder,
uid=[],
)
]
Empty file.
Loading