其他分享
首页 > 其他分享> > 光线跟踪出了点问题

光线跟踪出了点问题

作者:互联网

我正在尝试使用c#(从python移植)进行简单的光线跟踪分配.
我设法使示例代码显示正确的图片,但是当我尝试使其适应我的作业时,出现了问题.

如果我知道出了什么问题,我会发布一些我认为可能有帮助的代码,但是我不知道从哪里开始.

基本上,我的作业输出如下内容:

http://i56.tinypic.com/2vcdobq.png

启用高光突出显示,以及

http://i53.tinypic.com/2e1r38o.png

关掉它.
它看起来像这样:

http://i56.tinypic.com/2m7sxlh.png

我的Phong照明公式如下:

Colour I = diffuse_colour;
Vector L = light.vector;
Vector N = normal; //FIXME!
Colour Is = diffuse_colour * light.intensity;
Colour Ia = new Colour(1,1,1) * light.ambient;
Colour Kd = specular_colour;
Colour Ka = Kd;
double Ks = sharpness ?? 0.4;
Vector H = Vector.unit(view + L);

//Phong Illumination
//I = KaIa + KdIs max(0,L.N) + KsIs (H.N)^n

I = Ka * Ia
+ Kd * Is * Math.Max(0, L.dot(N))
+ Ks * Is * Math.Pow(H.dot(N),200); //FIXME?

我从工作示例代码中复制了它,因此我知道它可以工作.

任何想法都会很棒,因为我很沮丧.

解决方法:

您具有相同算法的两种实现.您声称它们产生不同的结果.查找错误似乎很简单:同时在各自的调试器中逐步运行这两种算法.仔细观察两个程序的状态.当它们产生不同的程序状态时,就会出现您的错误.

标签:raytracing,phong,c
来源: https://codeday.me/bug/20191102/1989230.html