35

我有兴趣找到关于编写光线追踪器的书籍的建议、可以在网络上看到的简单而清晰的光线追踪实现以及关于介绍性光线追踪的在线资源。

理想情况下,该方法将是增量式和教程式的,并从基础开始解释编程技术和基础数学。

4

12 回答 12

27

凯文·萨芬 (Kevin Suffern) 的“从头开始的光线追踪”,用于入门。

Matt Pharr 和 Greg Humphreys 的“基于物理的渲染”,当您熟悉了基础知识后,可以更深入地了解它。

如果您真正了解它,那么光线追踪新闻档案是一本不错的读物。此外, ompf2.com 论坛上还有很多光线追踪爱好者。

于 2008-12-12T10:00:43.813 回答
16

好的,我自己还没有找到任何完美的答案,从最基本的开始;然而,我发现了很多简单的光线追踪器,以及大量教科书和学术参考资料的指针。

我没有尝试过这些光线追踪器,但它们看起来既有趣又简单。

http://www.barakcohen.co.il/2008/10/ray-tracing-simple-java-open-source.html

http://blogs.msdn.com/lukeh/archive/2007/04/03/a-ray-tracer-in-c-3-0.aspx

http://www.ffconsultancy.com/languages/ray_tracer/

来自 ACM Cross Roads 学生杂志

http://www.acm.org/crossroads/xrds3-4/raytracing.html

C++ 中的这个至少很短;为了速度而失去了简单

http://ompf.org/ray/sphereflake/

关于光线追踪某些方面的博士论文在这里

关于 DevMaster 的系列文章在这里

OMPF 论坛必读系列帖子可以在这里找到

听起来我需要的是“光线追踪简介”一书;-),作者的主页是这里更多与图形相关的编程。

从头开始的光线追踪也包括可下载的光线追踪器源代码。

MiniLight是一个最小的全局照明渲染器。

SmallPT是一个全局光照渲染器,采用 99 行 C++ 语言,在OpenCL中的 CPU 和 GPU 上使用单精度浮点数。

感谢其他海报的指点

于 2008-12-12T20:23:07.760 回答
5

我在大学上的高级渲染课程有我见过的最好的设计项目。有了项目帮助和讲义,您所需要的只是在网站上。

基本思想是,在光线追踪器中制造非常细微的错误非常容易,尤其是在涉及折射之类的事情时。如果您只是在空间中随机创建一堆球体,则很难验证正确性或诊断错误。

所以,有一个解析器很容易合并到你自己的代码中,还有一堆诊断场景文件。第一个文件是最容易工作的(注视原点,向下看一个轴,一个球体),如果你能正确渲染它们,你几乎可以保证有一个正常工作的光线跟踪器。

此外,解析器使用 RIB 格式,这是 Pixar 的标准场景文件格式,几乎可以从任何建模器导出。

它还探索了分布式光线跟踪和路径跟踪,可以为您提供一些非常漂亮的图像

于 2008-12-16T16:47:23.367 回答
3

几年前,有人挑战我做一个小型光线追踪器的 Delphi 端口(少于 200 行 C 代码)。

将它移植到 Delphi,也许有一天我会重新移植到 C#。

于 2008-12-16T18:14:35.250 回答
3

我发现的最好的一个是:http: //www.devmaster.net/articles/raytracing_series/part1.php 本教程的进展确实有点快,但它涵盖了光线追踪的许多方面。

于 2009-05-14T02:38:36.740 回答
3

强烈建议阅读https://www.scratchapixel.com/上的教程,他们花时间解释事物背后的物理和数学,但也提供了出色的代码示例!

在实现我自己用 Java 编写的光线追踪器时,我使用了他们的许多教程:https ://github.com/bradforj287/brads-java-raytracer

于 2017-01-09T17:47:51.710 回答
2

如上所述,您可能得到的最好的书是 Matt Pharr 的基于物理的渲染(请查看 www.pbrt.org)。详细解释了许多算法,包括光子映射等高级内容。此外,它包括一个完整的光线追踪器,因此您可以查看它。它还涵盖了数学基础知识,所以如果你不想买很多书,我绝对建议你看看这本书。

它比关于这个主题的经典书籍要好得多,因为它们往往只解释理论,而不是如何真正实现它。对于基础知识,任何数学书都可以,或者您可以尝试“实时碰撞检测”,它还解释了许多相交例程(在光线追踪中需要)。

如果您真的想从基础开始,您应该尝试“计算机图形学:原理与实践”,它已经过时了(现在有些部分真的是胡说八道),但它很好地解释了基础知识。如果您想要一本更新的书,请尝试“计算机图形学基础”,其中包含相同的内容,只是没有那么详细(应该足以让您入门)。

最后但并非最不重要的一点是,关于光线追踪的维基百科页面实际上非常好,应该可以为您提供一些起点。看看外部链接部分。

于 2008-12-12T10:31:44.343 回答
2

如果您正在寻找一本能让您从一无所有到可以生成图像的工作代码的好书,我从 Andrew Glassner 的An Introduction to Ray Tracing开始。我现在无法访问亚马逊,但这里是相关链接

巧合的是,这实际上是向我介绍面向对象设计的书和问题域。男孩,那是很久以前的事了......

从那里开始,我建议继续阅读 Pete Shirley 的书,正如Wikipedia 参考书目所暗示的那样。实际上,一个更好的建议是参加他的光线追踪课程。它对我有用!

于 2008-12-16T16:59:56.900 回答
1

这个用户有一些关于光线追踪的有趣教程,我相信这些教程使用 C#:

http://www.codeproject.com/script/Articles/MemberArticles.aspx?amid=3589667

我相信会有一些更好的教程,但这可能会很有趣。

于 2008-12-12T07:50:46.663 回答
0

你见过povray吗?恕我直言,这是了解光线追踪的一个很好的起点(http://www.povray.org/

于 2008-12-12T09:22:59.067 回答
0

这是一个可能有助于理解和可视化光线跟踪的一般概念的工具:光线跟踪模拟器

这是我为我教授的图形课程构建的模拟器。它不是将 3D 场景渲染为 2D 图像,而是将 2D 场景渲染为 1D 图像,这样可以一次将整个算法可视化,让您可以实时修改场景的参数。

于 2012-03-20T02:32:32.420 回答
0

在一个周末进行光线追踪

是从初级到高级技术的三本书系列。这是一个带有大量图表和解释的光线追踪器(用 C 语言实现)教程。

https://raytracing.github.io/

于 2021-04-26T13:11:19.187 回答