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

How to recalculate a 3d normal when the model is scaled?

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

1) 图1,模型未缩放。 2)图2,模型被缩放,法线受到影响。 (N为正态)。

    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;
    }