那里有简单的免费C ++光线跟踪库吗?

时间:2011-12-18 12:28:40

标签: raytracing

我有一个与光线追踪相关的宠物项目。我需要生成光线跟踪图像,但实际的光线跟踪不是这里的重点。因此,我希望能够自由地使用库来为我做这件事。

我知道POVray,但有点害怕它有两个原因:

  • 它非常大,有数以万计的代码行和许多我甚至都没有想过的功能,所以我可能很难从代码管理渲染;
  • 它不能用visual studio 2010 express编译,这是我使用的,我讨厌项目配置。正如Melvin Udall所说的那样:“我在这里使用'讨厌'这个词,关于项目配置。”

我已经谷歌搜索了几天,除了POV之外没有找到任何合适的东西。

问题是......

我是否应该克服它并使用POVray,或者是否有简单(但不简单),较小的隐藏光线跟踪库可以免费提供,如在言论自由中那样?

4 个答案:

答案 0 :(得分:3)

如果您的目标平台是现代Intel CPU,Embree是一个不错的选择: http://software.intel.com/en-us/articles/embree-photo-realistic-ray-tracing-kernels/

答案 1 :(得分:3)

我知道这个问题有点晚了,但是几年前我刚开始进行射线追踪时遇到了这个问题,这使我陷入了疯狂的追赶中。我想向未来的读者澄清一些有关找到光线跟踪库的事情,并列出一些示例(而不是详尽的列表)。

射线跟踪库几乎分为两个使用类别。第一类是您可能期望的类别:可以将几何图形或3D文件传递到其中并创建光线跟踪图像的库。第二类是有助于射线追踪应用程序开发的库。既然,根据您的问题,您想要前者,我将列出那些。

英特尔的Ospray

这可能是最佳选择。它得到了一家积极开发它并产生一些非常精美图像的公司的支持。它遵循Apache 2.0许可证,这是一个可靠的许可证。正如您提到的POVray一样,该库的唯一缺点是,它很大。从头开始构建也有些困难,但是他们确实提供了下载。

Visionaray

这是一个非常不错的库,在非常宽松的MIT许可下,它具有许多功能。它包含了加载场景并渲染到窗口(或图像缓冲区)上所需的一切。它还支持使用CUDA从GPU进行光线跟踪。它也很轻巧。由于大多数代码都在头文件中,因此您不会链接太多无用的代码。该库的缺点是缺少一些文档。如果您不是C ++模板的忠实拥护者,您可能会发现另一个缺点是代码非常繁琐。

C-Ray

我还没有使用过这个库,但是它似乎具有可靠的功能。您必须使用JSON并将其作为外部过程与之交互,但是我想您可以说,至少它在渲染时不会阻塞您的应用程序。

libtrace

此项目在另一个答案中被提及,但是链接已经很旧了。我对其做了一些小补丁,可以找到here的工作副本。几何形状有一些限制,但是它具有一些有趣的功能。

如果只需要图像,请不要尝试使用Embree。这是一个较低级的光线跟踪库,主要用于查询快速光线与场景的交点。确实很擅长,但并不意味着其他。


链接

答案 2 :(得分:2)

Caustic Graphics基于OpenGL生成一个名为OpenRL的Ray Tracing API。它可以从他们的网站免费获得: http://caustic.com/register.php

答案 3 :(得分:1)

POVray很好。

您还可以查看以下内容: http://libtrace.sourceforge.net/