计算机图形学:光线追踪和编程3D渲染

7
我注意到一些顶尖大学为计算机科学专业的学生开设了与计算机图形学相关的课程。可惜我的大学没有提供这样的课程,而我真的很想在接下来的几年里学习这方面的知识。
我发现某些大学的一些项目非常棒,但我主要对两件事情感兴趣:
  • 光线追踪:
    • 我希望在未来两年内编写一个光线追踪器。我需要知道什么?我还不是一个很棒的程序员(Java、C和Prolog是我目前的主要语言),但我每天都在慢慢学习。此外,我的数学背景也不是很好,所以任何关于阅读书籍或撰写这样一个程序的建议都将非常棒。我往往能够很快地掌握这些东西,所以请随时向我提供参考。
  • 编程3D渲染模型
    • 我看过一些项目,学生们开发了模型并在游戏中使用它们。我已经制作了几个使用光栅图像的2D游戏,但从未使用过3D模型。我需要学习哪些方面来编程这些模型?如果有帮助的话,我曾经熟练使用3D Studio Max和Cinema4D(尽管似乎每门课程都使用Maya),但已经有四年没碰过了。

对不起发布这样模糊而且老实说有点愚蠢的问题。这只是我想做很久的事情,也是一个对我来说开发自己时间的大型项目。

相关问题


不了解你想要实现什么,很难回答你的问题。编写“玩具总动员”渲染器和构建FPS游戏所需的技能差别很大。你最终想用这些技能做什么? - Scott Evernden
我只想了解它背后的理论,所以实际的想法都很好。我想能够编写一个小场景,类似于《玩具总动员》之类的东西就很棒。我已经接触过游戏理论,所以一个场景会很棒。 - Mike B
7个回答

8
我可以推荐 pbrt,它是一本书和一个基于物理的渲染器,被用来教授计算机科学研究生。使用的数学描述清晰易懂,而且由于采用了“文学编程”,您还可以看到相应的代码(使用C++编写)。

4

这本书"计算机图形学:原理与实践"(在计算机图形学领域被称为“Foley-VanDam”)是大多数计算机图形学课程的基础,它详细讲解了实现光线追踪器的主题。虽然它已经过时了,但据我所知,它仍然是最好的,并且基本原理保持不变。

我还推荐Eric Lengyel的三维游戏编程和计算机图形学数学。它没有那么全面,但它是对你需要进行3D编程的数学基础的精彩回顾,每章末尾都有非常有用的总结,而且写得很平易近人,不会让人感到恐惧。

此外,您可能还需要一些OpenGL或DirectX基础知识。从我的观点来看,先使用3D API开始工作,然后学习底层数学比相反更容易,但两种选择都可以。只需在SO上查找OpenGL,您应该能找到几个好的参考资料。


我对Foley-VanDamm并不是很感冒;它已经过时了,许多技术已经不再相关(它几乎没有提到固定功能着色器),而且风格非常简洁,很难将数学转化为代码。 - Crashworks
1
我同意,这本书相当简洁。但与大多数“威,计算机图形很有趣,看看我能用这些漂亮的像素做什么”的教科书相比,它提供了坚实的数学基础。但是我是一个数学极客。 - Kena
@Kena 我想要了解GPU Pro系列中的数学,因为它似乎使用了一种“不同”的数学。 - zionpi

2

2000年ICFP编程竞赛要求参赛者在三天内构建一个光线追踪器。他们为简单的光线追踪器提供了良好的规范,并且您可以获得获胜作品和其他作品的代码。有许多不同编程语言的参赛作品。这可能是您入门的好方法。


太棒了!我会非常开心地研究这些程序。谢谢你! - Mike B

1

我能给出的最简洁有用的答案是,大多数重要算法可以在Tomas Akenine-Möller、Eric Haines和Naty Hoffman的Real-Time Rendering中找到,结尾的参考文献中有必要的数学参考资料。他们的网站也有推荐阅读列表。

我在这个领域读过的最有用的数学书是Eric Lengyel的Mathematics for 3D Game Programming and Computer Graphics。你最需要的数学知识是几何(显然)和线性代数(用于处理所有矩阵)。


0

我去年上过这样的一门课程,我相信这门课程非常棒,因为它迫使学生学习计算机图形背后的数学原理,而不仅仅是让计算机执行你想要的命令。

我的教授有一个网站在这里,上面有他的讲义和问题集,你可以看一下。

我们的期末项目确实是一个光线追踪器,但一旦你了解了背后的数学原理,编写(即使是低效的)代码就变得微不足道了。


0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接