How do people edit light fields?




  • Paper topic: Virtual Reality
  • Software type: Code
  • Able to run a replicability test: True
  • Replicability score: 2
  • Software language: C/C++
  • License: custom
  • Build mechanism: IDE Project (VS,..)
  • Dependencies: Qt / QGlViewer / glew
  • Documentation score {0,1,2}: 1
  • Reviewer: Nicolas Bonneel <>
  • Time spent for the test (build->first run, timeout at 100min): 100min

Source code information


I had numerous issues compiling and running the software in part due to outdated dependencies and to the lack of documentation.
To compile the code using a recent Qt (Qt 5.12.6, which needs to be installed and takes about 45GB!) and somewhat recent Visual Studio 2017 :
- upgrade and retarget the VS project file (almost automatic)
- change all includes that contain QtGui/QAction, QtGui/QApplication, QtGui/QButtonGroup, QtGui/QComboBox, QtGui/QDialog, QtGui/QHeaderView, QtGui/QLabel, QtGui/QPushButton in DialogQ6.h, Dialog7.h, and DialogQYear2.h, and change them to QtWidgets/QAction etc.
- change the includes QFrame, QColorDialog and QFileDialog in qframemousepos.h, interface.cpp, main.cpp, lightfield.cpp and lightfieldViewer.cpp to QtWidgets/QFrame, QtWidgets/QColorDialog and QtWidgets/QFileDialog 
- add QT_DISABLE_DEPRECATED_BEFORE to the preprocessor directives due to some deprecated functions since Qt5
- In lightfieldViewer.cpp, change all occurences of updateGL(); to update(); (changed since QGLViewer 2.7.0)
- In lightfieldViewer's constructor, parameter should be a QOpenGLWidget*, not a QGLWidget*. The call to QGLViewer(parent,shareWidget) in the constructor can be safely changed to QGLViewer(parent).
- You need to install libQGLViewer. In the config.h of QGLViewer, you may want to change #include <QOpenGLWidget> to QtWidgets/QOpenGLWidget (if you keep the search path for Qt includes unchanged, or otherwise add QtWidgets to the search path)
- update the linked libraries in the project from Qt4 to Qt5 ; add Qt5Widgets.lib
- do not use the glew32.lib provided but use a fresh glew, otherwise there are link errors
- replace all hard coded instances of D:/Users/Adrian/Desktop/LF to the path where the lightfields were downloaded in main.cpp  (170 instances, don't do it manually)
- In the downloaded lightfield dataset, rename Wanner to HCI, Kim_et_al to Disney, and Synthetic to Training. Move the TaskY2 folder within your lightfield data folder.
- You can now run the software with the experiment number as a parameter. This parameter is an integer between 1 and 41. Some experiments cannot be run due to missing files (e.g., number 41 due to missing 11_Bike6.jpg or 31 due to missing 01_Couch.jpg).
Ultimately, once everything compiles and run, I managed to see the interface. Only in debug mode did I manage to see the lightfield show up. And in both release and debug mode, the interface seemed to be frozen : I could not complete a single task. I assume this is mostly due to changes in Qt over time.

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.