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

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

  • 支持2D和3D渲染,并可以得到任意分辨率的画面;
  • 不需要高于C0的连续性,支持更加灵活的建模操作;
  • 支持构造实体几何(CSG)、形状的平滑融合等多种建模操作;
  • 支持具有数以千计的基础数学表达式的大规模模型的渲染,并能保证可以交互。
    这篇博文记录了论文代码GUI部分部署过程中遇到问题及解决方法。
  • 运行平台:HP-Laptop(Linux)with GEFORCE GTX 960m && CUDA 10.0.130
  • 项目源码:https://github.com/mkeeter/mpr
  • 编译选项:
    • 如果是显存很大的高性能计算机,在cmake时可以附加-DBIG_SERVER=ON选项,并且需要将/mpr/CMakeLists.txt中第24行和26行注释掉,目的是为了在高性能平台上编译时也编译GUI部分;如果是显存一般的计算机,在cmake时不需要附加-DBIG_SERVER=ON选项,直接安装好所需的依赖后编译即可。如果附加了,会提示内存不足的错误,并退出。
  • 编译流程:
    • 安装Ubuntu系统
    • 安装Nvidia驱动
    • 安装CUDA 10.0并配置环境变量
    • 安装Qt-5
    • 安装cmake-3.18
    • 此外还需要安装opengl及相关工具
    • 编译mpr-gui项目

1. 安装Ubuntu系统,准备系统镜像和U盘制作工具(推荐rufus)

这里安装了win10+ubuntu双系统,在装了win和Linux双系统后,打算使用easybcd来为Linux设置启动选项,但是手误把原来的Windows启动选项给删除了,新建一个Windows启动选项后并不起作用,重启后就发现报了如下错误:

Windows failed to start. a recent hardware or software change might be the cause, etc. 

使用U启动制作了PE U盘后,在cmd中输入了bcdboot F:\Windows,就好可以正常启动Windows了(我的系统盘的盘符在PE模式下是F)。

使用U启动制作了PE U盘后,在cmd中输入了bcdboot F:\Windows,就好可以正常启动Windows了(我的系统盘的盘符在PE模式下是F)。

Unable to install GRUB in /dev/sda.
Executing 'grub-install /dev/sda' failed.
This is a fatal error.

解决办法是直接进行自定义分区,分区前删掉以前创建的与ubuntu相关的分区。

装好系统后记得换成国内的源,不然使用apt-get安装资源时下载速度很慢。

2. 安装Nvidia驱动

尝试了直接安装CUDA 10.0,因为CUDA会带有对应版本的显卡驱动,但是报出了如下错误:

The driver installation has failed due to an unknown error.

所以选择了先装显卡驱动再装CUDA,安装Nvidia显卡驱动时需要禁用nouveau并进入非窗口模式,具体步骤参加这篇博文:

https://blog.csdn.net/u014682691/article/details/80605201

安装完毕后最好更新成推荐版本的驱动:

https://blog.csdn.net/m0_38007695/article/details/103456043

测试是否安装成功,输入:

nvidia-smi

Massively Parallel Rendering of Complex Closed-Form Implicit Surfaces论文代码GUI部分跟踪_第1张图片

若显示上述面板,即表示安装成功。

实际安装时,出现的错误及解决方法如下:

- 错误01

Error:Unable to find the development tool 'cc' in your path. Please make sure that you have the package 'gcc' installed.

解决方法:安装gcc

sudo apt-get install gcc

- 错误02

Error:Unable to find the development tool 'make' in your path. Please make sure that you have the package 'make' installed.

解决方法:安装make

sudo apt-get install make

3. 安装CUDA 10.0并配置环境变量

参考这边博文安装CUDA 10.0,并记得添加环境变量:

https://www.cnblogs.com/zmbreathing/p/CUDA.html

4. 安装Qt-5

没什么好说的,直接放教程:

https://blog.csdn.net/qq_39519014/article/details/105747835

5. 安装cmake

直接放教程,推荐采用第二种方法:

https://blog.csdn.net/qq_38327353/article/details/107528837

实际操作时遇到的错误及解决方法如下:

- 错误01

Failed to find "GL/gl.h" in "/usr/include/libdrm"

原因是未安装opengl,安装opengl即可:

sudo apt-get install mesa-common-dev

- 错误02

The imported target "Qt5::Gui" references the file "/usr/lib/x86_64-linux-gnu/libGL.so"

原因是LibGL.so的链接出了问题,解决方法如下:

首先locate libGL,发现libGL.so不存在,但是存在libGL.so.1,并且包含它的路径信息:

locate libGL

然后对libGL.so进行链接:

sodo ln /usr/lib/x86-64-linux-gun/libGL.so.1 /usr/lib/x86-64-linux-gun/libGL.so

即可解决这个错误。

6. 安装mpr-gui项目所需要的其它依赖库 

  • boost库

# 使用apt-cache可以搜索相关的包,一般选择-dev的包
apt-cache search boost
sudo apt-get install libboost-all-dev
  • PNG库

sudo apt-get install libjpeg-dev
sudo apt-get install libpng-dev
sudo apt-get install libtiff-dev
  • OpenGL相关库

glfw:https://blog.csdn.net/qq_40008325/article/details/89298028

glew:

sudo apt-get install libglew-dev glew-utils

gl3w:

gl3w只包含.h头文件和.cpp文件,这里主要是imgui用到了,所以直接将编译好的.h头文件和.cpp文件放到imgui/GL/目录下即可,GL目录需要自己创建,编译好的文件如下:

https://github.com/ocornut/imgui/tree/master/examples/libs/gl3w/GL

7. 编译mpr-gui

# 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 [email protected]:mkeeter/mpr
cd mpr
git submodule update --init --recursive
mkdir build
cd build
cmake -GNinja -DBIG_SERVER=ON .. # 如果是普通计算机则取消附加-DBIG_SERVER=ON选项
ninja

最后一步执行ninja指令时可能出现的错误及解决方法如下:

Linking CXX executable gui/demo FAILED: gui/demo
...
...
/usr/bin/ld: 找不到 -lglfw collect2:error:ld returned 1 exit status.

原因是缺少glfw库,解决方法如下:

sudo apt-get install apt-file
apt-file update
apt-file search libglfw.so
# 此时会出现许多与libglfw相关的包,找到-dev安装
sudo apt-get install libglfw3-dev

实际上,这其实是一类问题的集合:Ubuntu下遇到ld: cannot find -lXX之类的问题,提示找不到相关库文件,参见:

https://www.cnblogs.com/laowangxieboke/p/12657546.html

8. 执行mpr-gui程序

在/mpr/build目录下输入:

./gui/demo

9. mpr-gui运行效果

- Shapes面板显示了渲染模型的时间、后处理和着色的时间、加载贴图的时间;

- Settings面板中可以设置渲染分辨率(256256、512512、10241024、20482048)、渲染维度(2D、3D)、渲染模式(Heightmap、Normals、SSAO、Shaded);

- Text editor面板中可以输入特定规则的文本信息,从而得到特定的模型;

- 背景是渲染后的窗口,可以使用鼠标左键拖动移动物体的位置、使用鼠标右键拖动旋转物体的方向、使用鼠标滚轮放大或缩小视图。

下面是具体的渲染效果

Massively Parallel Rendering of Complex Closed-Form Implicit Surfaces论文代码GUI部分跟踪_第2张图片

Massively Parallel Rendering of Complex Closed-Form Implicit Surfaces论文代码GUI部分跟踪_第3张图片

- END -

你可能感兴趣的:(论文跟踪,渲染,linux,经验分享)