本文将以官方案例来说明如何实现移动全息对象操作(211 - chapter4)。此案例主要涉及到了语音、手势识别。
实现思路:
* 通过添加的关键字来初始化KeywordRecognizer;
* 创建一个GestureRecognizer用于实现Manipulation Holographic;
* 通过语音识别调用对应的函数操作实现选择不同的GestureRecognizer;
* 通过不同的手势识别操作来对应地向Gaze射线凝视的物体发送消息实现操作;
以MSDN上官网的demo为例:
首先可以创建一个空物体来管理相关的Gaze、Hand、Gesture相关操作。在这里我们将对全息对象的管理脚本(也就是包含语音操作命令)也挂载在此空物体Manager上。
语音输入 Voice Command
- 声明一个KeywordRecognizer ;
- 声明一个
Dictionary<string, KeywordAction> keywordCollection
用于保存关键字和对应的关键字函数; - 在Start()函数中进行添加语音关键字;
- 在Start()函数中由添加的关键字字典keywordCollection进行对KeywordRecognizer 初始化并开始关键字识别;
- 对关键字对应的操作函数进行编写。此案例中为MoveAstronautCommand函数,主要实现将GestureManager.cs脚本中的不同的GestureRecognizer进行切换;
**AstronautManager.cs**
using HoloToolkit;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Windows.Speech;
public class AstronautManager : Singleton<AstronautManager>
{
// KeywordRecognizer object.
KeywordRecognizer keywordRecognizer;
// Defines which function to call when a keyword is recognized.
delegate void KeywordAction(PhraseRecognizedEventArgs args);
Dictionary<string, KeywordAction> keywordCollection;
void Start()
{
keywordCollection = new Dictionary<string, KeywordAction>();
// Add keyword to start manipulation.
keywordCollection.Add("Move Astronaut", MoveAstronautCommand);
// Initialize KeywordRecognizer with the previously added keywords.
keywordRecognizer = new KeywordRecognizer(keywordCollection.Keys.ToArra