void Awake() { Target = (MotionEditor)target; Target.Refresh(); ApplyFilter(); Timestamp = Utility.GetTimestamp(); EditorApplication.update += EditorUpdate; }
void Awake() { Target = (MotionEditor)target; Target.Cleanup(); GenerateNames(); Timestamp = Utility.GetTimestamp(); EditorApplication.update += EditorUpdate; }
void Awake () { st_Manager = gameObject.GetComponent<MotionManager>(); gameObject.AddComponent<MotionEditor>(); st_Editor = gameObject.GetComponent<MotionEditor>(); rootDirectory = Application.dataPath + "/Resources"; }
public override void Identity(MotionEditor editor) { Matrix4x4 t = GetRawTransformation(editor.GetCurrentFrame(), editor.Mirror); transform.position = t.GetPosition(); transform.rotation = t.GetRotation(); transform.localScale = t.GetScale(); }
public void Draw(MotionEditor editor) { if (Visualize) { ExtractSeries(editor.GetTimeSeries(), editor.GetCurrentFrame().Timestamp, editor.Mirror).Draw(); DerivedDraw(editor); } }
public static MotionEditor GetInstance() { if (Instance == null) { Instance = GameObject.FindObjectOfType <MotionEditor>(); } return(Instance); }
public State(MotionExporter exporter, MotionEditor editor) { Timestamp = editor.GetCurrentFrame().Timestamp; Root = editor.GetCurrentFrame().GetRootTransformation(editor.Mirror); Posture = editor.GetCurrentFrame().GetBoneTransformations(editor.Mirror); Velocities = editor.GetCurrentFrame().GetBoneVelocities(editor.Mirror); Trajectory = ((TrajectoryModule)editor.GetCurrentFile().Data.GetModule(Module.TYPE.Trajectory)).GetTrajectory(editor.GetCurrentFrame(), editor.Mirror); }
void Awake() { Target = (MotionEditor)target; Target.Initialise(); Filter(); Timestamp = Utility.GetTimestamp(); EditorApplication.update += EditorUpdate; }
protected override void DerivedInspector(MotionEditor editor) { Sensor = EditorGUILayout.Popup("Sensor", Sensor, Names); Axis = (MotionData.AXIS)EditorGUILayout.EnumPopup("Axis", Axis); Resolution = EditorGUILayout.IntField("Resolution", Resolution); Size = EditorGUILayout.FloatField("Size", Size); Distance = EditorGUILayout.FloatField("Distance", Distance); Mask = InternalEditorUtility.ConcatenatedLayersMaskToLayerMask(EditorGUILayout.MaskField("Mask", InternalEditorUtility.LayerMaskToConcatenatedLayersMask(Mask), InternalEditorUtility.layers)); }
private IEnumerator ExportInputLabels() { MotionEditor editor = Editors[0]; Exporting = true; StreamWriter file = CreateFile("InputLabels"); int index = 0; for (int i = 1; i <= 12; i++) { file.WriteLine(index + " " + "TrajectoryPositionX" + i); index += 1; file.WriteLine(index + " " + "TrajectoryPositionZ" + i); index += 1; file.WriteLine(index + " " + "TrajectoryDirectionX" + i); index += 1; file.WriteLine(index + " " + "TrajectoryDirectionZ" + i); index += 1; file.WriteLine(index + " " + "TrajectoryVelocityX" + i); index += 1; file.WriteLine(index + " " + "TrajectoryVelocityZ" + i); index += 1; for (int j = 0; j < Styles.Length; j++) { file.WriteLine(index + " " + Styles[j] + i); index += 1; } } for (int i = 0; i < editor.GetCurrentFile().Data.Source.Bones.Length; i++) { if (editor.GetCurrentFile().Data.Source.Bones[i].Active) { file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "PositionX"); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "PositionY"); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "PositionZ"); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "ForwardX"); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "ForwardY"); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "ForwardZ"); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "UpX"); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "UpY"); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "UpZ"); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "VelocityX"); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "VelocityY"); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "VelocityZ"); index += 1; } } for (int k = 1; k <= 7; k++) { for (int i = 1; i <= Styles.Length; i++) { file.WriteLine(index + " " + Styles[i - 1] + "X" + k); index += 1; file.WriteLine(index + " " + Styles[i - 1] + "Y" + k); index += 1; } } yield return(new WaitForSeconds(0f)); file.Close(); Exporting = false; }
public override void Identity(MotionEditor editor) { Vector3 scale = transform.localScale; scale.x = Mathf.Abs(scale.x); scale.y = Mathf.Abs(scale.y); scale.z = Mathf.Abs(scale.z); transform.localScale = scale; }
private IEnumerator ExportOutputLabels() { MotionEditor editor = Editors[0]; if (editor == null) { Debug.Log("No editor found."); } else { Exporting = true; StreamWriter file = CreateFile("OutputLabels"); int index = 0; for (int i = 7; i <= 12; i++) { file.WriteLine(index + " " + "TrajectoryPositionX" + i); index += 1; file.WriteLine(index + " " + "TrajectoryPositionZ" + i); index += 1; file.WriteLine(index + " " + "TrajectoryDirectionX" + i); index += 1; file.WriteLine(index + " " + "TrajectoryDirectionZ" + i); index += 1; file.WriteLine(index + " " + "TrajectoryVelocityX" + i); index += 1; file.WriteLine(index + " " + "TrajectoryVelocityZ" + i); index += 1; for (int j = 0; j < Styles.Length; j++) { file.WriteLine(index + " " + Styles[j] + i); index += 1; } } for (int i = 0; i < editor.GetCurrentFile().Data.Source.Bones.Length; i++) { if (editor.GetCurrentFile().Data.Source.Bones[i].Active) { file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "PositionX" + (i + 1)); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "PositionY" + (i + 1)); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "PositionZ" + (i + 1)); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "ForwardX" + (i + 1)); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "ForwardY" + (i + 1)); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "ForwardZ" + (i + 1)); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "UpX" + (i + 1)); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "UpY" + (i + 1)); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "UpZ" + (i + 1)); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "VelocityX" + (i + 1)); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "VelocityY" + (i + 1)); index += 1; file.WriteLine(index + " " + editor.GetActor().Bones[i].GetName() + "VelocityZ" + (i + 1)); index += 1; } } file.WriteLine(index + " " + "PhaseUpdate"); index += 1; yield return(new WaitForSeconds(0f)); file.Close(); Exporting = false; } }
public override void DerivedInspector(MotionEditor editor) { RightShoulder = EditorGUILayout.Popup("Right Shoulder", RightShoulder, Data.Root.GetBoneNames()); LeftShoulder = EditorGUILayout.Popup("Left Shoulder", LeftShoulder, Data.Root.GetBoneNames()); RightUpLeg = EditorGUILayout.Popup("Right Up Leg", RightUpLeg, Data.Root.GetBoneNames()); LeftUpLeg = EditorGUILayout.Popup("Left Up Leg", LeftUpLeg, Data.Root.GetBoneNames()); Neck = EditorGUILayout.Popup("Neck", Neck, Data.Root.GetBoneNames()); Hips = EditorGUILayout.Popup("Hips", Hips, Data.Root.GetBoneNames()); ForwardAxis = (Axis)EditorGUILayout.EnumPopup("Forward Axis", ForwardAxis); }
public State(MotionEditor editor) { MotionEditor.File file = editor.GetCurrentFile(); Frame frame = editor.GetCurrentFrame(); Root = editor.GetActor().GetRoot().GetWorldMatrix(); Posture = editor.GetActor().GetPosture(); Velocities = editor.GetActor().GetVelocities(); Trajectory = ((TrajectoryModule)file.Data.GetModule(Module.TYPE.Trajectory)).GetTrajectory(frame, editor.Mirror); }
public override void Callback(MotionEditor editor) { if (Blocked) { Identity(editor); return; } Random.InitState(editor.GetCurrentSeed()); transform.localEulerAngles = Default + new Vector3(Random.Range(Min.x, Max.x), Random.Range(Min.y, Max.y), Random.Range(Min.z, Max.z)); }
protected override void DerivedInspector(MotionEditor editor) { ShowVelocities = EditorGUILayout.Toggle("Show Velocities", ShowVelocities); ShowCycle = EditorGUILayout.Toggle("Show Cycle", ShowCycle); SetMaximumVelocity(EditorGUILayout.FloatField("Maximum Velocity", MaximumVelocity)); SetVelocityThreshold(EditorGUILayout.FloatField("Velocity Threshold", VelocityThreshold)); string[] names = new string[1 + Data.Source.Bones.Length]; names[0] = "Select..."; for (int i = 0; i < names.Length - 1; i++) { names[i + 1] = Data.Source.Bones[i].Name; } int index = EditorGUILayout.Popup("Phase Detector", 0, names); if (index > 0) { ToggleVariable(index - 1); } for (int i = 0; i < Data.Source.Bones.Length; i++) { if (Variables[i]) { using (new EditorGUILayout.VerticalScope("Box")) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(Data.Source.Bones[i].Name); EditorGUILayout.LabelField(Data.Source.Bones[Data.Symmetry[i]].Name); EditorGUILayout.EndHorizontal(); } } } Utility.SetGUIColor(UltiDraw.Grey); using (new EditorGUILayout.VerticalScope("Box")) { Utility.ResetGUIColor(); if (Optimising) { if (Utility.GUIButton("Stop Optimisation", UltiDraw.LightGrey, UltiDraw.Black)) { EditorCoroutines.StopCoroutine(RegularPhaseFunction.Optimise(), this); EditorCoroutines.StopCoroutine(InversePhaseFunction.Optimise(), this); Optimising = false; } } else { if (Utility.GUIButton("Start Optimisation", UltiDraw.DarkGrey, UltiDraw.White)) { EditorCoroutines.StartCoroutine(RegularPhaseFunction.Optimise(), this); EditorCoroutines.StartCoroutine(InversePhaseFunction.Optimise(), this); Optimising = true; } } } RegularPhaseFunction.Inspector(editor); InversePhaseFunction.Inspector(editor); }
//Optional inspector fields protected override void DerivedInspector(MotionEditor editor) { Ground = InternalEditorUtility.ConcatenatedLayersMaskToLayerMask(EditorGUILayout.MaskField("Ground", InternalEditorUtility.LayerMaskToConcatenatedLayersMask(Ground), InternalEditorUtility.layers)); LeftHip = EditorGUILayout.Popup("Left Hip", LeftHip, Data.Source.GetBoneNames()); LeftAnkle = EditorGUILayout.Popup("Left Ankle", LeftAnkle, Data.Source.GetBoneNames()); RightHip = EditorGUILayout.Popup("Right Hip", RightHip, Data.Source.GetBoneNames()); RightAnkle = EditorGUILayout.Popup("Right Ankle", RightAnkle, Data.Source.GetBoneNames()); GroundProjection = (Projection)EditorGUILayout.EnumPopup("Ground Projection", GroundProjection); RootAdjustment = EditorGUILayout.Toggle("Root Adjustment", RootAdjustment); FixBending = EditorGUILayout.Toggle("Fix Bending", false); }
public override void DerivedInspector(MotionEditor editor) { ShowVelocities = EditorGUILayout.Toggle("Show Velocities", ShowVelocities); ShowPositions = EditorGUILayout.Toggle("Show Positions", ShowPositions); ShowKeys = EditorGUILayout.Toggle("Show Keys", ShowKeys); Window = EditorGUILayout.FloatField("Window Time", Window); VelocityThreshold = EditorGUILayout.FloatField("Velocity Threshold", VelocityThreshold); PositionThreshold = EditorGUILayout.FloatField("Position Threshold", PositionThreshold); if (Phases[0] == null || Phases[0].LocalPhase == null || Record != Data.Mirrored) { Phases[0] = new LocalPhaseFunction("Head", new int[2] { 4, 5 }, this); if (Data.Mirrored) { Phases[1] = new LocalPhaseFunction("Left Hand", new int[5] { 7, 8, 9, 10, 11 }, this); Phases[2] = new LocalPhaseFunction("Right Hand", new int[5] { 12, 13, 14, 15, 16 }, this); } else { Phases[1] = new LocalPhaseFunction("Left Hand", new int[5] { 12, 13, 14, 15, 16 }, this); Phases[2] = new LocalPhaseFunction("Right Hand", new int[5] { 7, 8, 9, 10, 11 }, this); } Record = Data.Mirrored; Compute(); } if (GUILayout.Button("Compute")) { Compute(); } for (int i = 0; i < Phases.Length; i++) { EditorGUILayout.BeginHorizontal(); Phases[i].Visiable = EditorGUILayout.Toggle(Phases[i].Visiable, GUILayout.Width(20.0f)); EditorGUILayout.LabelField(Phases[i].Name); EditorGUILayout.EndHorizontal(); if (Phases[i].Visiable) { Phases[i].LocalPhase.Inspector(editor); } } }
protected override void DerivedInspector(MotionEditor editor) { Size = EditorGUILayout.Vector3Field("Size", Size); Resolution = EditorGUILayout.Vector3IntField("Resolution", Resolution); Mask = InternalEditorUtility.ConcatenatedLayersMaskToLayerMask(EditorGUILayout.MaskField("Mask", InternalEditorUtility.LayerMaskToConcatenatedLayersMask(Mask), InternalEditorUtility.layers)); Color = EditorGUILayout.ColorField("Color", Color); DrawReferences = EditorGUILayout.Toggle("Draw References", DrawReferences); DrawDistribution = EditorGUILayout.Toggle("Draw Distribution", DrawDistribution); Rect.Inspector(); EditorGUILayout.LabelField("Samples: " + 0); }
public State(MotionEditor editor) { MotionEditor.File file = editor.GetCurrentFile(); Frame frame = editor.GetCurrentFrame(); Timestamp = frame.Timestamp; Root = frame.GetRootTransformation(editor.Mirror); Posture = frame.GetBoneTransformations(editor.Mirror); Velocities = frame.GetBoneVelocities(editor.Mirror); Trajectory = ((TrajectoryModule)file.Data.GetModule(Module.TYPE.Trajectory)).GetTrajectory(frame, editor.Mirror); HeightMap = ((HeightMapModule)file.Data.GetModule(Module.TYPE.HeightMap)).GetHeightMap(frame, editor.Mirror); }
protected override void DerivedInspector(MotionEditor editor) { Size = EditorGUILayout.FloatField("Size", Size); Resolution = Mathf.Clamp(EditorGUILayout.IntField("Resolution", Resolution), 1, 25); Layers = Mathf.Clamp(EditorGUILayout.IntField("Layers", Layers), 1, 25); Overlap = EditorGUILayout.Toggle("Overlap", Overlap); Mask = InternalEditorUtility.ConcatenatedLayersMaskToLayerMask(EditorGUILayout.MaskField("Mask", InternalEditorUtility.LayerMaskToConcatenatedLayersMask(Mask), InternalEditorUtility.layers)); Color = EditorGUILayout.ColorField("Color", Color); DrawReferences = EditorGUILayout.Toggle("Draw References", DrawReferences); DrawDistribution = EditorGUILayout.Toggle("Draw Distribution", DrawDistribution); EditorGUILayout.LabelField("Samples: " + Samples); }
protected override void DerivedInspector(MotionEditor editor) { Topology = (TOPOLOGY)EditorGUILayout.EnumPopup("Topology", Topology); RightShoulder = EditorGUILayout.Popup("Right Shoulder", RightShoulder, Data.Source.GetBoneNames()); LeftShoulder = EditorGUILayout.Popup("Left Shoulder", LeftShoulder, Data.Source.GetBoneNames()); RightHip = EditorGUILayout.Popup("Right Hip", RightHip, Data.Source.GetBoneNames()); LeftHip = EditorGUILayout.Popup("Left Hip", LeftHip, Data.Source.GetBoneNames()); Neck = EditorGUILayout.Popup("Neck", Neck, Data.Source.GetBoneNames()); Hips = EditorGUILayout.Popup("Hips", Hips, Data.Source.GetBoneNames()); ForwardAxis = (Axis)EditorGUILayout.EnumPopup("Forward Axis", ForwardAxis); Ground = InternalEditorUtility.ConcatenatedLayersMaskToLayerMask(EditorGUILayout.MaskField("Ground Mask", InternalEditorUtility.LayerMaskToConcatenatedLayersMask(Ground), InternalEditorUtility.layers)); }
public override void Callback(MotionEditor editor) { if (Blocked) { Identity(editor); return; } Random.InitState(editor.GetCurrentSeed()); transform.localPosition = DefaultPosition + Utility.UniformVector3(MinPositionNoise, MaxPositionNoise); transform.localEulerAngles = DefaultRotation + Utility.UniformVector3(MinRotationNoise, MaxRotationNoise); transform.localScale = Vector3.Scale(DefaultScale, Utility.UniformVector3(MinScaleNoise, MaxScaleNoise)); }
//Optional scene drawing function protected override void DerivedDraw(MotionEditor editor) { UltiDraw.Begin(); Transform leftAnkle = editor.GetActor().FindTransform(Data.Source.Bones[LeftAnkle].Name); Transform rightAnkle = editor.GetActor().FindTransform(Data.Source.Bones[RightAnkle].Name); UltiDraw.DrawWireCircle(leftAnkle.position, 0.08f, Color.red); UltiDraw.DrawWireCircle(rightAnkle.position, 0.08f, Color.red); UltiDraw.End(); }
private float Speed(float timestamp, bool mirrored) { float power = ContactPower(timestamp, mirrored); SmoothingWindow = SmoothingWindow == null?Data.GetTimeWindow(MotionEditor.GetInstance().PastWindow + MotionEditor.GetInstance().FutureWindow, 1f) : SmoothingWindow; SmoothingSpeeds = SmoothingSpeeds.Validate(SmoothingWindow.Length); for (int i = 0; i < SmoothingSpeeds.Length; i++) { SmoothingSpeeds[i] = Mathf.Abs(GetBallVelocity(timestamp + SmoothingWindow[i], mirrored).y); } return(SmoothingSpeeds.Gaussian(power)); }
public override void Callback(MotionEditor editor) { if (Blocked) { Identity(editor); return; } Random.InitState(editor.GetCurrentSeed()); int index = editor.GetCurrentSeed() % transform.childCount; RescaleInfo info = transform.GetChild(index).GetComponent <RescaleInfo>(); transform.localScale = info == null ? Default : Vector3.Scale(Default, Utility.UniformVector3(info.Min, info.Max)); }
public override void Callback(MotionEditor editor) { if (Blocked) { Identity(editor); return; } Matrix4x4 t = GetTransformation(editor.GetCurrentFrame(), editor.Mirror); transform.position = t.GetPosition(); transform.rotation = t.GetRotation(); transform.localScale = t.GetScale(); }
private float Height(float timestamp, bool mirrored) { float power = ContactPower(timestamp, mirrored); SmoothingWindow = SmoothingWindow == null?Data.GetTimeWindow(MotionEditor.GetInstance().PastWindow + MotionEditor.GetInstance().FutureWindow, 1f) : SmoothingWindow; SmoothingHeights = SmoothingContacts.Validate(SmoothingWindow.Length); for (int i = 0; i < SmoothingHeights.Length; i++) { SmoothingHeights[i] = GetBallPosition(timestamp + SmoothingWindow[i], mirrored).y; } return(SmoothingHeights.Gaussian(power)); }
public void LoadPreviousAsset() { int pivot = MotionEditor.FindIndex(Assets, Utility.GetAssetGUID(Target.Data)); if (pivot > 0) { Target.LoadData(Assets[Mathf.Max(pivot - 1, 0)]); // if(Target.GetAsset().GetTotalTime() < 5f) { // LoadPreviousAsset(); // } } }
public void LoadNextAsset() { int pivot = MotionEditor.FindIndex(Assets, Utility.GetAssetGUID(Target.Data)); if (pivot < Assets.Length - 1) { Target.LoadData(Assets[Mathf.Min(pivot + 1, Assets.Length - 1)]); // if(Target.GetAsset().GetTotalTime() < 5f) { // LoadNextAsset(); // } } }
protected override void DerivedDraw(MotionEditor editor) { DistanceMap sensor = GetDistanceMap(editor.GetCurrentFrame(), editor.Mirror); sensor.Draw(Color); if (DrawReferences) { sensor.DrawReferences(); } if (DrawDistribution) { sensor.DrawDistribution(Color, Rect); } }
public static void Show(MotionEditor _editor) { MotionBuilder window = (MotionBuilder)EditorWindow.GetWindow(typeof(MotionBuilder)); window.editor = _editor; }