Exemple #1
0
        public void Export(STAnimation animation, STSkeleton skeleton, string filePath)
        {
            if (skeleton == null)
            {
                return;
            }

            using (StreamWriter file = new StreamWriter(filePath)) {
                file.WriteLine("animVersion " + header.animVersion + ";");
                file.WriteLine("mayaVersion " + header.mayaVersion + ";");
                file.WriteLine("timeUnit " + header.timeUnit + ";");
                file.WriteLine("linearUnit " + header.linearUnit + ";");
                file.WriteLine("angularUnit " + header.angularUnit + ";");
                file.WriteLine("startTime " + 1 + ";");
                file.WriteLine("endTime " + header.endTime + ";");

                foreach (var group in animation.AnimGroups)
                {
                    var bone = skeleton.SearchBone(group.Name);
                    if (bone == null)
                    {
                        continue;
                    }

                    file.WriteLine("");
                }
            }
        }
Exemple #2
0
        public void Export(STAnimation animation, STSkeleton skeleton, string filePath)
        {
            if (skeleton == null)
            {
                return;
            }

            using (StreamWriter writer = new StreamWriter(new FileStream(filePath, FileMode.Create)))
            {
                writer.WriteLine("version 1");
                writer.WriteLine("nodes");
                foreach (STBone bone in skeleton.Bones)
                {
                    writer.WriteLine($" {skeleton.Bones.IndexOf(bone)} \"{bone.Name}\" {bone.ParentIndex}");
                }

                writer.WriteLine("end");
                writer.WriteLine("skeleton");

                animation.Frame = 0;
                for (int i = 0; i < animation.FrameCount; i++)
                {
                    animation.UpdateFrame(i);
                    writer.WriteLine($"time {animation.StartFrame + i}");
                    foreach (STBone bone in skeleton.Bones)
                    {
                        var controller = bone.AnimationController;
                        writer.WriteLine($" {skeleton.Bones.IndexOf(bone)}" +
                                         $"{controller.Position.X} {controller.Position.Y} {controller.Position.Z} " +
                                         $"{controller.EulerRotation.X} {controller.EulerRotation.Y} {controller.EulerRotation.Z}");
                    }
                }
                writer.WriteLine("end");
            }
        }