我有一个3d模型,我希望在模型缩放(非均匀)时重新计算法线。 例如,我有一个3d模型,当我非均匀地缩放时,正常应该受到影响
1)图1,模型没有缩放。 2)图2,模型缩放,正常受影响。 (N是正常的)。
答案 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;
}