2010-06-21 29 views
3

我是光線追蹤並希望通過某種加速結構(kd-tree,BVH,無論)加速它。我不想自己編寫代碼。我到目前爲止嘗試過的:三角交叉加速結構的簡單C/C++庫

  • 將kd-tree從pbrt中取出。有很多內部依賴關係,如果不把所有的pbrt都拉進我的代碼,我就無法成功。

  • CGAL的AABB樹。令人沮喪的是,這似乎只會返回交點。不知道點來自哪個三角形,我無法在三角形上高效地插入顏色。我很想用顏色來擴展「Point」的概念,但是如果不從頭開始編寫大量的模板代碼,這似乎是不可能的。

  • 寫我自己的。好吧,我寫了我自己的網格加速類,它可以工作,但它很討厭和低效。

因此,如果任何人都可以提出一個簡單的,我可以用這個目的,我會很感激!我需要的只是一個三角形湯和射線,找到最接近的交點並返回該三角形的索引。

回答

1

雅科Bikker寫這個系列教程:http://www.devmaster.net/articles/raytracing_series/part7.php

他們是非常有益的,他包含的代碼在結束了使用kd樹的光線追蹤。

您可能可以使用它。

+0

那麼我最終從頭開始寫自己的,但這看起來像一個很好的參考。謝謝! – Meekohi 2010-08-14 09:29:12

+0

爲了利益:你是否實現了一棵k-d樹?你的結果是什麼? – fluffels 2010-08-14 10:00:10

+1

不,它更像是一個'稍微聰明'的網格,遺漏了一些代碼,因爲我總是在網格中爲我的應用程序開始。與最佳情況下的蠻力相比,它提供了20倍左右的加速,但對網格單元的大小非常敏感。 – Meekohi 2010-08-17 13:16:39

0

G3D engine具有射線追蹤實現。不知道它有多高效。如果沒有庫的其餘部分,使用Tree實現不應該太麻煩。