Skip to content

Commit

Permalink
[nodes] RenderAnimatedCamera: clean up
Browse files Browse the repository at this point in the history
  • Loading branch information
fabiencastan committed Jul 23, 2021
1 parent f814179 commit b226c35
Show file tree
Hide file tree
Showing 2 changed files with 196 additions and 204 deletions.
146 changes: 76 additions & 70 deletions meshroom/nodes/blender/RenderAnimatedCamera.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,11 @@
class RenderAnimatedCamera(desc.CommandLineNode):
commandLine = '{blenderPathValue} -b --python {scriptPathValue} -- {allParams}'

category = 'Rendition'
category = 'Export'
documentation = '''
The goal of this node is to make a render of the sfmData a Blender scene using Blender's API.
It supports both Point Clouds (.abc) and Meshes (.obj) and can use a background image of you use undistorted images.
We have several inputs:
**blenderPath points to the blender executable
**scriptPath point to the script containing the code.
**sfMCameraPath point to the AnimatedCamera we are going to be tracking.
This node makes a render of the sfmData scene using the Blender rendering engine.
It supports both Point Clouds (.abc) and Meshes (.obj). It allows to put the Live Action plate in background.
**useBackground determines if you want to use images as a background.
**undistortedImages path toward the images you can use as background.
**sfMData the data you want to render.
Expand All @@ -33,109 +30,118 @@ class RenderAnimatedCamera(desc.CommandLineNode):
desc.File(
name='blenderPath',
label='Blender Path',
description='''Path to blender binary.''',
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 script in the project.''',
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='Camera Path',
description='''Input Camera path from the sfm.''',
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='Tick if you want to use original image dataset as background',
description='Use the undistorted images as background',
value=True,
uid=[0],
),
desc.File(
name='undistortedImages',
label='Images Folder',
description='''Input the processed images.''',
label='Undistorted Images Folder',
description='''Input folder with the undistorted images''',
value='',
uid=[0],
enabled=lambda node: node.displayBackground.useBackground.value,
enabled=lambda node: node.useBackground.value,
),
desc.File(
name='sfMData',
label='SFM Data',
description='''Input the previously used SFM Data.''',
value='',
uid=[0],
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.GroupAttribute(name="isCloudPoint", label="Point Cloud Settings", group=None, enabled=lambda node: node.sfMData.value.endswith('.abc'), description="Setting of the render if we use a Point Cloud. (SFM Data is .abc)", groupDesc=[
desc.FloatParam(
name='pointCloudDensity',
label='Point Cloud Density',
description='''Number of point from the point cloud rendered''',
value=0.25,
range=(0.01, 0.5, 0.01),
uid=[0],
enabled=lambda node: node.sfMData.value.endswith('.abc'),
),
desc.FloatParam(
name='particleSize',
label='Particle Size',
description='''Scale of every particle used to show the point cloud''',
value=0.25,
range=(0.01, 1, 0.01),
uid=[0],
enabled=lambda node: node.sfMData.value.endswith('.abc'),
),
desc.ChoiceParam(
name='particleColor',
label='Particle Color',
description='''Color of every particle used to show the point cloud (SFM Data is .abc)''',
value='Red',
values=['Grey', 'White', 'Red', 'Green', 'Magenta'],
exclusive=True,
uid=[0],
joinChar=',',
enabled=lambda node: node.sfMData.value.endswith('.abc'),
),
]),
desc.GroupAttribute(name="isMesh", label="Mesh Settings", group=None, enabled=lambda node: node.sfMData.value.endswith('.obj'), description="Setting of the render if we use a Mesh. (SFM Data is .obj)", groupDesc=[
desc.ChoiceParam(
name='edgeColor',
label='Edge Color',
description='''Color of the edges of the rendered object (SFM Data is .obj)''',
value='Red',
values=['Grey', 'White', 'Red', 'Green', 'Magenta'],
exclusive=True,
uid=[0],
joinChar=',',
enabled=lambda node: node.sfMData.value.endswith('.obj'),
),
]),
desc.ChoiceParam(
name='outputFormat',
label='Output Format',
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],
joinChar=',',
),
]

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

0 comments on commit b226c35

Please sign in to comment.