国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity MRTK Hololens2眼動(dòng)交互

這篇具有很好參考價(jià)值的文章主要介紹了Unity MRTK Hololens2眼動(dòng)交互。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

/*
 * ==================================================================================================================
 *
 * UnityVersion : 2021.3.6f1
 * Description : 眼部交互基類
 * Author: 
 * CreateTime : 2023-10-11  09:43:20
 * Version : V1.0.0
 * 
 * ==================================================================================================================
 */

using System.Collections.Generic;
using Microsoft.MixedReality.Toolkit.Input;
using UnityEngine;

namespace MRTKExtend.EyeTracking
{
    [RequireComponent(typeof(Collider))]
    public abstract class BaseFocus : MonoBehaviour, IMixedRealityFocusHandler, IMixedRealityFocusChangedHandler
    {
        [SerializeField] [Tooltip("是否啟用焦點(diǎn)?")] private bool focusEnabled = true;

        /// <summary>
        /// 是否為啟用了焦點(diǎn)
        /// </summary>
        public virtual bool FocusEnabled
        {
            get => focusEnabled;
            set => focusEnabled = value;
        }

        /// <summary>
        /// 此對(duì)象當(dāng)前是否有焦點(diǎn)
        /// </summary>
        public virtual bool HasFocus => FocusEnabled && Focusers.Count > 0;

        /// <summary>
        /// 當(dāng)前聚焦此對(duì)象的列表
        /// </summary>
        public List<IMixedRealityPointer> Focusers { get; } = new(0);

        /// <summary>
        /// 焦點(diǎn)進(jìn)入
        /// </summary>
        public virtual void OnFocusEnter(FocusEventData eventData)
        {
        }

        /// <summary>
        /// 焦點(diǎn)退出
        /// </summary>
        public virtual void OnFocusExit(FocusEventData eventData)
        {
        }

        public virtual void OnBeforeFocusChange(FocusEventData eventData)
        {
            //如果是新的目標(biāo)對(duì)象,將指針添加到焦點(diǎn)列表。
            if (eventData.NewFocusedObject == gameObject)
            {
                eventData.Pointer.FocusTarget = this;
                Focusers.Add(eventData.Pointer);
            }
            //如果是舊的聚焦目標(biāo)對(duì)象,從列表中刪除指針。

            else if (eventData.OldFocusedObject == gameObject)
            {
                Focusers.Remove(eventData.Pointer);

                //如果沒有新的焦點(diǎn)目標(biāo),從指針中清除焦點(diǎn)目標(biāo)。

                if (eventData.NewFocusedObject == null)
                {
                    eventData.Pointer.FocusTarget = null;
                }
            }
        }

        public virtual void OnFocusChanged(FocusEventData eventData)
        {
        }
    }
}
/*
 * ==================================================================================================================
 *
 * UnityVersion : 2021.3.6f1
 * Description : 眼部交互
 * Author: 
 * CreateTime : 2023-10-11  09:21:40
 * Version : V1.0.0
 * 
 * ==================================================================================================================
 */

using System;
using Microsoft.MixedReality.Toolkit.Input;
using UnityEngine;

namespace MRTKExtend.EyeTracking
{
    public abstract class BaseEyeFocus : BaseFocus
    {
        [Tooltip("可配置的持續(xù)時(shí)間,用于在用戶查注釋目標(biāo)的時(shí)間超過此持續(xù)時(shí)間時(shí)觸發(fā)事件。")] [SerializeField] [Range(0, 20)]
        private float timeToTriggerDwellInSec = 5;

        /// <summary>
        /// 停留時(shí)間
        /// </summary>
        private DateTime _dwellTimer;

        /// <summary>
        /// 是否持續(xù)注視
        /// </summary>
        private bool _isDwelling = false;

        /// <summary>
        /// 是否注視
        /// </summary>
        private bool _hadFocus = false;

        /// <summary>
        /// 處理光標(biāo)進(jìn)入目標(biāo)時(shí)的突出顯示目標(biāo)。
        /// </summary>
        protected virtual void Update()
        {
            if (!HasFocus && _hadFocus)
            {
                OnEyeFocusStop();
                _isDwelling = false;
                _hadFocus = false;
            }
            else if (HasFocus)
            {
                if (!_hadFocus)
                {
                    OnEyeFocusStart();
                    _dwellTimer = DateTime.UtcNow;
                    _hadFocus = true;
                }
                else
                {
                    OnEyeFocusStay();

                    if (!_isDwelling && (DateTime.UtcNow - _dwellTimer).TotalSeconds > timeToTriggerDwellInSec)
                    {
                        OnEyeFocusDwell();
                        _isDwelling = true;
                    }
                }
            }
        }

        /// <inheritdoc />
        public override void OnBeforeFocusChange(FocusEventData eventData)
        {
            //如果注視新的目標(biāo)對(duì)象,將指針添加到焦點(diǎn)列表。
            if (eventData.NewFocusedObject == gameObject &&
                eventData.Pointer.InputSourceParent.SourceType == InputSourceType.Eyes)
            {
                eventData.Pointer.FocusTarget = this;
                Focusers.Add(eventData.Pointer);
            }
            //如果注視是舊的聚焦目標(biāo)對(duì)象,從列表中刪除指針。
            else if (eventData.OldFocusedObject == gameObject)
            {
                Focusers.Remove(eventData.Pointer);

                // 如果沒有新目標(biāo),從指針中清除焦點(diǎn)目標(biāo)
                if (eventData.NewFocusedObject == null)
                {
                    eventData.Pointer.FocusTarget = null;
                }
            }
        }

        /// <summary>
        ///一旦眼睛凝視射線開始與該目標(biāo)的碰撞體接觸,就會(huì)觸發(fā)。
        /// </summary>
        protected virtual void OnEyeFocusStart()
        {
        }

        /// <summary>
        /// 在眼睛凝視射線與該目標(biāo)的碰撞體持續(xù)接觸時(shí)觸發(fā)。
        /// </summary>
        protected virtual void OnEyeFocusStay()
        {
        }

        /// <summary>
        ///一旦眼睛凝視射線停止與該目標(biāo)的碰撞體,就會(huì)觸發(fā)。
        /// </summary>
        protected virtual void OnEyeFocusStop()
        {
        }

        /// <summary>
        /// 一旦眼睛凝視射線與該目標(biāo)的碰撞體接觸指定時(shí)間后觸發(fā)。
        /// </summary>
        protected virtual void OnEyeFocusDwell()
        {
        }
    }
}
/*
 * ==================================================================================================================
 *
 * UnityVersion : 2021.3.6f1
 * Description : 功能描述
 * Author: 
 * CreateTime : 2023-10-10  16:09:27
 * Version : V1.0.0
 * 
 * ==================================================================================================================
 */

using MRTKExtend.EyeTracking;
using UnityEngine;

public class EyeTrackingTest : BaseEyeFocus
{
    protected override void OnEyeFocusStay()
    {
        Debug.Log("OnEyeFocusStay");
        //todo something
        RotateHitTarget();
    }

    protected override void OnEyeFocusStart()
    {
        Debug.Log("OnEyeFocusStart");
        //todo something

    }

    protected override void OnEyeFocusStop()
    {
        Debug.Log("OnEyeFocusStop");
        //todo something

    }

    protected override void OnEyeFocusDwell()
    {
        Debug.Log("OnEyeFocusDwell");
        //todo something

    }
    
    private void RotateHitTarget()
    {
        transform.localEulerAngles += new Vector3(0, 0.1f, 0);
    }
}

在場(chǎng)景中新建一個(gè)物體,將EyeTrackingTest組件掛載到新建的物體上就可以了
Unity MRTK Hololens2眼動(dòng)交互,unity,交互,游戲引擎文章來源地址http://www.zghlxwxcb.cn/news/detail-721757.html

到了這里,關(guān)于Unity MRTK Hololens2眼動(dòng)交互的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Unity Hololens2開發(fā)|(十)MRTK3空間操作 ObjectManipulator (對(duì)象操控器)

    Unity Hololens2開發(fā)|(十)MRTK3空間操作 ObjectManipulator (對(duì)象操控器)

    ObjectManipulator 允許使用任何輸入設(shè)備或形式直觀地操作 3D 空間中的對(duì)象。 它執(zhí)行與 XRI XRGrabInteractable 類似的任務(wù),但提供其他功能以及特定于混合現(xiàn)實(shí)的交互。 雖然 XRGrabInteractable 與交互器完全兼容(反之亦然)。 在 MRTK v2 中, ObjectManipulator 本身處理不同類型的輸入的大部

    2024年02月05日
    瀏覽(24)
  • Unity Hololens2開發(fā)|(五)MRTK3子系統(tǒng) KeywordRecognitionSubsystem(關(guān)鍵字識(shí)別)

    Unity Hololens2開發(fā)|(五)MRTK3子系統(tǒng) KeywordRecognitionSubsystem(關(guān)鍵字識(shí)別)

    核心定義包附帶有 KeywordRecognitionSubsystem ,它是 MRTKSubsystem 和 IKeywordRecognitionSubsystem 的基本實(shí)現(xiàn),作為負(fù)責(zé) MRTK3 中的/短語識(shí)別的子系統(tǒng)的基礎(chǔ)。 MRTK 附帶的具體實(shí)現(xiàn)(例如 WindowsKeywordRecognitionSubsystem ),以及你可能構(gòu)建的其他潛在短語識(shí)別子系統(tǒng),都應(yīng)該基于此類。

    2024年02月04日
    瀏覽(27)
  • unity HoloLens2開發(fā),使用Vuforia識(shí)別實(shí)體 觸發(fā)交互(二)(有dome)

    unity HoloLens2開發(fā),使用Vuforia識(shí)別實(shí)體 觸發(fā)交互(二)(有dome)

    提示:文章有錯(cuò)誤的地方,還望諸位大神不吝指教! 我使用的utniy 版本:Unity 2021.3.6f1 第一章地址鏈接: link 第一章記錄了一些 安裝環(huán)境 需要的東西,這章主要章打包和一些BUG問題 以前記錄的:鏈接: link 前提:需要在MRTK工具包中導(dǎo)入到項(xiàng)目。 本人經(jīng)常使用的方法: 在holo

    2024年02月04日
    瀏覽(24)
  • Hololens2 MRTK 關(guān)閉空間網(wǎng)格、性能面板

    Hololens2 MRTK 關(guān)閉空間網(wǎng)格、性能面板

    在使用MRTK 創(chuàng)建Unity 工程時(shí), 默認(rèn)配置是帶有空間網(wǎng)格、性能面板,但是有時(shí)候這些會(huì)干擾我們的全息幻影的視覺效果,因此需要進(jìn)行屏蔽顯示。 第一步,在“Hierarchy”面板選擇“MixedReality Toolkit” 默認(rèn)的MRTK配置是無法更改其內(nèi)容的,這時(shí)候需要點(diǎn)擊下圖所顯示的“Clone”字

    2023年04月08日
    瀏覽(48)
  • Unity Hololens2開發(fā)|(一)環(huán)境配置

    Unity Hololens2開發(fā)|(一)環(huán)境配置

    Windows10 SDK Microsoft Visual Studio2022 Windows 10/Windows11(專業(yè)版或者企業(yè)版操作系統(tǒng) 家庭版不行) Unity2021.3.29lts MixedRealityFeatureTool(用于配置MRTK3 Unity 的混合現(xiàn)實(shí)工具包) HoloLens 2 仿真器 :(有設(shè)備或者初學(xué)者不建議安裝) 配置開發(fā)者模式 Holographic Remoting Player(全息遠(yuǎn)程處理播放) Visual

    2024年02月04日
    瀏覽(53)
  • HoloLens 2 丨打包丨MRTK丨Unity丨新手教學(xué)

    HoloLens 2 丨打包丨MRTK丨Unity丨新手教學(xué)

    提示:今日功能介紹 使用 MRTK制作hololens 2的打包流程制作的新手教學(xué)。 這里為開發(fā)工具介紹 版本并不限制 但是建議超過2018版本 Unity2019.4.18f1 Visual Studio 2019 vs升級(jí)步驟 找到Visual Studio Installer 點(diǎn)擊修改 后添加我們需要的開發(fā)組件 確保我們的圖中四個(gè)組件有被安裝 打開我們的

    2024年02月11日
    瀏覽(55)
  • 用Unity發(fā)布APP到Hololens2無坑教程

    用Unity發(fā)布APP到Hololens2無坑教程

    發(fā)布前參考設(shè)置如下: ? ? ? ? ?

    2024年02月08日
    瀏覽(19)
  • Hololens2遠(yuǎn)程音視頻通話與AR遠(yuǎn)程空間標(biāo)注,基于OpenXR+MRTK3+WebRTC實(shí)現(xiàn)

    Hololens2遠(yuǎn)程音視頻通話與AR遠(yuǎn)程空間標(biāo)注,基于OpenXR+MRTK3+WebRTC實(shí)現(xiàn)

    下面展示一些 內(nèi)聯(lián)代碼片 。

    2024年04月10日
    瀏覽(43)
  • Unity Hololens2開發(fā)|(四)實(shí)時(shí)畫面電腦預(yù)覽(2種方法)

    Unity Hololens2開發(fā)|(四)實(shí)時(shí)畫面電腦預(yù)覽(2種方法)

    獲取Hololens2 IP地址,打開Hololens2的Holographic Remoting Player 可以得到IP。 打開瀏覽器在搜索欄輸入Hololens2 IP地址。如果出現(xiàn)安全問題拒絕訪問,點(diǎn)開下面的更多信息然后進(jìn)入,輸入usrname、password。 -依次 查看-混合現(xiàn)實(shí)捕獲-實(shí)時(shí)預(yù)覽 點(diǎn)開即可看到Hololens畫面。 如果不成功,請(qǐng)到

    2024年02月04日
    瀏覽(58)
  • 【Hololens2目標(biāo)檢測(cè)】YoloDetectionHoloLens-Unity項(xiàng)目發(fā)布記錄

    【Hololens2目標(biāo)檢測(cè)】YoloDetectionHoloLens-Unity項(xiàng)目發(fā)布記錄

    win10專業(yè)版 Unity2019.4 VS2017( 一定要用這個(gè)版本的VS! ) Hololens2(打開開發(fā)者模式) win10 SDK 10.0.19041.0 項(xiàng)目來源:YoloDetectionHoloLens-Unity 這是一個(gè)使用Hololens進(jìn)行目標(biāo)檢測(cè)的項(xiàng)目。Hololens端負(fù)責(zé)采集和顯示,電腦端處理圖像,并標(biāo)注,將標(biāo)注框傳回Holo端進(jìn)行顯示。 具體的項(xiàng)目發(fā)

    2024年02月09日
    瀏覽(38)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包