2014-03-30 74 views
0

我有两个光源,三个球体和两个三角形。球体放置在两个三角形上。 我alrady确实intersectSphere和computeColorSphere函数。 我以某种方式开始实现intersectTriangle和computeColorTriangle函数。 它应该与Sphere功能有什么不同? 以及如何在三角形平面上实现球体的阴影? http://i60.tinypic.com/a3zg2w.jpg射线追踪球体三角形阴影

+0

“它应该和球体功能有什么不同?”:相当神秘的问题。 –

回答

2

计算投射阴影如下完成:当您用光线照射表面并在其中应用光照模型时,您添加所有光源的贡献(就像您一样);但是您需要通过将来自点的二次射线投射到源头来检查光源是否没有障碍。如果您发现障碍,请忽略此来源的贡献。

非常类似地,您可以通过在反射方向(入射角=反射角)上投射次级光线并观察是否碰到另一个表面来实现反射。

+0

我生成射线到所有像素的函数:Ray generateRay(摄像机凸轮,int i,int j)..我如何创建从这些像素到光源的辅助光线? – cmnl

+0

您必须重写光线投射功能以使其更通用,并允许从任何点和任何方向进行工作,而不仅仅是从原点到像素。这只是一个稍微不同的计算射线方程的问题。 –

+0

@ user2932645完成后请更新图片;-) –