void DrawResults(FaceDetect.Result detection, FaceMesh.Result face) { cameraView.rectTransform.GetWorldCorners(rtCorners); Vector3 min = rtCorners[0]; Vector3 max = rtCorners[2]; // Draw Face Detection { draw.color = Color.blue; Rect rect = MathTF.Lerp(min, max, detection.rect, true); draw.Rect(rect, 0.05f); foreach (Vector2 p in detection.keypoints) { draw.Point(MathTF.Lerp(min, max, new Vector3(p.x, 1f - p.y, 0)), 0.1f); } } draw.Apply(); // Draw face draw.color = Color.green; float zScale = (max.x - min.x) / 2; for (int i = 0; i < face.keypoints.Length; i++) { Vector3 p = MathTF.Lerp(min, max, face.keypoints[i]); p.z = face.keypoints[i].z * zScale; faceKeypoints[i] = p; draw.Point(p, 0.05f); } draw.Apply(); // Update Mesh FaceMeshBuilder.UpdateMesh(faceMeshFilter.sharedMesh, faceKeypoints); }
private void RenderFaceMesh() { // Update Mesh FaceMeshBuilder.UpdateMesh(m_faceMeshFilter.sharedMesh, m_faceKeypoints); }