C 三角形上的光线跟踪球体阴影

C 三角形上的光线跟踪球体阴影,c,graphics,raytracing,C,Graphics,Raytracing,我有两个光源,三个球体和两个三角形。放置在两个三角形上的球体。 我一直在做相交球和计算彩色球函数。 我不知何故开始实现intersectTriangle和computeColorTriangle函数。 它与球面函数有什么不同? 如何实现三角形平面上球体的阴影? 计算投射阴影的操作如下:当使用光线照射曲面并在曲面上应用照明模型时,添加所有光源的贡献(就像您所做的那样);但是,您需要通过从击中点向光源投射次级光线来检查光源是否没有障碍物。如果您发现了障碍,只需忽略此来源的贡献 非常类似地,您可以通过

我有两个光源,三个球体和两个三角形。放置在两个三角形上的球体。 我一直在做相交球和计算彩色球函数。 我不知何故开始实现intersectTriangle和computeColorTriangle函数。
它与球面函数有什么不同? 如何实现三角形平面上球体的阴影?

计算投射阴影的操作如下:当使用光线照射曲面并在曲面上应用照明模型时,添加所有光源的贡献(就像您所做的那样);但是,您需要通过从击中点向光源投射次级光线来检查光源是否没有障碍物。如果您发现了障碍,只需忽略此来源的贡献


非常类似地,您可以通过在反射方向(入射角=反射角)投射次光线并查看是否击中另一个曲面来实现反射。

“它与球体函数有何不同?”:这是一个相当神秘的问题。我在函数中为所有像素生成光线:光线生成器(Camera cam,int I,int j)。。如何从这些像素到光源创建二次光线?必须重写光线投射功能,使其更通用,并允许is从任何点和任何方向工作,而不仅仅是从原点到像素。这只是一个计算光线方程稍微不同的问题。