void UpdateFrame(ref PoseDetect.Result pose)
    {
        if (pose.score < 0)
        {
            frame.gameObject.SetActive(false);
            return;
        }
        frame.gameObject.SetActive(true);

        var size = ((RectTransform)cameraView.transform).rect.size;
        var rt   = frame.transform as RectTransform;
        var p    = pose.rect.position;

        p.y = 1.0f - p.y; // invert Y
        rt.anchoredPosition = p * size - size * 0.5f;
        rt.sizeDelta        = pose.rect.size * size;

        // Draw keypoints
        var kpOffset = -rt.anchoredPosition + new Vector2(-rt.sizeDelta.x, rt.sizeDelta.y) * 0.5f;

        for (int i = 0; i < 4; i++)
        {
            var     child = (RectTransform)rt.GetChild(i);
            Vector2 kp    = pose.keypoints[i];
            kp.y = 1.0f - kp.y; // invert Y
            child.anchoredPosition = (kp * size - size * 0.5f) + kpOffset;
        }
    }
    void DrawFrame(ref PoseDetect.Result pose)
    {
        Vector3 min = rtCorners[0];
        Vector3 max = rtCorners[2];

        draw.color = Color.green;
        draw.Rect(MathTF.Lerp(min, max, pose.rect, true), 0.02f, min.z);

        foreach (var kp in pose.keypoints)
        {
            draw.Point(MathTF.Lerp(min, max, (Vector3)kp, true), 0.05f);
        }
        draw.Apply();
    }
Beispiel #3
0
        protected override Matrix4x4 CalcCropMatrix(ref PoseDetect.Result pose, ref TextureResizer.ResizeOptions options)
        {
            float rotation = CalcRotationDegree(pose.keypoints[0], pose.keypoints[1]);
            var   rect     = AlignmentPointsToRect(pose.keypoints[0], pose.keypoints[1]);

            return(RectTransformationCalculator.CalcMatrix(new RectTransformationCalculator.Options()
            {
                rect = rect,
                rotationDegree = rotation,
                shift = PoseShift,
                scale = PoseScale,
                cameraRotationDegree = -options.rotationDegree,
                mirrorHorizontal = options.mirrorHorizontal,
                mirrorVertiacal = options.mirrorVertical,
            }));
        }