3D和光线追踪的最佳选择

时间:2009-04-23 06:31:22

标签: graphics 3d raytracing

我想玩一些图形的东西。简单的动画和事物。我也喜欢光线追踪。我需要帮助找到一个可以帮助我做这些事情的图书馆。我有一些要求:

  • 必须能够做光线追踪
  • 必须是高级语言(python,.NET等)。请不要C / C ++
  • 必须有良好的文档,最好带有示例。

有没有人知道我可以用来愚弄的好图书馆?

5 个答案:

答案 0 :(得分:5)

看看blender.org - 它是一个带有python脚本功能的开源3D项目。

答案 1 :(得分:4)

首先我想到的是流行的开源P.O.V Raytracer(www.povray.org)。 POV场景完全由脚本文件定义,有些人使用Python代码轻松生成它们。

http://code.activestate.com/recipes/205451/

http://jabas-unblog.blogspot.com/2007/04/easy-procedural-graphics-python-and-pov.html

答案 2 :(得分:3)

我不知道有任何库满足您的请求(至少除非我决定发布我自己的跟踪器的代码......)。

写一个跟踪器实际上并不是那么难。我强烈建议获得Glassner的“光线追踪简介”。它以相对容易理解的术语进行实际数学运算,并且还有关于“如何编写光线跟踪器”的整个部分。

无论如何,“库”本身并没有多大用处 - 几乎每个光线跟踪器都有自己的内部库,但它们特定于跟踪器。它们通常包括:

  1. 表示3D对象的基类
  2. 每个几何图元的子类
  3. 矢量和矩阵类(3D和4D)
  4. 纹理功能和/或类
  5. 各种类型的灯光类(点光源,聚光灯等)
  6. 对于我自己的跟踪器,我实际上使用了上面#3的javax.vecmath包,但是必须根据Glassner书为#1和#2编写自己的代码。整个事情完全在2k行代码之下,并且大多数单独的类大约有40行。

答案 3 :(得分:1)

我相信很少有人使用XNA Game Studio将光线跟踪器放在一起。

使用代码的一个示例可以在以下位置看到:

  

Bespoke Software » Ray Tracing - Materials

答案 4 :(得分:1)

开源的光线追踪器是

对于实时3D(当然它将取决于语言),JMonkeyEngine(Java)不确定它是否符合您的“高级语言”要求。

您也可以考虑使用3D游戏脚本语言,例如GameCoreBlitzBasic