private static Matrix ConvertFrame(KsAnimKeyframe ks) { var rotation = ks.Rotation.ToQuaternion(); var translation = ks.Transition.ToVector3(); var scale = ks.Scale.ToVector3(); return(Matrix.Scaling(scale) * Matrix.RotationQuaternion(rotation) * Matrix.Translation(translation)); }
private static KsAnimKeyframe[] ConvertFramesV2(Matrix[] matrices, int?fillLength) { var v = new KsAnimKeyframe[fillLength ?? matrices.Length]; var l = Matrix.Identity.ToKeyFrame(); var i = 0; for (; i < matrices.Length; i++) { v[i] = l = matrices[i].ToKeyFrame(); } for (; i < v.Length; i++) { v[i] = l; } return(v); }
private static bool IsFrameSame(KsAnimKeyframe a, KsAnimKeyframe b) { return(IsFrameSame(a.Transition, b.Transition) && IsFrameSame(a.Rotation, b.Rotation) && IsFrameSame(a.Scale, b.Scale)); }