[
    {
        "Variant name": "main",
        "Reviewer name": "Nicolas Bonneel <nicolas.bonneel@liris.cnrs.fr>",
        "Is master variant (boolean)": true,
        "Is variant deprecated (boolean)": false,
        "Title": "Frame Fields: Anisotropic and Non-Orthogonal Cross Fields",
        "DOI": "10.1145/2601097.2601179",
        "Year": 2014,
        "ACM Keywords": [
            "Parametric curve and surface models",
            "Volumetric models"
        ],
        "Topic {Rendering, Animation and Simulation, Geometry, Images, Virtual Reality, Fabrication}": "Geometry",
        "Co-authors from academia (boolean)": true,
        "Co-authors from industry (boolean)": false,
        "ACM Open Access (boolean)": false,
        "PDF on the authors' webpage / institution (boolean)": true,
        "PDF URL": "http://vcg.isti.cnr.it/Publications/2014/PPTS14/frame-fields.pdf",
        "PDF on Arxiv or any openarchive initiatives (boolean)": false,
        "Arxiv/OAI page URL": "",
        "Project URL": "http://vcg.isti.cnr.it/Publications/2014/PPTS14/",
        "Code available (boolean)": true,
        "If code not available, pseudo-code available (boolean)": false,
        "If pseudo-code, could the paper be trivially implemented? {0..4}": "",
        "Code URL": "http://vcg.isti.cnr.it/Publications/2014/PPTS14/source-code.zip",
        "Code URL2": "https://github.com/libigl",
        "MD5 sum (for archives)": "D2C432F2CE65F7475F7E25E460A853B8",
        "git/hg/svn commit hash or revision number": "",
        "MD5 sum (for archives) URL2": "",
        "git/hg/svn commit hash or revision number URL2": "",
        "Software Heritage permalink": "",
        "Software type {Code, Binary, Partial Code}": "Code",
        "Code License (if any)": "unspecified",
        "Are the code authors explicit? (boolean)": false,
        "Build/Configure mechanism": "None",
        "Dependencies": "libigl / comiso / eigen / glad / glfw /",
        "Does the software require paywall/proprietary software/material (boolean)?": false,
        "Does the code need data (not examples) (boolean)": false,
        "Nature of the data (pretrained model, LUT...)": "",
        "License of the data": "",
        "Able to perform a replicability test (boolean)": true,
        "If not able to perform a test, was it due to missing hardware/software? (boolean)": false,
        "Documentation score {0=NA,1,2,3}": 1,
        "Dependencies score {0=NA, 1,2,3,4,5}": 2,
        "Build/configure score {0=NA, 1,2,3,4,5}": 2,
        "Fixing bugs score (if any) {0=NA, 1,2,3,4,5}": 2,
        "Replicate paper results score {0=NA, 1,2,3,4,5}": 3,
        "Adaptability score to other contexts {0=NA, 1,2,3,4,5}": 3,
        "Time spent for the test (code download to first successful run, [0,10], 10min slots, 100min max)": 10,
        "Operating system for the test": "Windows",
        "Build instructions/comments": "The code provided on the project website consists in a single downloadable main.cpp file. It is unclear if the core implementation is in libigl (mentioned in the includes) or in the main.cpp. To make the main compile, it has to be updated since it relies on a very old libigl :\n- replace #include <igl/viewer/Viewer.h> by #include <igl/opengl/glfw/Viewer.h>\n- replace #include <igl/comiso/nrosy.h>,  <igl/comiso/miq.h> and <igl/comiso/frame_field.h> by #include <igl/copyleft/comiso/nrosy.h>,  <igl/copyleft/comiso/miq.h>, and <igl/copyleft/comiso/frame_field.h>\n- replace igl::Viewer& viewer by igl::opengl::glfw::Viewer& viewer in key_down(..)\n- replace igl::Viewer viewer; by igl::opengl::glfw::Viewer viewer; in main()\n- replace all viewer.data. by viewer.data(). (24 times)\n- replace viewer.core.show_lines by viewer.data().show_lines \n- replace viewer.core.show_texture by viewer.data().show_texture\n- replace igl::nrosy, igl::miq and igl::frame_field  by igl::copyleft::comiso::nrosy, igl::copyleft::comiso::miq and igl::copyleft::comiso::frame_field\n- replace Eigen::Matrix<char,Eigen::Dynamic,Eigen::Dynamic> texture_R, texture_G, texture_B; by Eigen::Matrix<unsigned char,Eigen::Dynamic,Eigen::Dynamic> texture_R, texture_G, texture_B; (otherwise you get an YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY error in Eigen) ; you similarly need to change the parameters of line_texture by replacing char with unsigned char.\n- add #include <igl/local_basis.h> and #include <igl/rotate_vectors.h>\n- *** IGL bug *** : in igl/grad.cpp, in lines 226 and 228, grad_tri and grad_tet should be replaced by igl::grad_tri and igl::grad_tet since they are outside of the namespace.\nSince no CMakeList is given, you need to add the following preprocessor directives (tested on Visual Studio 2017) :\n- EIGEN_NO_DEPRECATED_WARNING; since Eigen::DynamicSparseMatrix is deprecated (and might just not work in the near future)\n- _CRT_SECURE_NO_WARNINGS; _SCL_SECURE_NO_DEPRECATE ; IGL_STATIC_LIBRARY (to prevent linking issues with Comiso), _USE_MATH_DEFINES\n- the blas shipped with Eigen should be compiled and linked to the project (it compiles smoothly with the provided CMakeList).\n- my list of linked libraries looks like: igl_opengl_glfw.lib;igl_opengl.lib;igl.lib;comiso.lib;igl_comiso.lib;eigen_blas_static.lib;glad.lib;glfw3.lib\n- I had to compile it in Multithread (MT), not the default Multithread DLL, due to the way igl is compiled by default (it seems).\nUltimately, I managed to run the provided example. The data is shipped with the IGL tutorial data. This is the only object provided with constraints stored as a dmat file (how can I generate one ?). All the figure results are provided in a separate archive, but without the constraint file, I cannot test whether it works.\nI also couldn't get the cross frame to render like in the paper : part of the shape show cross frames over a red mesh (by pressing '1'), but part of the shape remains white with no frames. This might be due to the char -> unsigned char bug fix (?).",
        "Misc. comments": "",
        "Software language": "C/C++"
    }
]