Skip to content

Commit

Permalink
[nodes] Adding mesh render with edge detection and changes on the args
Browse files Browse the repository at this point in the history
Added the possibility of rendering the output of the meshing node into a edge detection render of the obj. Added the activation and deactivation of the background images as an option. Improving the way the arguments are shown with a conditionnal display of some arguments.
  • Loading branch information
DanielDelaporus authored and fabiencastan committed Jul 23, 2021
1 parent 1e2aaff commit f814179
Show file tree
Hide file tree
Showing 3 changed files with 494 additions and 344 deletions.
121 changes: 89 additions & 32 deletions meshroom/nodes/blender/RenderAnimatedCamera.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,27 @@
class RenderAnimatedCamera(desc.CommandLineNode):
commandLine = '{blenderPathValue} -b --python {scriptPathValue} -- {allParams}'

category = 'Rendition'
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.
**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.
(point cloud)
**pointCloudDensity changes the density of the point cloud rendered.
**particleSize changes the size of each point in the point cloud rendered.
**particleColor changes the color of each point in the point cloud rendered.
(Mesh)
**edgeColor is the color of the outline of the mesh rendered.
**outputFormat is the video format we want to export of rendition in.
**outputPath point to where is video is going to be saved.
'''

inputs = [
desc.File(
name='blenderPath',
Expand All @@ -20,8 +41,8 @@ class RenderAnimatedCamera(desc.CommandLineNode):
desc.File(
name='scriptPath',
label='Script Path',
description='''Path to blender binary.''',
value=os.path.join(currentDir, 'scripts' ,'camera_support.py'),
description='''Path to the script in the project.''',
value=os.path.join(currentDir, 'scripts' ,'renderAnimatedCameraInBlender.py'),
uid=[],
group='',
),
Expand All @@ -32,54 +53,90 @@ class RenderAnimatedCamera(desc.CommandLineNode):
value='',
uid=[0],
),
desc.BoolParam(
name='useBackground',
label='Display Background',
description='Tick if you want to use original image dataset as background',
value=True,
uid=[0],
),
desc.File(
name='undistortedImages',
label='Images Folder',
description='''Input the processed images.''',
value='',
uid=[0],
enabled=lambda node: node.displayBackground.useBackground.value,
),
desc.File(
name='sfMData',
label='SFM Data',
description='''Input the previously used SFM Data.''',
value='',
uid=[0],
),
desc.FloatParam(
name='cloudPointDensity',
label='Cloud Point Density',
description='''Number of point from the cloud rendered''',
value=0.25,
range=(0.01, 0.5, 0.01),
uid=[0],
),
desc.FloatParam(
name='particleSize',
label='Particle Size',
description='''Scale of every particle used to show the cloud of point''',
value=0.25,
range=(0.01, 1, 0.01),
uid=[0],
),
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='particleColor',
label='Particle Color',
description='''Color of every particle used to show the cloud of point''',
value=['Grey'],
values=['Grey', 'White', 'Red', 'Green', 'Magenta'],
name='outputFormat',
label='Output 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=',',
),
desc.File(
name='undistortedImages',
label='Images Folder',
description='''Input the processed images.''',
value='',
uid=[0],
),
]

outputs = [
desc.File(
name='outputPath',
label='Output Video',
label='Output Path',
description='''Output folder.''',
value=desc.Node.internalFolder, # PLACE HOLDER TO CHANGE
value=desc.Node.internalFolder,
uid=[],
)
]
Loading

0 comments on commit f814179

Please sign in to comment.