Example #1
0
    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();
    }
Example #2
0
    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();
    }
Example #4
0
    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();
    }
Example #5
0
        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();
                }
            }
        }
Example #6
0
    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();
         */
    }
Example #7
0
        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();
            }
        }
Example #8
0
    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();
    }
Example #9
0
 public void DrawDistribution(Color color, UltiDraw.GUIRect rect)
 {
     UltiDraw.Begin();
     UltiDraw.DrawGUIFunction(rect.GetPosition(), rect.GetSize(), Occupancies, 0f, 1f, UltiDraw.White, color);
     UltiDraw.End();
 }