我正在尝试用 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?
我从工作示例代码中复制了它,所以我知道它有效。
任何想法都会很棒,因为我很难过。