跟踪手掌是否面向用户。
using Microsoft.MixedReality.Toolkit.Input;
using System.Collections;
using UnityEngine;
using UnityEngine.Serialization;
namespace Microsoft.MixedReality.Toolkit.Utilities.Solvers
{
/// <summary>
/// 跟踪手掌是否面向用户
/// </summary>
[AddComponentMenu("Scripts/MRTK/SDK/HandConstraintPalmUp")]
public class HandConstraintPalmUp : HandConstraint
{
[Header("Palm Up")]
[SerializeField]
[FormerlySerializedAs("facingThreshold")]
[Tooltip("手掌向上和相机向前之间的圆锥体角度(以度为单位)必须匹配。仅受IMixedRealityHand控制器支持。")]
[Range(0.0f, 90.0f)]
private float facingCameraTrackingThreshold = 80.0f;
[SerializeField]
[Tooltip("手上的手指需要拉直,而不是卷曲,以形成扁平的手形。仅受IMixedRealityHand控制器支持。")]
private bool requireFlatHand = false;
[SerializeField]
[Tooltip("手掌向上与从手掌、食指到无名指尖形成的三角形法线之间的圆锥体角度(以度为单位)必须匹配。仅受IMixedRealityHand控制器支持。")]
[Range(0.0f, 90.0f)]
private float flatHandThreshold = 45.0f;
[SerializeField]
[Tooltip("激活该选项后,解算器将跟随手部旋转,直到菜单与凝视充分对齐,此时菜单面向摄影机。")]
private bool followHandUntilFacingCamera = false;
[SerializeField]
[Tooltip("如果followHandUntilFacingCamera处于活动状态,则手向上和相机向前之间的角度(以度为单位),低于该角度时,手菜单将跟随注视")]
private float followHandCameraFacingThresholdAngle = 60f;
[SerializeField]
[Tooltip("激活该选项后,解算器将在达到手掌阈值并且用户凝视激活点后激活UI。如果眼睛注视信息不可用,则将使用头部注视。")]
private bool useGazeActivation = false;
[SerializeField]
[Tooltip("眼睛凝视光线的平面交叉点与激活变换之间的距离。使用两点之间的平方大小作为距离")]
[Range(0.0f, .2f)]
private float eyeGazeProximityThreshold = .01f;
[SerializeField]
[Tooltip("头部凝视光线的平面交点与激活变换之间的距离。使用两点之间的平方大小作为距离。如果用户无法使用眼睛凝视,则使用此选项")]
[Range(0.0f, .2f)]
private float headGazeProximityThreshold = .04f;
}
}