static public Quaternion GetQuaternion(TRSParser parser) { Quaternion u_q = Quaternion.identity; foreach (TRSParser.Sentences sts in parser) { if (0 == sts.Count) { continue; } switch (sts.kind) { case TRSParser.Sentences.eKind.Quaternion: { ///1. //u_q.eulerAngles = sts[0].xyz; ///2. IvQuat iv_q = new IvQuat(); Vector3 v3Rad = sts [0].xyz * Mathf.Deg2Rad; iv_q.Set(v3Rad.z, v3Rad.y, v3Rad.x); u_q.w = iv_q.w; u_q.x = iv_q.x; u_q.y = iv_q.y; u_q.z = iv_q.z; } break; } } return(u_q); }
static public Matrix4x4 ParsingMatrix(TRSParser parser, string order) { parser.Parsing(order); Matrix4x4 trs = Matrix4x4.identity; foreach (TRSParser.Sentences sts in parser) { if (0 == sts.Count) { continue; } switch (sts.kind) { case TRSParser.Sentences.eKind.Translate: { trs = trs * TRSHelper.GetTranslate(sts [0].xyz); } break; case TRSParser.Sentences.eKind.Rotate: { if (TRSParser.Command.eKind.X == sts [0].kind) { trs = trs * TRSHelper.GetRotateX(sts [0].degree); } if (TRSParser.Command.eKind.Y == sts [0].kind) { trs = trs * TRSHelper.GetRotateY(sts [0].degree); } if (TRSParser.Command.eKind.Z == sts [0].kind) { trs = trs * TRSHelper.GetRotateZ(sts [0].degree); } } break; case TRSParser.Sentences.eKind.Quaternion: { IvQuat q = new IvQuat(); Vector3 v3Rad = sts [0].xyz * Mathf.Deg2Rad; q.Set(v3Rad.z, v3Rad.y, v3Rad.x); Matrix4x4 m = q.GetMatrix(); trs = trs * m; //chamto test - print fixedAngles of IvQuat Vector3 angles = IvQuat.GetFixedAnglesFrom(ref m); angles *= Mathf.Rad2Deg; DebugWide.LogRed("1: IvQuat angles : " + angles + "\n"); //chamto test } break; case TRSParser.Sentences.eKind.Scale: trs = trs * TRSHelper.GetScale(sts [0].xyz); break; } } return(trs); }