Health/Assets/Scripts/PoseCheck/HandsUp.cs

35 lines
1.2 KiB
C#
Raw Normal View History

2023-11-10 07:17:23 +00:00
using OpenCVForUnity.CoreModule;
2023-11-15 17:23:16 +00:00
using System;
2023-11-10 07:17:23 +00:00
using System.Collections.Generic;
2023-11-15 17:23:16 +00:00
using UnityEngine;
2023-11-10 07:17:23 +00:00
public class HandsUp : PoseBase
{
public override bool CheckPose(List<Point> points)
{
2023-11-15 17:23:16 +00:00
// 必须包含 "Nose", "RShoulder", "LShoulder", "RElbow", "LElbow" 点位
2023-11-13 02:53:34 +00:00
if (!YogaManager.Instance.ActionCheckPoints(points))
return false;
var basePoint = YogaManager.Instance.Points;
if (!YogaManager.Instance.ActionCheckPoints(basePoint))
return false;
2023-11-15 17:23:16 +00:00
var rArmVector = ("RElbow".vector(points) - "RShoulder".vector(points)).normalized;
var lArmVector = ("LElbow".vector(points) - "LShoulder".vector(points)).normalized;
var rArmBaseVector = ("RElbow".vector(basePoint) - "RShoulder".vector(basePoint)).normalized;
var lArmBaseVector = ("LElbow".vector(basePoint) - "LShoulder".vector(basePoint)).normalized;
var angleR = Vector3.Angle(rArmVector, rArmBaseVector);
var angleL = Vector3.Angle(lArmVector, lArmBaseVector);
2023-11-24 05:13:10 +00:00
LogPrint.Warning("angleR:" + angleR + " angleL:" + angleL);
2023-11-15 17:23:16 +00:00
if (angleR < 10 || angleL < 10)
return false;
return true;
2023-11-10 07:17:23 +00:00
}
}