Gaussian material synthesis




  • Paper topic: Rendering
  • Software type: Code
  • Able to run a replicability test: True
  • Replicability score: 2
  • Software language: Python
  • License: MIT
  • Build mechanism: Not applicable (python, Matlab..)
  • Dependencies: keras / tensorflow / blender / pillow / GPy / sklearn / climin
  • Documentation score {0,1,2}: 1
  • Reviewer: Nicolas Bonneel <>
  • Time spent for the test (build->first run, timeout at 100min): 100min

Source code information


There are minor bugs that need to be fixed, that include mixes of tab and space in the Python code (l.70 and 406 of, the syntax `i+1`.zfill(4) was deemed incorrect by my Python 3.6.8 (l.512, 674 and 690 of ; replaced by str(i+1).zfill(4)). Error as well on line 20 : from sklearn.gaussian_process import GaussianProcess ; it seems sklearn has evolved and doesn't have GaussianProcess (now separated as classifier or regressor). This line can be commented out.
The main issue for making it run was the lack of documentation both for installing and for running the code, appart from a short readme. In practice :
GPy is a Gaussian Process library that needs to be installed with pip (I was looking for a in the source folder!), sklearn needs to be installed, as well as climin, keras and tensorflow. Regarding tensorflow, it needs to be sufficiently recent to have tf_utils (1.14.0 worked, but not my older install).
Also, Pillow needs to be installed with pip. However, the trick is that it needs to be installed *with the Python provided with Blender* and not your usual Python install !
Ultimately, I could run and (which both produce images) but I could not get the Python script within material-loader.blend to run : this script merely erased all .png images of the directory (included reference.png and resolution.png needed to run and, and doesn't seem to produce anything. The code within this script is obscure : for instance, the file which likely should contain the output (called "output.txt") is merely erased at the begining of the code if it already exists, and then never used again later in the code for writing.
I was expecting some kind of user interface (similarly to the one shown in the paper) to navigate within the latent space of BRDFs, but I didn't see one. Since there isn't much documentation, I am not sure what I am looking at and how to use the code.

If you want to contribute with another review, please follow these instructions.

Please consider to cut/paste/edit the raw JSON data attached to this paper.