106.0 引入

本人之前尝试过在windows系统中编译pbrt-v3,但是出现了很多错误。pbrt-v3的源代码中部分Linux的函数没有用宏包好,而是直接使用,所以在windows环境下就报错了。而且,报错的这些函数和pbrt的“图形”核心并无关系,所以本人不想深入研究这些函数。所以,决定转到Linux系统。所以,也就有了前面安装Linux系统的博文:
Q105:PC双系统:Windows 7下硬盘安装Ubuntu 16.04
http://blog.csdn.net/libing_zeng/article/details/72273281

(另外,原版电子书相关博文:Physically Based Rendering, Third Edition 第三版电子书 )

所以,这篇文章记录的是在新安装的Linux系统中安装编译PBRT-V3

106.1 相关步骤

打开Linux终端。

1.安装git;

sudo apt-get install git
sudo apt-get install git-core

2.下载pbrt-v3源代码;

git clone --recursive https://github.com/mmp/pbrt-v3/

3.安装cmake;

sudo apt-get install cmake

4.安装zlib(zlib1g-dev);

sudo apt-get install zlib1g-dev

5.安装bison;

sudo apt-get install bison

6.安装flex;

sudo apt-get install flex

7.在代码文件夹(pbrt-v3)中新建一个文件夹”build”,定位到build文件夹中;

cd ~/pbrt-v3/build

8.cmake ../;

(结束时,会在build文件夹中产生一个makefile文件)

9.make -j4;

(根据前面产生的makefile文件进行编译,编译完成后在build文件夹会产生pbrt、pbrt_test等可执行文件)

10.链接可执行文件;

(以便系统能够找到这些可执行文件)
ln -s ~/pbrt-v3/build/* /usr/bin/

11.找一个场景脚本文件

先来个简单的场景文件。内容如下:

#sharp.pbrt -- a simple pbrt input file that displays a cone, sphere
#              and refletive plane
#Richard P. Sharp - CIS782 Fall 2004#first we set up the eye
LookAt 1 1 10   0 0 -1  0 1 0 #ex ey ez lx ly lz ux uy uz#the camera
Camera "perspective" "float fov" [30]#this is the filter used for antialiasing
PixelFilter "mitchell" "float xwidth" [2] "float ywidth" [2]#name the file
Film "image" "string filename" ["sharp.exr"]"integer xresolution" [400] "integer yresolution" [400]#begin describing scene
WorldBegin#light source
AttributeBeginCoordSysTransform "camera"LightSource "distant" "point from" [0 0 0] "point to"   [0 0 1]"color L"    [3 3 3]
AttributeEnd#transform the world
AttributeBeginTranslate 0 -1 0Rotate 35 0 1 0#define a sphereAttributeBeginTranslate -1 .75 -1.5Rotate -90 1 0 0Material "matte" "color Kd" [0.1 0.9 0.1]Shape "sphere" "float radius" [.75] AttributeEnd#define a coneAttributeBeginTranslate 0 0 2.5Rotate -90 1 0 0#this describes the material propertiesMaterial "matte" "color Kd" [0.9 0.1 0.1]#this is the shapeShape "cone" "float radius" [.75] "float height" [2]AttributeEnd#define a reflective ground planeAttributeBeginScale 20 20 20Material "uber" "color Kd" [0.1 0.1 0.9] "color Kr" [0.9 0.9 0.9] "color Ks" [0.1 0.1 0.1] "float roughness" [0.9] "float index" [1.34]#this is a triangle mesh, the first set of points define four xyz #coordinates, the second set defines the mesh by indexing into#those points for the triangle mesh including two trianglesShape "trianglemesh" "point P" [ -1 0 -1  1 0 -1  1 0 1  -1 0 1 ]"integer indices" [ 0 1 2 2 3 0 ]AttributeEndAttributeEnd
WorldEnd

要做的事情是:在~/pbrt/目录下新建文件,将上方“代码”粘贴保存为.pbrt格式,文件随便命名(比如:sharp.pbrt)

12.运行可执行文件;

pbrt ~/pbrt/sharp.pbrt

(执行完成后,结果图形文件保存在~/下,名为sharp.exr)

13.安装KolourPaint;

(双击之前生成的“sharp.exr”文件,系统默认是没有软件可以打开该文件的。但是,会提示安装KolourPaint。后续一直选择“继续”就可以啦,等待安装完成。赞一个Ubuntu安装软件的便利性。)

安装KolourPaint前,双击“sharp.exr”时是这样,贴图如下:

安装KolourPaint后,双击“sharp.exr”时是这样,贴图如下:

14.将“sharp.exr”转成“sharp.png”;

(在安装完KolourPaint之后,双击“sharp.exr”,则会在KolourPaint中打开sharp.exr,然后点击“文件”–“另存为”,选择png格式,保存。)

最后,贴出png格式的sharp图形:

到这里为止,Linux系统下安装编译PBRT-V3算是完成。

后文提供一些测试图形及其测试的方法。

106.2 补充官网图形

15.下载“pbrt-v3-scenes”场景脚本文件;

(不知道到哪去找实例场景脚本,下载官网提供的。pbrt-v3-scenes包好的场景文件很多,整个文件夹估计有好几个G,完整下载需要一段时间。下载结果会保存在~/中。执行下方指令前,得先安装git)
git clone git://git.pbrt.org/pbrt-v3-scenes

16.1 pbrt ~/pbrt/killeroos/killeroos-simple.pbrt

16.2 pbrt ~/pbrt/killeroos/killeroos-moving.pbrt

16.3 pbrt ~/pbrt/cloud/cloud.pbrt

106.3 补充其他PLY相关图形

http://www.cc.gatech.edu/projects/large_models/
这里可以找到一些PLY文件。
记得在学习《Ray Tracing from the Ground Up》时,windows环境下并不能直接使用这里的PLY文件,而需要将文件中的“换行符”转换到windows环境中的格式才可以使用。参考:
Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行——怎么将Unix/Mac系统下的文件转换到Windows系统下

但是,PBRT貌似可以通用解析windows、unix/mac环境下的PLY文件。这个确实比《Ray Tracing from the Ground Up》官网提供的代码考虑得周全一些。

在这里,咱测试一下dragon.ply。文件下载路径:
http://www.cc.gatech.edu/projects/large_models/dragon.html
将该文件下载、解压到~/pbrt/dragon/路径下。

使用的.pbrt是基于前面的sharp.pbrt。只是将其中的球和锥体换成dragon。重命名为dragon.pbrt,保存在~/pbrt/dragon/路径下。
dragon.pbrt内容如下:

#sharp.pbrt -- a simple pbrt input file that displays a cone, sphere
#              and refletive plane
#Richard P. Sharp - CIS782 Fall 2004#first we set up the eye
LookAt 1 1 10   0 0 -1  0 1 0 #ex ey ez lx ly lz ux uy uz#the camera
Camera "perspective" "float fov" [30]#this is the filter used for antialiasing
PixelFilter "mitchell" "float xwidth" [2] "float ywidth" [2]#name the file
Film "image" "string filename" ["sharp.exr"]"integer xresolution" [400] "integer yresolution" [400]#begin describing scene
WorldBegin#light source
AttributeBeginCoordSysTransform "camera"LightSource "distant" "point from" [0 0 0] "point to"   [0 0 1]"color L"    [3 3 3]
AttributeEnd#transform the world
AttributeBeginTranslate 0 -1 0Rotate 35 0 1 0AttributeBeginScale 15 15 15Material "matte" "color Kd" [0.1 0.9 0.1]Shape "plymesh" "string filename" "dragon.ply"
AttributeEnd#define a reflective ground planeAttributeBeginScale 20 20 20Material "uber" "color Kd" [0.1 0.1 0.9] "color Kr" [0.9 0.9 0.9] "color Ks" [0.1 0.1 0.1] "float roughness" [0.9] "float index" [1.34]#this is a triangle mesh, the first set of points define four xyz #coordinates, the second set defines the mesh by indexing into#those pointsShape "trianglemesh" "point P" [ -1 0 -1  1 0 -1  1 0 1  -1 0 1 ]"integer indices" [ 0 1 2 2 3 0 ]AttributeEndAttributeEnd
WorldEnd

这个文件和sharp.pbrt不同之处在于:


AttributeBeginScale 15 15 15Material "matte" "color Kd" [0.1 0.9 0.1]Shape "plymesh" "string filename" "dragon.ply"
AttributeEnd

PBRT-V3较之前版本的新增功能之一:直接支持PLY文件。
参考:http://www.pbrt.org/users-guide.html

接下来,运行如下指令:

pbrt ~/pbrt/dragon/dragon.pbrt 

得到:


从这个图形来看,上方的绿色的dragon距离下方“镜面”的地面貌似有点远哈。
将dragon向下平移0.8个单位。即在“Scale 15 15 15”配置指令前添加:“Translate 0 -0.8 0”。即:

AttributeBeginTranslate 0 -0.8 0Scale 15 15 15Material "matte" "color Kd" [0.1 0.9 0.1]Shape "plymesh" "string filename" "dragon.ply"
AttributeEnd

得到的图形如下:

若给dragon换种材质,配置文件对应部分改成:

    Material "subsurface" "float eta" [1.5]"string name" ["Skin1"]"float scale" [20]

得到这个图形:

这个图形貌似噪音太多了,在dragon.pbrt的开头添加如下配置:

Integrator "path" "integer maxdepth" [5]
Sampler "halton" "integer pixelsamples" [500]

(将integrator换成path,另外将单像素采样次数设置为500)
得到如下图形:

Q106:Linux系统下安装编译PBRT-V3相关推荐

  1. linux 网卡驱动编译,在linux系统下安装编译网卡驱动的方法

    安装linux操作系统后发现没有网卡驱动,表现为 system → Administration → Network下Hardware列表为空. 以下为安装编译网卡驱动的过程,本人是菜鸟,以下是我从网 ...

  2. Q106:Mac系统下安装编译PBRT-V3

    Mac和Linux比较类似,所以,"Mac系统下安装编译PBRT-V3"和"Linux系统下安装编译PBRT-V3"是非常相似的. 基于"Q106:L ...

  3. linux系统下安装pfam数据库中hmmer软件以及python3非root用户的安装

    linux系统下安装pfam数据库中hmmer软件以及python3非root用户的安装 http://hmmer.org/从该链接下载源,其中有Userguide.pdf 下载,解压缩并切换目录 之 ...

  4. linux 无线网卡 免驱动,Linux系统下安装USB无线网卡驱动方法

    Linux系统下安装USB无线网卡驱动方法 具体安装过程分了如下步骤进行:确认 usb-wifi 设施型号 , 根据确认结果选择驱动信息. 安装驱动 mt7601u , 假如已经自带跳过此步骤 配置驱 ...

  5. Linux系统下安装alsa-lib-1.1.8

    前言 本文介绍如何在Linux系统下安装最新版本的alsa音频驱动. alsa-lib 下载地址 2019年2月8日,当前alsa-lib最新版本为1.1.8. alsa-lib-1.1.8 下载地址 ...

  6. 【Debian 9(Stretch)】linux系统下安装gcc-9.3.0

    [Debian 9(Stretch)]linux系统下安装gcc-9.3.0 0 实验环境 1 下载并解压gcc-9.3.0 2 安装必要的库 2.1 安装大整数运算库gmp 2.1 安装mpfr库 ...

  7. 如何在Linux系统下安装英特尔® Arc™系列独立显卡驱动以及进行AI推理性能测试...

    点击蓝字 关注我们,让开发变得更有趣 作者 | 周兆靖 排版 | 李擎 如何在Linux系统下安装英特尔® Arc™系列 独立显卡驱动以及进行AI推理性能测试 目录 1.本文目的 2.Linux 系统 ...

  8. Linux系统下安装配置 Nginx 超详细图文教程

    Linux系统下安装配置 Nginx 详细教程介绍 一.下载 Nginx 安装包 打开Nginx官网 :http://nginx.org/en/download.html 然后我们找到一个版本,把鼠标 ...

  9. 在linux中 如果想查看连接磁盘的情况,在Linux系统下安装和使用Duc的方法

    Duc可用于检查和可视化磁盘使用情况,本文介绍在Linux系统下安装和使用Duc的方法,在Ubuntu下可以使用sudo apt-get install duc命令安装,在其他Linux发行版中可以使 ...

最新文章

  1. 码农技术炒股之路——配置管理器、日志管理器
  2. js 拖动层示例[转]
  3. Algorithm之PGM之BNet:贝叶斯网络BNet的相关论文、过程原理、关键步骤等相关配图
  4. 国产CPU群雄逐鹿谁主沉浮
  5. Linux系统编程----12(线程概念,Linux线程实现原理,栈中ebp指针和ebp指针,线程的优缺点和共享资源)
  6. BZOJ 2648 SJY摆棋子(KD-Tree)
  7. python量化交易开源框架_hikyuu: 基于C++/Python的开源量化交易研究框架
  8. MATLAB编写自己的BP神经网络程序
  9. 关于URL编码/javascript/js url 编码/url的三个js编码函数
  10. 进程间通信 IPC interprocess communication
  11. 1688店铺列表接口-(item_search_seller-搜索店铺列表接口)
  12. Rectangle矩形类
  13. SDRAM DQM的解释
  14. 百度网盘如何生成目录树结构?
  15. 【CAD二次开发】-ObjectARX-双击实体的响应 (AcDbDoubleClickEdit)
  16. hdu1728 (直撞bfs)
  17. 微信自定义菜单的emoji图标
  18. MVC5_Identity登录原理 - Claims-based认证和OWIN
  19. element-table表格分页多选
  20. 小亮在使用计算机计算208,新苏教版数学四年级下册第四单元用计算器计算测试(含答案)...

热门文章

  1. msscript 64位找不到的替代方法
  2. Mac下查看Git的安装目录
  3. [emuch.net]MatrixComputations(7-12)
  4. 【深度学习】CNN模型的可视化-1
  5. 统计图的连通块的个数的两种方法
  6. Codeforces 837 简要题解
  7. Node聊天程序实例04:chat_ui.js
  8. 通过物理模型生成Java代码
  9. 【LeetCode】49. Group Anagrams
  10. C#:const 和readonly的区别