MRTK-HandConstraintPalmUp

作者:追风剑情 发布于:2023-7-14 16:33 分类:Unity3d

跟踪手掌是否面向用户。

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;
    }
}


标签: Unity3d

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号