当前位置: 代码迷 >> 综合 >> Massively Parallel Rendering of Complex Closed-Form Implicit Surfaces论文代码部分跟踪
  详细解决方案

Massively Parallel Rendering of Complex Closed-Form Implicit Surfaces论文代码部分跟踪

热度:88   发布时间:2023-12-15 23:18:32.0

《Massively Parallel Rendering of Complex Closed-Form Implicit Surfaces》是由独立研究者MATTHEW J. KEETER发表在2020年SIGGRAPH上的一篇文章。主要提出了一种利用现代GPU的大规模并行性来直接渲染复杂封闭式隐式曲面的方法。
具有以下功能特点:

  • 支持2D和3D渲染,并可以得到任意分辨率的画面;
  • 不需要高于C0的连续性,支持更加灵活的建模操作;
  • 支持构造实体几何(CSG)、形状的平滑融合等多种建模操作;
  • 支持具有数以千计的基础数学表达式的大规模模型的渲染,并能保证可以交互。
    这篇博文记录了论文代码部分部署过程中遇到问题及解决方法。
  • 运行平台:曙光云计算平台(Linux) with Tesla V100 && CUDA 10.0.130

  • 项目源码:https://github.com/mkeeter/mpr

  • 编译支持:在正式编译mpr项目之前需要保证安装好mpr项目依赖的代码库或者编译工具,并保证其版本正确

    • cmake ≥ 3.12.0
      cmake安装方法见博文:https://blog.csdn.net/qq_38327353/article/details/107528837
      Note: 编译cmake时出现了当前C++ Compiler不支持C++11的错误。一般来说gcc版本越高,能支持的c++版本越高,在此将gcc从平台初始的5.4升级到了7.5版本,但是仍报出“c++编译器不支持c++11的错误”。在安装高版本的gcc时,需要手动将系统默认的gcc和新安装的gcc-7进行软链接:
      # in /usr/local/bin directory
      sudo ln -sf g++-7 g++
      sudo ln -sf gcc-7 gcc
      ... ... ... 
      
      实际上,将相关文件的软链接全部设定完毕后,编译cmake仍提示相同的错误。在csdn技术博客上参考了一篇测试c++ 编译器是否支持c++11的文章,通过运行包含c++11特性程序的.cpp文件来验证当前环境是否支持c++11,具体测试后发现当前的gcc其实是支持c++11的,因此应该是当前平台上的系统在哪里出了问题(在其他系统并未出现过这种问题)。为此,我注释掉了CMakeList.txt文件中与c++11版本验证相关的代码,再次编译cmake,最终成功完成编译。
    • CUDA 10.0.130
      当前平台上默认安装了10.0.130版本的CUDA,但是并没有将其添加到系统路径中,请参考如下博文将CUDA添加到系统的路径中(在使用博文中的第一种方法时便成功了):
      https://blog.csdn.net/yinxian9019/article/details/106756280/
      先前在Ubuntu上成功配置了CUDA 9(当前博文要求CUDA 10),配置过程参见博文:
      https://blog.csdn.net/wshixinshouaaa/article/details/83272282
  • 编译mpr

    # Install dependencies
    sudo apt install mesa-common-dev ninja-build# Install a recent version of eigen
    wget https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz
    tar -zxvf eigen-3.3.7.tar.gz
    cd eigen-3.3.7
    mkdir build
    cd build
    cmake ..
    sudo make install# Install `mpr`
    cd
    git clone git@github.com:mkeeter/mpr
    cd mpr
    git submodule update --init --recursive
    mkdir build
    cd build
    cmake -GNinja -DBIG_SERVER=ON ..
    ninja
    

    上述codes是编译mpr的所有过程。

    • 编译过程中,在执行git clone命令时遇到了git权限的错误:

      git clone git@github.com:mkeeter/mpr
      

      git@github.com: Permission denied (publickey). Could not read from remote repository.
      原因是客户端与服务器端没有生成ssh key,或者生成的ssh key不匹配,解决方法是重新生成一次ssh key,并重新配置一次服务器,具体方法参考博文:
      https://www.jianshu.com/p/7d57ce4147d3

    • 编译过程中,在执行cmake命令时遇到的错误及解决方法总结如下:

      cmake -GNinja -DBIG_SERVER=on ..
      
      • 错误01:
        CMake Error at CMakeLists.txt: 3(project): No CMAKE_CUDA_COMPILER could be found.
        出现这个错误的原因是cmake没有识别到CUDA的路径,所以在保证CUDA安装完毕后需要配置一下CUDA的环境变量,具体方法参见上边提到的博文。

      • 错误02:
        Could not find a package confguration file provided by “Qt5Core” with any of the following names:
        Qt5CoreConfig.cmake
        Qt5Core-Config.cmake
        错误原因是没有缺少安装QT5,可以使用如下代码查看是否安装QT:
        qmake -v
        解决方法是安装QT5。曙光云平台上没有GUI,所以我们需要采用非GUI的安装方法,具体参见博文: https://blog.csdn.net/qq_39519014/article/details/105747835

      • 错误03:
        Could NOT find Boost(missing Boost_INCLUDE_DIR).a
        Boost库是一个成熟且开源的C++库,是C++标准库的后备。
        https://blog.csdn.net/simtwo/article/details/8083598
        这篇博文提供了两种方法安装boost,这里采用了第一种方法,直接采用apt-get install命令安装boost:
        # 搜索所有的boost库
        apt-cache search boost
        # 安装相应的库
        sudo apt-get install libboost-all-dev

      • 错误04:
        No package ‘guile-2.2’ found.
        No package ‘eigen3’ found.
        这里guile-2.2不安装实际对项目的成功编译没有影响。
        eigen3必须安装,上面提供了eigen3的安装方法,亲测是可以使用的。
        安装好eigen3之后即可解决这个问题。

  • 运行mpr
    在build目录下执行命令:

    ../run_benchmarks.sh
    

    运行结果中包含三列数据,分别是分辨率大小、帧时间(毫秒)、标准差。
    渲染好的图像存储到了mpr/build/目录下的几个文件夹下,不同模型对应的文件夹分别为:

    prospero
    gears_2d
    architecture
    gears_3d
    bear
    
  • 渲染结果
    Part Ⅰ分辨率-时间-标准差
    在这里插入图片描述
    在这里插入图片描述
    Part Ⅱ图像效果

    • architecture
      在这里插入图片描述
    • bear
      在这里插入图片描述
    • gears_2d
      在这里插入图片描述
    • gears_3d
      在这里插入图片描述
    • text benchmark
      在这里插入图片描述
-END-
  相关解决方案