1.写在前面的话

这一篇并不是对《Ray Tracing in One Weekend》的中文翻译,因为这方面的工作很多人已经做过了,比如:Ray Tracing in One Weekend(上篇) , 【翻译】两天学会光线追踪(一)总结《Ray Tracing in One Weekend》

写这篇是因为,目前我还没看到一篇用此书中PPM(portable pixmap format,PPM)格式讲解的版本,很多都是用其他的图像库或者借助其他游戏引擎来显示结果,绕过了PPM。可能主要是因为PPM这个格式用的比较少。不过,用起来挺方便的,很简洁。关于PPM这种格式的介绍,可以通过下面链接了解。

WIKI

数字图像处理-PPM图像格式

下面就记录一下如何遵循原作,在输出至控制台的情况下,利用PPM格式来显示结果。

 

2.两个阅读障碍

阅读过这本书的人可能知道,示例代码里面都是讲最后的结果输出至控制台的,而且是以PPM格式

这样对部分人就形成了两个阅读障碍:

  • 如何将控制台的结果保存为PPM文件?
  • 如何显示PPM文件?

3.如何将控制台的结果保存为PPM文件

在不修改源代码的前提下,一个比较简单的办法是:打开一个cmd窗口,然后将目录切换到示例程序exe文件所在的目录,然后在cmd里面输入程序exe的名称+>+test.ppm,如Chapter1.exe>Chapter1.ppm。按回车键即可将控制台的输出结果保存为PPM文件。

用PPM来学习《Ray Tracing in One Weekend》之美_游戏

如上图,按回车之后,会在当前目录发现Chapter1.ppm这个文件了。

这样就在不修改源代码的前提下,将结果输出为PPM文件。

4.如何显示PPM文件

支持PPM格式的软件不是很多,不过也是有的,比如the OpenSeeIt Image Viewer

用PPM来学习《Ray Tracing in One Weekend》之美_游戏_02

偶然间发现自己电脑使用的默认图片查看器:爱奇艺万能播放器,也支持PPM。。直接双击就能打开PPM,查看结果,挺方便的。

用PPM来学习《Ray Tracing in One Weekend》之美_游戏_03

5.结尾

这样,就可以完全按照书上的代码,进行学习。

这本书早有耳闻,也看过一遍,但是没有跟着实现过。这两天打算跟着实现一遍。官方源码似乎只有一个最终的代码,没有每一个Chapter的代码。