如何缩放模型时重新计算3d法线?

时间:2018-03-31 01:23:02

标签: c# vector 3d quaternions

我有一个3d模型,我希望在模型缩放(非均匀)时重新计算法线。 例如,我有一个3d模型,当我非均匀地缩放时,正常应该受到影响

1)图1,模型没有缩放。 2)图2,模型缩放,正常受影响。 (N是正常的)。

normals

1 个答案:

答案 0 :(得分:-1)

    public Vector ModifyNormal(Vector v)
    {
        var re = new Vector();
        re.x = v.x  * xScale; 
        re.y = v.y  * yScale; 
        re.z = v.z * zScale;
        double magnitude =Math.Sqrt(re.x * re.x + re.y * re.y + re.z * re.z);
        // normalizing
        re.x = re.x / magnitude;
        re.y = re.y / magnitude;
        re.z = re.z / magnitude;
        return re;
    }