Exemplo n.º 1
0
        private static void ParseTracks(BinaryReader reader, int numTracks, odfANIMSection animSection)
        {
            for (int trackIdx = 0; trackIdx < numTracks; trackIdx++)
            {
                ObjectID id           = new ObjectID(reader.ReadBytes(4));
                byte[]   alwaysZero   = reader.ReadBytes(16);
                int      numKeyframes = reader.ReadInt32();
                odfTrack track        = new odfTrack(numKeyframes);
                track.BoneFrameId  = id;
                track.AlwaysZero16 = alwaysZero;
                for (int i = 0; i < numKeyframes; i++)
                {
                    odfKeyframe keyframe = new odfKeyframe();
                    keyframe.Index             = reader.ReadSingle();
                    keyframe.Unknown1          = reader.ReadInt32();
                    keyframe.FastTranslation   = reader.ReadVector3();
                    keyframe.Unknown2          = reader.ReadInt32();
                    keyframe.FastRotation      = reader.ReadVector3();
                    keyframe.Unknown3          = reader.ReadInt32();
                    keyframe.FastScaling       = reader.ReadVector3();
                    keyframe.Matrix            = reader.ReadMatrix();
                    keyframe.ExtraFastRotation = reader.ReadQuaternion();
                    keyframe.AlwaysZero88      = reader.ReadBytes(88);

                    track.KeyframeList.Add(keyframe);
                }

                animSection.AddChild(track);
            }
        }
Exemplo n.º 2
0
 public static void odfKeyframe(odfKeyframe keyframe)
 {
     keyframe.Unknown1     = 1;
     keyframe.Unknown2     = 1;
     keyframe.Unknown3     = 1;
     keyframe.AlwaysZero88 = new byte[88];
 }
Exemplo n.º 3
0
Arquivo: Fbx.cs Projeto: kkdevs/sb3u
            public static List <odfKeyframe> ConvertTrack(ImportedAnimationKeyframe[] iKeyframes)
            {
                List <odfKeyframe> keyframes = new List <odfKeyframe>(iKeyframes.Length);

                for (int i = 0; i < iKeyframes.Length; i++)
                {
                    ImportedAnimationKeyframe iKeyframe = iKeyframes[i];
                    if (iKeyframe == null)
                    {
                        continue;
                    }

                    odfKeyframe keyframe = new odfKeyframe();
                    keyframes.Add(keyframe);
                    odf.CreateUnknowns(keyframe);
                    keyframe.Index           = i;
                    keyframe.FastTranslation = iKeyframe.Translation;
                    // keyframe.FastRotation = FbxUtility.QuaternionToEuler(iKeyframe.Rotation); not used, always 0
                    keyframe.FastScaling       = iKeyframe.Scaling;
                    keyframe.ExtraFastRotation = iKeyframe.Rotation;
                    keyframe.Matrix            = Matrix.Scaling(iKeyframe.Scaling) * Matrix.RotationQuaternion(iKeyframe.Rotation) * Matrix.Translation(iKeyframe.Translation);
                }
                keyframes.TrimExcess();
                return(keyframes);
            }
Exemplo n.º 4
0
Arquivo: Fbx.cs Projeto: kkdevs/sb3u
            public static ImportedAnimationKeyframe[] ConvertTrack(List <odfKeyframe> keyframes)
            {
                int start = (int)keyframes[0].Index;
                int end   = (int)keyframes[keyframes.Count - 1].Index;

                ImportedAnimationKeyframe[] iKeyframes = new ImportedAnimationKeyframe[end - start + 1];
                for (int i = 0; i < keyframes.Count; i++)
                {
                    odfKeyframe keyframe = keyframes[i];
                    ImportedAnimationKeyframe iKeyframe = new ImportedAnimationKeyframe();
                    iKeyframes[(int)keyframe.Index - start] = iKeyframe;
                    iKeyframe.Scaling     = keyframe.FastScaling;
                    iKeyframe.Rotation    = keyframe.ExtraFastRotation;
                    iKeyframe.Translation = keyframe.FastTranslation;
                }

                return(iKeyframes);
            }
Exemplo n.º 5
0
 public static void CreateUnknowns(odfKeyframe keyframe)
 {
     UnknownDefaults.odfKeyframe(keyframe);
 }