快速Phong着色

时间:2013-11-10 14:37:23

标签: c# graphics 3d

所以我正在尝试编写一个简单的3d应用程序(仅供研究使用)。

我想用Phong做阴影。所以我正在阅读this article并看到

  

由于这可能很慢,如果您不介意一点自由的损失,有各种方法可以加快速度。如果您假设光源与摄像机位于同一位置,则可以完全忽略V和H矢量。取而代之的是法线向量的X和Y分量,乘以128并加127(假设法线向量的大小为1)。

好吧,我可以做到,但是现在,我该怎么做XY?我有三角形数组,每个都计算正常。我正在计算此XY,但我该怎么做?此代码有效,但不正确,因为在这种情况下,当我假设它在相机点时,光源在0,0,0

此处的代码无效:

    public override void Draw(Graphics graphics, VisualizableShape shape)
    {
        if (!shape.IsVisible)
            return;
        base.Draw(graphics, shape); // draw edge
        int x = (int) (shape.Normal.X*128 + 127);
        int y = (int) (shape.Normal.Y*128 + 127);
        int z = x + y;
        var color = Color.FromArgb(255, (Pen.Color.R*z)/511, ((Pen.Color.G*z)/511), (Pen.Color.B*z)/511);
        graphics.FillPolygon(new SolidBrush(color), shape.Points.CastToPointF());
    }

在这种情况下,我该怎么办...

0 个答案:

没有答案