Information
- Paper topic: Virtual Reality
- Software type: Code
- Able to run a replicability test: True
- Replicability score: 2
- License: custom
- Build mechanism: IDE Project (VS,..)
- Dependencies: Qt / QGlViewer / glew
- Documentation score {0,1,2}: 1
- Reviewer: Nicolas Bonneel
Source code information
Comments
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.