35 lines
1.2 KiB
C#
35 lines
1.2 KiB
C#
using OpenCVForUnity.CoreModule;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class HandsUp : PoseBase
|
|
{
|
|
public override bool CheckPose(List<Point> points)
|
|
{
|
|
// 必须包含 "Nose", "RShoulder", "LShoulder", "RElbow", "LElbow" 点位
|
|
if (!YogaManager.Instance.ActionCheckPoints(points))
|
|
return false;
|
|
|
|
var basePoint = YogaManager.Instance.Points;
|
|
if (!YogaManager.Instance.ActionCheckPoints(basePoint))
|
|
return false;
|
|
|
|
|
|
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);
|
|
|
|
LogPrint.Warning("angleR:" + angleR + " angleL:" + angleL);
|
|
|
|
if (angleR < 10 || angleL < 10)
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
} |