DLR-RM / BlenderProc

A procedural Blender pipeline for photorealistic training image generation
GNU General Public License v3.0
2.84k stars 454 forks source link

[BUG?]: Cannot close denoiser in BlenderProc #642

Closed sanmiyom closed 2 years ago

sanmiyom commented 2 years ago

Hello,

This tutorial says that Denoiser option of Cycles engine can be closed using:

bproc.renderer.set_denoiser(None)

However, Denoiser remains activated after running the script.

Also, a question: Can I change the render engine in BlenderProc?

themasterlink commented 2 years ago

Hey,

yes, you are right the denoiser option doesn't work at the moment.

I will fix it the blender API has slightly changed.

Can I change the render engine in BlenderProc?

We only support Cycles, Eevee is not supported the materials work differently, and the render settings, too. Why do you want to use another one?

PS: I would not recommend using a non-realistic light rendering engine, there are many works that show that photo realistic rendering performs better than non-photorealistic rendering like Eevee.

Best, Max

sanmiyom commented 2 years ago

Alright, thank you.

I need to ask one more question. What does BlenderProc do in order to make the scene more realistic compared to rendering images in Blender Python API? As far as I can see, renders are exactly same.

What can I do to make it more realistic using BlenderProc?

themasterlink commented 2 years ago

Hey,

that is the whole idea to use the blender python API to make images more realistic ;) The nice part is you don't have to deal with all the stuff necessary to use blender for rendering thousands of images. It is a nice wrapper around the blender API, offering many additional features.

Can you please give an example where the denoiser is not turned off with bproc.renderer.set_denoiser(None)

Best, Max

sanmiyom commented 2 years ago

You can add the set_denoiser(None) line just before render line in quickstart.py. You will see that Denoising is still active.

import blenderproc as bproc
import numpy as np

bproc.init()

# Create a simple object:
obj = bproc.object.create_primitive("MONKEY")

# Create a point light next to it
light = bproc.types.Light()
light.set_location([2, -2, 0])
light.set_energy(300)

# Set the camera to be in front of the object
cam_pose = bproc.math.build_transformation_mat([0, -5, 0], [np.pi / 2, 0, 0])
bproc.camera.add_camera_pose(cam_pose)

bproc.renderer.set_denoiser(None)  <<<<<<<<<< add this here

# Render the scene
data = bproc.renderer.render()

# Write the rendering into an hdf5 file
bproc.writer.write_hdf5("output/", data)
themasterlink commented 2 years ago

Hey,

If I test that and set the sample size really low:

bproc.renderer.set_max_amount_of_samples(2)

Then the image is quite noisy, I can't reproduce that there is any noise?

0_colors

Best, Max

themasterlink commented 2 years ago

I assume this has been resolved.