HoloLens开发学习记录--- 3.Gaze凝视操作( 添加指示器 , 公告板 , 跟随移动 , Cursor底层代码详解)

 

参考博客:https://blog.csdn.net/yuanlaijike/article/details/85200733            并实现功能  

一.为 Cube 添加了方向指示器(Directional indicator),当我们的视野中看不见该 Cube 时,方向指示器会指示出它的位置。

        实现步骤如下:

                      1. 为 Cube 添加 MRTK 包中的 DirectionIndicator.cs 脚本。     (这个是一个具有指示标志的脚本)
                      2. 选中该脚本,设置 Cursor 属性为 Hierarchy 中的 CursorWithFeedback;

                      3. 设置DirectionIndicatorObject 属性为 MRTK 包中的 HeadsUpDirectionIndicatorPointer。
                      

DirectionIndicator.cs 脚本,各个控件或具体属性含义如下:
            Cursor                        该物体在场景中被当作光标,方向指示器会显示在这个物体旁边
            DirectionIndicatorObject                方向指示器物体,该物体会一直指向附加该脚本的对象。
            DirectionIndicatorColor     方向指示器的颜色(方向指示器材质里的Shader必须要有“_TintColor”属性,否则颜色不会变)
            VisibilitySafeFactor    范围[-0.3,0.3] ,当物体在摄像机视锥的某个百分比范围中,方向指示器才会显示。(例如此值为0时,当物体完全离开摄像机视锥之后方向指示器才会显示;此值为0.1时,物体在视锥范围的90%之外,方向指示器才会显示;此值为-0.1时,物体在视锥范围的110%之外 ,方向指示器才会显示)
            MetersFromCursor    方向指示器从原中心到它面向方向(forward)的一个偏移值。
 

二.如果为 Cube 添加了广告牌(Billboarding)效果,他就会永远的面朝你,即使你尝试走到它的后面(应用在 Cube 上没啥意义,可以使用 Text 来测试)。

        为一个 gameObject 添加广告牌效果十分简单,只要为其添加 MRTK 包下的 Billboard.cs 脚本,并设置它的 PivotAxis 属性为 Y 即可,即绕着 Y 轴实现广告牌。

 

三,广告牌+平滑追踪

给 3D text 文本添加  广告牌(始终正面朝向自己) + 平滑追踪(始终跟随自己)

1.给 3D Text "拍照准备中"    添加   Tagalong.cs   脚本    (跟随自己的视线移动)

2.给 3D Text "拍照准备中"    添加    Billboarding.cs 脚本  (始终正面朝向自己)

Text图片

  

 

四,关于Cursor图标,底层实现

             脚本WorldCursor.cs  详解                   见:https://blog.csdn.net/yuanlaijike/article/details/85200733

 

 

本篇学习笔记主要讲解 HoloLens 2 开发入门教程中的 MRTK(Mixed Reality Toolkit)的 EyeTracking 和语音识别功能。 ## EyeTracking HoloLens 2 中的 EyeTracking 功能可以让应用程序能够检测用户的注视点,并根据注视点来响应相应的操作MRTK 提供了一些组件来支持 EyeTracking 功能。 ### GazeProvider GazeProvider 是一个 MRTK 组件,它可以检测用户的注视点,并在场景中放置一个 Gaze Cursor(注视光标)来指示用户的注视点。要使用 GazeProvider,需要将它添加到场景中的一个物体上。 ### EyeTrackingTarget EyeTrackingTarget 是一个 MRTK 组件,它可以将一个物体标记为 EyeTracking 的目标。当用户的注视点在该物体上时,可以触发相应的操作。要使用 EyeTrackingTarget,需要将它添加到场景中的一个物体上,并设置它的 Trigger Type(触发类型)和 Action(操作)。 ### 示例 以下代码演示了如何在 HoloLens 2 上使用 EyeTracking 功能: ```csharp using UnityEngine; using UnityEngine.XR.WSA.Input; using Microsoft.MixedReality.Toolkit.Input; public class EyeTrackingExample : MonoBehaviour { private GazeProvider gazeProvider; private GameObject targetObject; void Start() { gazeProvider = FindObjectOfType<GazeProvider>(); targetObject = GameObject.Find("TargetObject"); } void Update() { if (gazeProvider.GazeTarget != null && gazeProvider.GazeTarget == targetObject) { Debug.Log("Gaze detected on target object."); } } } ``` ## 语音识别 HoloLens 2 中的语音识别功能可以让应用程序能够识别用户的语音指令,并根据指令来响应相应的操作MRTK 提供了一些组件来支持语音识别功能。 ### SpeechInputHandler SpeechInputHandler 是一个 MRTK 组件,它可以将一个物体标记为语音输入的目标。当用户说出相应的语音指令时,可以触发相应的操作。要使用 SpeechInputHandler,需要将它添加到场景中的一个物体上,并设置它的 Keywords(关键词)和 Actions(操作)。 ### 示例 以下代码演示了如何在 HoloLens 2 上使用语音识别功能: ```csharp using UnityEngine; using Microsoft.MixedReality.Toolkit.Input; public class SpeechInputExample : MonoBehaviour, IMixedRealitySpeechHandler { public void OnSpeechKeywordRecognized(SpeechEventData eventData) { if (eventData.Command.Keyword == "Hello") { Debug.Log("Hello command recognized."); } } } ``` 需要注意的是,在使用语音识别功能之前,需要先在 MRTK 的配置文件中启用语音识别功能,并添加相应的语音指令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值