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(); }
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, })); }