缩放模型时如何重新计算 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;
}
我有一个 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;
}