本文整理汇总了C#中Matrix4.ExtractScale方法的典型用法代码示例。如果您正苦于以下问题:C# Matrix4.ExtractScale方法的具体用法?C# Matrix4.ExtractScale怎么用?C# Matrix4.ExtractScale使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix4
的用法示例。
在下文中一共展示了Matrix4.ExtractScale方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ApplyMatrixTransform
public static void ApplyMatrixTransform(TransformMatrix transformMat, matrix m)
{
var transform = transformMat.transform;
var values = m.Values;
var mat = new Matrix4(
(float)values[0], (float)values[1], (float)values[2], (float)values[3],
(float)values[4], (float)values[5], (float)values[6], (float)values[7],
(float)values[8], (float)values[9], (float)values[10], (float)values[11],
(float)values[12], (float)values[13], (float)values[14], (float)values[15]
);
mat.Transpose();
transformMat.matrix *= mat;
var translation = mat.ExtractTranslation();
transform.Translation += translation;
if (translation != Vector3.Zero)
transform.Flags |= (int)Transform.TransformFlags.HasTranslation;
var rotation = mat.ExtractRotation();
transform.Rotation *= rotation;
if (rotation != Quaternion.Identity)
transform.Flags |= (int)Transform.TransformFlags.HasRotation;
var scale = mat.ExtractScale();
transform.ScaleShear[0, 0] *= scale[0];
transform.ScaleShear[1, 1] *= scale[1];
transform.ScaleShear[2, 2] *= scale[2];
if (transform.ScaleShear != Matrix3.Identity)
transform.Flags |= (int)Transform.TransformFlags.HasScaleShear;
}
示例2: BillboardMatrix
/// <summary>
/// Strip away the rotation in the view matrix to make an object always face the camera
/// http://stackoverflow.com/questions/5467007/inverting-rotation-in-3d-to-make-an-object-always-face-the-camera/5487981#5487981
/// </summary>
public static Matrix4 BillboardMatrix(ref Matrix4 modelViewMat)
{
Vector3 trans = modelViewMat.ExtractTranslation();
Vector3 scale = modelViewMat.ExtractScale();
return new Matrix4 (
scale.X, 0f, 0f, 0f,
0f, scale.Y, 0f, 0f,
0f, 0f, scale.Z, 0f,
trans.X, trans.Y, trans.Z, 1f);
}