Example #1
0
 public PivotBone(TrajectoryModule module, int index, string name)
 {
     TModule         = module;
     Index           = index;
     Name            = name;
     Transformations = new Matrix4x4[TModule.SampleFrame.Length];
     Velocities      = new Vector3[TModule.SampleFrame.Length];
     HotVectors      = new string[TModule.SampleFrame.Length];
     FloatHotVectors = new float[TModule.SampleFrame.Length][];
     Phases          = new float[TModule.SampleFrame.Length];
 }
    public string[] GenerateLines(MotionData data)
    {
        string[] result = new string[data.Frames.Length - 60];

        for (int i = 30; i < data.Frames.Length - 30; i++)
        {
            if (data.Modules != null)
            {
                for (int k = 0; k < data.Modules.Length; k++)
                {
                    switch (data.Modules[k].GetID())
                    {
                    case Module.ID.Velocity:
                    {
                        VelocityModule module = (VelocityModule)data.GetModule(Module.ID.Velocity);
                        module.GetTransformations(data.GetFrame(i));
                        module.GetVelocities(data.GetFrame(i), 1.0f);
                        for (int j = 0; j < data.Root.Bones.Length; j++)
                        {
                            if (module.Selected[j])
                            {
                                result[i - 30] += data.Frames[i].GetBoneTransformation(j, data.Mirrored).GetPosition().x.ToString() + " ";
                                result[i - 30] += data.Frames[i].GetBoneTransformation(j, data.Mirrored).GetPosition().y.ToString() + " ";
                                result[i - 30] += data.Frames[i].GetBoneTransformation(j, data.Mirrored).GetPosition().z.ToString() + " ";
                                result[i - 30] += data.Frames[i].GetBoneTransformation(j, data.Mirrored).GetForward().x.ToString() + " ";
                                result[i - 30] += data.Frames[i].GetBoneTransformation(j, data.Mirrored).GetForward().y.ToString() + " ";
                                result[i - 30] += data.Frames[i].GetBoneTransformation(j, data.Mirrored).GetForward().z.ToString() + " ";
                                result[i - 30] += data.Frames[i].GetBoneTransformation(j, data.Mirrored).GetUp().x.ToString() + " ";
                                result[i - 30] += data.Frames[i].GetBoneTransformation(j, data.Mirrored).GetUp().y.ToString() + " ";
                                result[i - 30] += data.Frames[i].GetBoneTransformation(j, data.Mirrored).GetUp().z.ToString() + " ";
                                result[i - 30] += module.Velocities[j].x.ToString() + " ";
                                result[i - 30] += module.Velocities[j].y.ToString() + " ";
                                result[i - 30] += module.Velocities[j].z.ToString() + " ";
                            }
                        }
                        break;
                    }

                    case Module.ID.Action:
                    {
                        ActionModule module = (ActionModule)data.GetModule(Module.ID.Action);
                        result[i - 30] += module.GetHotVector(i) + " ";

                        break;
                    }

                    case Module.ID.Phase:
                    {
                        PhaseModule module = (PhaseModule)data.GetModule(Module.ID.Phase);
                        result[i - 30] += module.Phases[1].LocalPhase.Phase[i] + " ";
                        result[i - 30] += module.Phases[2].LocalPhase.Phase[i] + " ";
                        break;
                    }

                    case Module.ID.Trajectory:
                    {
                        TrajectoryModule module = (TrajectoryModule)data.GetModule(Module.ID.Trajectory);
                        for (int j = 0; j < module.Pivots.Length; j++)
                        {
                            for (int p = 0; p < module.Pivots[j].Transformations.Length; p++)
                            {
                                result[i - 30] += module.Pivots[j].Transformations[p].GetPosition().x.ToString() + " ";
                                result[i - 30] += module.Pivots[j].Transformations[p].GetPosition().y.ToString() + " ";
                                result[i - 30] += module.Pivots[j].Transformations[p].GetPosition().z.ToString() + " ";
                                result[i - 30] += module.Pivots[j].Velocities[p].x.ToString() + " ";
                                result[i - 30] += module.Pivots[j].Velocities[p].y.ToString() + " ";
                                result[i - 30] += module.Pivots[j].Velocities[p].z.ToString() + " ";
                                result[i - 30] += module.Pivots[j].HotVectors[p] + " ";
                                result[i - 30] += module.Pivots[j].Phases[p].ToString() + " ";
                            }
                        }
                        break;
                    }
                    }
                }
            }
        }

        return(result);
    }
    public void ExportLabels(MotionData data)
    {
        Lines = new string[0];
        if (data.Modules != null)
        {
            for (int k = 0; k < data.Modules.Length; k++)
            {
                switch (data.Modules[k].GetID())
                {
                case Module.ID.Velocity:
                {
                    VelocityModule module = (VelocityModule)data.GetModule(Module.ID.Velocity);
                    for (int j = 0; j < data.Root.Bones.Length; j++)
                    {
                        if (module.Selected[j])
                        {
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + data.Root.Bones[j].Name + "PositionX");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + data.Root.Bones[j].Name + "PositionY");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + data.Root.Bones[j].Name + "PositionZ");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + data.Root.Bones[j].Name + "ForwardX");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + data.Root.Bones[j].Name + "ForwardY");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + data.Root.Bones[j].Name + "ForwardZ");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + data.Root.Bones[j].Name + "UpX");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + data.Root.Bones[j].Name + "UpY");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + data.Root.Bones[j].Name + "UpZ");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + data.Root.Bones[j].Name + "VelocityX");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + data.Root.Bones[j].Name + "VelocityY");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + data.Root.Bones[j].Name + "VelocityZ");
                        }
                    }
                    break;
                }

                case Module.ID.Action:
                {
                    ActionModule module = (ActionModule)data.GetModule(Module.ID.Action);
                    ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Action Neutral");
                    ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Action CrossArms");
                    ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Action LHOnHip");
                    ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Action RHOnHip");

                    break;
                }

                case Module.ID.Phase:
                {
                    PhaseModule module = (PhaseModule)data.GetModule(Module.ID.Phase);
                    ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Phase LeftHand");
                    ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Phase RightHand");
                    break;
                }

                case Module.ID.Trajectory:
                {
                    TrajectoryModule module = (TrajectoryModule)data.GetModule(Module.ID.Trajectory);
                    for (int j = 0; j < module.Pivots.Length; j++)
                    {
                        for (int p = 0; p < module.Pivots[j].Transformations.Length; p++)
                        {
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Pivot" + j.ToString() +
                                                module.Pivots[j].Name + "Trajectory" + p.ToString() + "PositionX");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Pivot" + j.ToString() +
                                                module.Pivots[j].Name + "Trajectory" + p.ToString() + "PositionY");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Pivot" + j.ToString() +
                                                module.Pivots[j].Name + "Trajectory" + p.ToString() + "PositionZ");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Pivot" + j.ToString() +
                                                module.Pivots[j].Name + "Trajectory" + p.ToString() + "VelocityX");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Pivot" + j.ToString() +
                                                module.Pivots[j].Name + "Trajectory" + p.ToString() + "VelocityY");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Pivot" + j.ToString() +
                                                module.Pivots[j].Name + "Trajectory" + p.ToString() + "VelocityZ");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Pivot" + j.ToString() +
                                                module.Pivots[j].Name + "Trajectory" + p.ToString() + "Action Neutral");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Pivot" + j.ToString() +
                                                module.Pivots[j].Name + "Trajectory" + p.ToString() + "Action CrossArms");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Pivot" + j.ToString() +
                                                module.Pivots[j].Name + "Trajectory" + p.ToString() + "Action LHOnHip");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Pivot" + j.ToString() +
                                                module.Pivots[j].Name + "Trajectory" + p.ToString() + "Action RHOnHip");
                            ArrayExtensions.Add(ref Lines, "[" + Lines.Length.ToString() + "] " + "Pivot" + j.ToString() +
                                                module.Pivots[j].Name + "Trajectory" + p.ToString() + "Phase");
                        }
                    }
                    break;
                }
                }
            }
        }

        string FileName = Destination + "/" + "Labels.txt";

        if (!File.Exists(FileName))
        {
            using (FileStream fs = File.Create(FileName)) { }
            Debug.Log("Create new file: " + FileName);
            File.AppendAllLines(FileName, Lines);
        }
        else
        {
            File.WriteAllLines(FileName, Lines);
        }

        Debug.Log("Export Labels Successfully!");
    }