public void Draw(Color color, bool references = false, bool distribution = false) { if (Size == 0f) { return; } Vector3 position = Pivot.GetPosition(); Quaternion rotation = Pivot.GetRotation(); float height = GetHeight(); UltiDraw.Begin(); UltiDraw.DrawWireCylinder(position + rotation * new Vector3(0f, 0.25f * height, 0f), rotation, new Vector3(Size, 0.5f * height, Size), UltiDraw.Black); if (references) { Color reference = UltiDraw.Black.Transparent(0.05f); for (int i = 0; i < Points.Length; i++) { UltiDraw.DrawSphere(References[i], Quaternion.identity, 2f * Radius[i], reference); } } for (int i = 0; i < Points.Length; i++) { if (Occupancies[i] > 0f) { UltiDraw.DrawSphere(References[i], rotation, 2f * Radius[i], Color.Lerp(UltiDraw.None, color, Occupancies[i])); } } if (distribution) { UltiDraw.DrawGUIFunction(new Vector2(0.5f, 0.15f), new Vector2(0.8f, 0.2f), Occupancies, 0f, 1f, UltiDraw.White, UltiDraw.Black); } UltiDraw.End(); }
void Draw() { UltiDraw.Begin(); float[] values = new float[1000]; for (int i = 0; i < values.Length; i++) { values[i] = Random.Range(NoiseMin, NoiseMax); } UltiDraw.DrawGUIFunction(new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), values, YMin, YMax, UltiDraw.DarkGrey, UltiDraw.Cyan); UltiDraw.End(); }
public void DrawDistribution(Color color, UltiDraw.GUIRect rect) { float max = Distances.Max(); float[] distances = new float[Distances.Length]; for (int i = 0; i < distances.Length; i++) { distances[i] = Utility.Normalise(Distances[i], 0f, max, 1f, 0f); } UltiDraw.Begin(); UltiDraw.DrawGUIFunction(rect.GetPosition(), rect.GetSize(), distances, 0f, 1f, UltiDraw.White, color); UltiDraw.End(); }
void OnRenderObject() { Tensor t = NN.GetTensor(ID); if (t == null) { return; } T = Tensor.PointwiseAbsolute(t, T); //float minimum = float.MaxValue; //float maximum = float.MinValue; if (Operator == OPERATOR.AbsSum) { if (Axis == AXIS.X) { Values = new float[T.GetRows()]; for (int i = 0; i < T.GetRows(); i++) { Values[i] = T.RowSum(i); Minimum = Mathf.Min(Minimum, Values[i]); Maximum = Mathf.Max(Maximum, Values[i]); } } if (Axis == AXIS.Y) { Values = new float[T.GetCols()]; for (int i = 0; i < T.GetCols(); i++) { Values[i] = T.ColSum(i); Minimum = Mathf.Min(Minimum, Values[i]); Maximum = Mathf.Max(Maximum, Values[i]); } } } UltiDraw.Begin(); UltiDraw.DrawGUIRectangle( new Vector2(Rect.X, Rect.Y), new Vector2(Rect.W + 0.01f / Screen.width * Screen.height, Rect.H + 0.01f), UltiDraw.Black.Transparent(0.5f) ); if (Plotting == PLOTTING.Curve) { UltiDraw.DrawGUIFunction( new Vector2(Rect.X, Rect.Y), new Vector2(Rect.W, Rect.H), Values, 0f, Maximum, UltiDraw.White.Transparent(0.5f), UltiDraw.Black ); } if (Plotting == PLOTTING.Bars) { UltiDraw.DrawGUIBars( new Vector2(Rect.X, Rect.Y), new Vector2(Rect.W, Rect.H), Values, 0f, Maximum, 0.75f * Rect.W / Values.Length, UltiDraw.White.Transparent(0.5f), UltiDraw.Black ); } UltiDraw.End(); }
void OnRenderObject() { if (Application.isPlaying) { if (NN.Parameters == null) { return; } if (AnimationAuthoring == null) { return; } if (AnimationAuthoring.ControlPoints.Count <= 0) { return; } if (ShowAuthoring) { UltiDraw.SetDepthRendering(true); AnimationAuthoring.StyleColors = new Color[] { AnimationAuthoring.Idle, AnimationAuthoring.Move, AnimationAuthoring.Jump, AnimationAuthoring.Sit, AnimationAuthoring.Stand, AnimationAuthoring.Lie, AnimationAuthoring.Sneak, AnimationAuthoring.Eat, AnimationAuthoring.Hydrate }; if (MotionTime <= 0.0f) { MotionTime = AnimationAuthoring.GetControlPoint(AnimationAuthoring.RefTimestamp, 0).GetMotionTime(); } if (MotionTime > 0.0f) { GUIStyle style = new GUIStyle(); style.normal.textColor = UltiDraw.Red; style.fontSize = 20; Vector3 pos = AnimationAuthoring.GetLookUpPoint(AnimationAuthoring.RefTimestamp).GetPosition(); #if UNITY_EDITOR Handles.Label(new Vector3(pos.x, pos.y + 1f, pos.z), string.Format("{0:0.0}s", MotionTime), style); #endif } int countCpInspector = 0; foreach (ControlPoint cp in AnimationAuthoring.ControlPoints) { if (cp.Inspector) { countCpInspector++; } else { continue; } //AnimationAuthoring.LabelCP(cp, (countCpInspector - 1).ToString()); UltiDraw.Begin(); UltiDraw.DrawSphere(AnimationAuthoring.GetGroundPosition(cp.GetPosition(), cp.Ground), Quaternion.identity, 0.1f, UltiDraw.Red); UltiDraw.End(); } Color[] colors = AnimationAuthoring.StyleColors; for (int i = 0; i < AnimationAuthoring.LookUpPoints.Length; i++) { //draw every 4th point if ((i % (4 * AnimationAuthoring.TimeInterval) != 0) || !AnimationAuthoring.GetControlPoint(i * AnimationAuthoring.TimeDelta, +1).Inspector) { continue; } float r = 0f; float g = 0f; float b = 0f; for (int j = 0; j < AnimationAuthoring.LookUpPoints[i].GetStyle().Length; j++) { r += AnimationAuthoring.LookUpPoints[i].GetStyle()[j] * colors[j].r; g += AnimationAuthoring.LookUpPoints[i].GetStyle()[j] * colors[j].g; b += AnimationAuthoring.LookUpPoints[i].GetStyle()[j] * colors[j].b; } Color color = new Color(r, g, b, 1f); UltiDraw.Begin(); UltiDraw.DrawCube(AnimationAuthoring.GetPointPositon(i * AnimationAuthoring.TimeDelta), Quaternion.identity, 0.05f, color); UltiDraw.End(); } } if (ShowTrajectory) { UltiDraw.SetDepthRendering(false); UltiDraw.Begin(); UltiDraw.DrawLine(Trajectory.Points[RootPointIndex].GetPosition(), Trajectory.Points[RootPointIndex].GetPosition() + TargetDirection, 0.05f, 0f, UltiDraw.Red.Transparent(0.75f)); UltiDraw.DrawLine(Trajectory.Points[RootPointIndex].GetPosition(), Trajectory.Points[RootPointIndex].GetPosition() + TargetVelocity, 0.05f, 0f, UltiDraw.Green.Transparent(0.75f)); UltiDraw.End(); Trajectory.Draw(10); } if (ShowVelocities) { UltiDraw.SetDepthRendering(false); UltiDraw.Begin(); for (int i = 0; i < Actor.Bones.Length; i++) { UltiDraw.DrawArrow( Actor.Bones[i].Transform.position, Actor.Bones[i].Transform.position + Velocities[i], 0.75f, 0.0075f, 0.05f, UltiDraw.Purple.Transparent(0.5f) ); } UltiDraw.End(); } float[] a = new float[100]; for (int i = 0; i < a.Length; i++) { float x = (float)i / (float)(a.Length - 1); a[i] = SmoothStep(x, 2f, .8f); } UltiDraw.Begin(); //UltiDraw.DrawGUIFunction(new Vector2(0.5f, 0.5f), new Vector2(1f, 1f), a, 0f, 1f, Color.white, Color.black); UltiDraw.End(); if (DrawLatentSpaces) { UltiDraw.SetDepthRendering(false); UltiDraw.Begin(); float YMin = 0f; float YMax = 0f; Tensor t0 = NN.GetTensor("W0"); Tensor t1 = NN.GetTensor("W1"); Tensor t2 = NN.GetTensor("W2"); float[] arr0 = new float[t0.GetCols()]; float[] arr1 = new float[t1.GetCols()]; float[] arr2 = new float[t2.GetCols()]; for (int i = 0; i < t0.GetCols(); i++) { float x = (float)i / (float)(arr0.Length - 1); //arr[i] = SmoothStep(x, 2f, .8f); float colMean = 0f; for (int j = 0; j < t0.GetRows(); j++) { colMean += t0.GetValue(j, i); } arr0[i] = colMean; } for (int i = 0; i < t1.GetCols(); i++) { float x = (float)i / (float)(arr1.Length - 1); //arr[i] = SmoothStep(x, 2f, .8f); float colMean = 0f; for (int j = 0; j < t1.GetRows(); j++) { colMean += t1.GetValue(j, i); } arr1[i] = colMean; } for (int i = 0; i < t2.GetCols(); i++) { float x = (float)i / (float)(arr2.Length - 1); //arr[i] = SmoothStep(x, 2f, .8f); float colMean = 0f; for (int j = 0; j < t2.GetRows(); j++) { colMean += t2.GetValue(j, i); } arr2[i] = colMean; } YMin = -10f; YMax = 10f; UltiDraw.DrawGUIFunction(new Vector2(0.5f, 0.9f), new Vector2(0.4f, 0.1f), arr0, YMin, YMax, UltiDraw.LightGrey, UltiDraw.Black, 0.002f, UltiDraw.BlackGrey); YMin = -16f; YMax = 13f; UltiDraw.DrawGUIFunction(new Vector2(0.5f, 0.79f), new Vector2(0.4f, 0.1f), arr1, YMin, YMax, UltiDraw.LightGrey, UltiDraw.Black, 0.002f, UltiDraw.BlackGrey); YMin = -2f; YMax = 2f; UltiDraw.DrawGUIFunction(new Vector2(0.5f, 0.68f), new Vector2(0.4f, 0.1f), arr2, YMin, YMax, UltiDraw.LightGrey, UltiDraw.Black, 0.002f, UltiDraw.BlackGrey); UltiDraw.End(); } } }
public void Draw() { if (ShowMotion) { for (int i = 0; i < GetState().PastBoneTransformations.Count; i++) { GetActor().DrawSimple(Color.Lerp(UltiDraw.Blue, UltiDraw.Cyan, 1f - (float)(i + 1) / 6f).Transparent(0.75f), GetState().PastBoneTransformations[i]); } /* * for(int i=1; i<=5; i++) { * MotionData.Frame future = Data.GetFrame(Mathf.Clamp(GetState().Timestamp + (float)i/5f, 0f, Data.GetTotalTime())); * GetActor().DrawSimple(Color.Lerp(UltiDraw.Red, UltiDraw.Orange, (float)(i+1)/5f).Transparent(0.75f), future.GetBoneTransformations(Mirror)); * } */ } if (ShowVelocities) { UltiDraw.Begin(); for (int i = 0; i < GetActor().Bones.Length; i++) { UltiDraw.DrawArrow( GetActor().Bones[i].Transform.position, GetActor().Bones[i].Transform.position + GetState().BoneVelocities[i], 0.75f, 0.0075f, 0.05f, UltiDraw.Purple.Transparent(0.5f) ); } UltiDraw.End(); } if (ShowTrajectory) { GetState().Trajectory.Draw(); } if (ShowHeightMap) { GetState().HeightMap.Draw(); } if (ShowDepthMap) { GetState().DepthMap.Draw(); } UltiDraw.Begin(); UltiDraw.DrawGUIRectangle(Vector2.one / 2f, Vector2.one, UltiDraw.Mustard); UltiDraw.End(); if (ShowDepthImage) { UltiDraw.Begin(); Vector2 size = new Vector2(0.5f, 0.5f * Screen.width / Screen.height); for (int x = 0; x < GetState().DepthMap.GetResolution(); x++) { for (int y = 0; y < GetState().DepthMap.GetResolution(); y++) { float distance = Vector3.Distance(GetState().DepthMap.Points[GetState().DepthMap.GridToArray(x, y)], GetState().DepthMap.Pivot.GetPosition()); float intensity = 1f - distance / GetState().DepthMap.GetDistance(); //intensity = Utility.TanH(intensity); UltiDraw.DrawGUIRectangle(Vector2.one / 2f - size / 2f + new Vector2((float)x * size.x, (float)y * size.y) / (GetState().DepthMap.GetResolution() - 1), size / (GetState().DepthMap.GetResolution() - 1), Color.Lerp(Color.black, Color.white, intensity)); } } UltiDraw.End(); } //Motion Function MotionData.Frame[] frames = Data.GetFrames(Mathf.Clamp(GetState().Timestamp - 1f, 0f, Data.GetTotalTime()), Mathf.Clamp(GetState().Timestamp + 1f, 0f, Data.GetTotalTime())); float[] values = new float[frames.Length]; for (int i = 0; i < frames.Length; i++) { values[i] = frames[i].GetBoneVelocity(0, Mirror).magnitude; } Debug.Log(values[0]); UltiDraw.Begin(); UltiDraw.DrawGUIFunction(new Vector2(0.5f, 0.5f), new Vector2(1f, 1f), values, -2f, 2f, 0.0025f, UltiDraw.DarkGrey, UltiDraw.Green); UltiDraw.DrawGUILine(new Vector2(0.5f, 1f), new Vector2(0.5f, 0f), 0.0025f, UltiDraw.IndianRed); UltiDraw.End(); /* * MotionData.Frame[] frames = Data.GetFrames(Mathf.Clamp(GetState().Timestamp-1f, 0f, Data.GetTotalTime()), Mathf.Clamp(GetState().Timestamp+1f, 0f, Data.GetTotalTime())); * List<float[]> values = new List<float[]>(); * for(int i=0; i<Actor.Bones.Length; i++) { * values.Add(new float[frames.Length]); * } * for(int i=0; i<frames.Length; i++) { * for(int j=0; j<Actor.Bones.Length; j++) { * values[j][i] = frames[i].GetBoneVelocity(j, Mirror).magnitude; * } * //Vector3 motion = frames[i].GetRootMotion(Mirror); * //values[0][i] = motion.x; * //values[1][i] = motion.y / 180f; * //values[2][i] = motion.z; * } * UltiDraw.Begin(); * UltiDraw.DrawGUIFunctions(new Vector2(0.5f, 0.5f), new Vector2(1f, 1f), values, -2f, 2f, 0.0025f, UltiDraw.DarkGrey, UltiDraw.GetRainbowColors(values.Count)); * UltiDraw.DrawGUILine(new Vector2(0.5f, 1f), new Vector2(0.5f, 0f), 0.0025f, UltiDraw.Green); * UltiDraw.End(); */ //Agility Function /* * MotionData.Frame[] frames = Data.GetFrames(Mathf.Clamp(GetState().Timestamp-1f, 0f, Data.GetTotalTime()), Mathf.Clamp(GetState().Timestamp+1f, 0f, Data.GetTotalTime())); * List<float[]> values = new List<float[]>(); * for(int i=0; i<Data.Source.Bones.Length; i++) { * values.Add(new float[frames.Length]); * for(int j=0; j<frames.Length; j++) { * values[i][j] = frames[j].GetAgility(i, Mirror); * } * } * UltiDraw.Begin(); * UltiDraw.DrawGUIFunctions(new Vector2(0.5f, 0.5f), new Vector2(1f, 1f), values, -1f, 1f, 0.0025f, UltiDraw.DarkGrey, UltiDraw.GetRainbowColors(values.Count)); * UltiDraw.DrawGUILine(new Vector2(0.5f, 1f), new Vector2(0.5f, 0f), 0.0025f, UltiDraw.Green); * UltiDraw.End(); */ }
void OnRenderObject() { if (Application.isPlaying) { if (NN.Parameters == null) { return; } float[] arr2 = new float[100]; for (int i = 0; i < arr2.Length; i++) { float x = (float)i / (float)(arr2.Length - 1); arr2[i] = SmoothStep(x, 2f, .8f); } UltiDraw.Begin(); //UltiDraw.DrawGUIFunction(new Vector2(0.7f, 0.8f), new Vector2(0.1f, 0.1f), arr2, 0f, 1f, Color.white, Color.black); if (DrawNetworkSpace) { float YMin = 0f; float YMax = 0f; Tensor t = new Tensor(0, 0); if (DrawFirstLayer) { YMin = -10f; YMax = 10f; t = NN.GetTensor("W0"); } else if (DrawSecondLayer) { YMin = -16f; YMax = 13f; t = NN.GetTensor("W1"); } else if (DrawThirdLayer) { YMin = -2f; YMax = 2f; t = NN.GetTensor("W2"); } float[] arr = new float[t.GetCols()]; for (int i = 0; i < t.GetCols(); i++) { float x = (float)i / (float)(arr.Length - 1); //arr[i] = SmoothStep(x, 2f, .8f); float colMean = 0f; for (int j = 0; j < t.GetRows(); j++) { colMean += t.GetValue(j, i); } arr[i] = colMean; } Debug.Log(string.Format("MIN: {0}, MAX: {1} COLS: {2}", arr.Min(), arr.Max(), t.GetCols())); UltiDraw.DrawGUIFunction(new Vector2(0.5f, 0.5f), new Vector2(1f, 1f), arr, YMin, YMax, Color.white, Color.black); } UltiDraw.End(); if (ShowTrajectory) { UltiDraw.Begin(); UltiDraw.DrawLine(Trajectory.Points[RootPointIndex].GetPosition(), Trajectory.Points[RootPointIndex].GetPosition() + TargetDirection, 0.05f, 0f, UltiDraw.Red.Transparent(0.75f)); UltiDraw.DrawLine(Trajectory.Points[RootPointIndex].GetPosition(), Trajectory.Points[RootPointIndex].GetPosition() + TargetVelocity, 0.05f, 0f, UltiDraw.Green.Transparent(0.75f)); UltiDraw.End(); Trajectory.Draw(10); } if (ShowVelocities) { UltiDraw.Begin(); for (int i = 0; i < Actor.Bones.Length; i++) { UltiDraw.DrawArrow( Actor.Bones[i].Transform.position, Actor.Bones[i].Transform.position + Velocities[i], 0.75f, 0.0075f, 0.05f, UltiDraw.Purple.Transparent(0.5f) ); } UltiDraw.End(); } UltiDraw.Begin(); //UltiDraw.DrawGUIHorizontalBar(new Vector2(0.5f, 0.74f), new Vector2(0.25f, 0.025f), UltiDraw.DarkGrey.Transparent(0.5f), 0.0025f, UltiDraw.Black, Trajectory.Points[RootPointIndex].GetVelocity().magnitude / 4f, UltiDraw.DarkGreen); UltiDraw.End(); } }
void OnRenderObject() { if (!Application.isPlaying) { return; } if (!Setup()) { return; } M = Matrix.PointwiseAbsolute(Model.GetMatrix(ID), M); float minimum = float.MaxValue; float maximum = float.MinValue; if (Axis == AXIS.X) { Values = new float[M.GetRows()]; for (int i = 0; i < M.GetRows(); i++) { Values[i] = M.RowSum(i); minimum = Mathf.Min(minimum, Values[i]); maximum = Mathf.Max(maximum, Values[i]); } } if (Axis == AXIS.Y) { Values = new float[M.GetCols()]; for (int i = 0; i < M.GetCols(); i++) { Values[i] = M.ColSum(i); minimum = Mathf.Min(minimum, Values[i]); maximum = Mathf.Max(maximum, Values[i]); } } UltiDraw.Begin(); UltiDraw.DrawGUIRectangle( new Vector2(Rect.X, Rect.Y), new Vector2(Rect.W + 0.01f / Screen.width * Screen.height, Rect.H + 0.01f), UltiDraw.Black.Transparent(0.5f) ); if (Plotting == PLOTTING.Curve) { UltiDraw.DrawGUIFunction( new Vector2(Rect.X, Rect.Y), new Vector2(Rect.W, Rect.H), Values, 0f, maximum, UltiDraw.White.Transparent(0.5f), UltiDraw.Black ); } if (Plotting == PLOTTING.Bars) { UltiDraw.DrawGUIBars( new Vector2(Rect.X, Rect.Y), new Vector2(Rect.W, Rect.H), Values, 0f, maximum, 0.75f * Rect.W / Values.Length, UltiDraw.White.Transparent(0.5f), UltiDraw.Black ); } UltiDraw.End(); }
public void DrawDistribution(Color color, UltiDraw.GUIRect rect) { UltiDraw.Begin(); UltiDraw.DrawGUIFunction(rect.GetPosition(), rect.GetSize(), Occupancies, 0f, 1f, UltiDraw.White, color); UltiDraw.End(); }