【发布时间】:2012-10-04 14:14:48
【问题描述】:
我过去写过两个传统的光线追踪器,但现在我想编写一个反向光线追踪器,它可以追踪从光源到眼点的光子。在过去几天阅读有关此主题的文章后,我知道我不应该尝试,但无论如何我还是想这样做。我现在面临的问题是如何计算我试图生成的图像中每个像素的值。
在普通光线追踪中,我将来自视点的光线通过图像平面中的一个像素射入场景中,在光线树的这个分支被追踪之后,我最终得到一个分配给该像素的颜色值。我想不出办法来扭转这个过程。如果我测试每条光线是否只与图像平面相交,那么我会得到一个 180 度的视野和一个焦点就在图像平面上(一团模糊)。所以我必须测试每条光线是否与图像平面和眼点相交。但由于眼点只是一个非常小的点,光线击中它的机会应该(几乎)为零,这将导致根本没有图像。
所以我的问题是:如何通过追踪来自光源的光子来计算要渲染的图像的像素值?
提前致谢,
一月
【问题讨论】:
-
您应该知道“光子追踪”不是“光线追踪”的同义词。在计算机图形学领域,“光子追踪”是指一种特定的技术,它将光线命中存储在 3-D 数据库中,与常规光线追踪相比,它用于提高统计收敛性。
-
@comingstorm:我知道光子追踪不是光线追踪,但是有很多不同或相同事物的名称,我可能只是用错了名称。我的意思是:在没有花哨的优化的情况下跟踪从光源到相机/视点的单个光子。
-
这个术语有点混乱:它要么被称为“反向光线追踪”(因为它与传统光线追踪的方向相反),要么被称为“正向光线追踪”(因为它追踪的方向相同)光的方向)。
标签: algorithm 3d raytracing