• 您的位置:首页 > 新闻动态 > 技术文章

    Hololens开发环境搭建

    2017/7/31      点击:

    伴随着数月的期待,终于拿到了预订的HoloLens开发者版本套件。随着VR/AR/MR技术的热潮,国内外均对它们的应用与盈利前景持有积很的预期,这也直接导致了国内外当前投资VR/AR/MR技术的热潮。无论是融资数十亿美元的Magic Leap,还是Facebook、微软等科技巨头布局VR/AR市场,这股热潮不仅出现在风险投资领域,还席卷了消费者市场和智能硬件市场,这无疑引领了下一波互联网产业的爆发,而我们作为技术核心的开发者更不能落下。正如乔帮主所说:“Stay foolish,Stay Hungry”,今天我们就来了解下AR/MR技术的开发特性,本文以微软出品的HoloLens为目标设备。

    AR/MR是什么?

    VR大家都已经很清楚了,VR即是虚拟现实技术,这意味着沉浸式全虚拟的使用体验。全虚拟沉浸式的体验带了独特的视觉效果,但是由于遮盖现实内容,仍导致了头晕、运动不友好等难以解决的问题。与之相对的则是AR/MR技术,这意味虚拟世界与真实世界交织的视觉体验。从用户使用体验来看,AR/MR无疑是更符合人类自然交互模式,代表了未来更伟大的发展方向。同时在笔者看来,由Magic Leap提出的MR(Mixed Reality)技术其本质与AR(Augmented Reality)技术并无区别,微软目前也在HoloLens文档中大量使用MR技术的说法,故此本文将AR/MR技术视为一体。

    AR核心特性

    正如上面所说,AR具备与VR截然不同的视觉体验,所以其开发体验也与VR区别较大,下面我们来一起探讨HoloLens的部分核心开发特性。本文使用的开发环境为Unity HoloLens preview beta 14以及Unity Universal Windows Platform Runtime组件

    开发环境

    .安装清单

    1.升级win10

    2.Visual Studio 2015 Update 2(https://developer.microsoft.com/zh-cn/windows/downloads),请确认是*新版本(安装时采用自定义安装,电脑的内存一定要多,若安装VS 的所有配件,大约需要54GB,一定要有VPN,否则下载速度会很慢。)

    3.hololens 模拟器(https://pan.baidu.com/s/1dEGXC2l)大家自行下载,十分方便,适合买不起设备的人

    4.Unity HoloLens Technical Preview,推荐用Unity。

    首先:

    1. 首先安装Unity引擎

    2. 然后安装UWP Runtime

    3. *后可以根据需要安装离线文档工具

    大家注意:设备要求--

    • 64位Windows 10 Pro, Enterprise, or Education系统(家庭版不支持Hyper-V)

    • 64位CPU

    • 8G或更多内存

    • 小编有个技巧(仅适合Mac 的用户)安装win10 十分简单,一次成功,并且在搭建开发环境时十分快,不会超过一个小时(有Vpn 的前提下),安装win10 镜像的方法,注意分配给win0

      的内存一定要多(https://www.macx.cn/forum.PHP?mod=viewthread&tid=2182916&extra=page%3D1%26filter%3Ddigest%26digest%3D1%26digest%3D1)

    *后,对hololens 的核心做个简单介绍:

    语音识别Voice Command

    语音识别同样是HoloLens重要组成部分,包括我们很熟悉的Cortana,同样能够为我们带来更自然高效的输入体验。

    HoloLens的语音识别分为三个部分:

    • 语音命令 KeywordRecognizer:通过关键词来执行动作

    • 语法识别GrammarRecognizer:通过预设的语法来模糊匹配动作

    • 听写 Diction:即语音转文字,用于输入

    三个组件中语音命令特性*为常用,配合凝视能够完成绝大部分场景的需求。为了使用语音命令,首先要启用KeywordRecognizer实例,同时要预设好来源。


    通过数组来初始化关键词识别器:

    keywords.Add(“activate”, () => { // 关键词动作 }); 

    keywordRecognizer = new KeywordRecognizer(keywords.Keys.ToArray()); 

    keywordRecognizer.OnPhraseRecognized += KeywordRecognizer_OnPhraseRecognized; 

    //开始识别 keywordRecognizer.Start();

    在响应事件中做处理,调用识别到的关键词事件。

    private void KeywordRecognizer_OnPhraseRecognized(PhraseRecognizedEventArgs args) 

    System.Action keywordAction; //如果关键词在预设列表中,即执行其2动作 

    if (keywords.TryGetValue(args.text, out keywordAction)) { keywordAction.Invoke(); } 

    }

    空间映射 Spatial Mapping

    AR技术能实现的关键就是能够识别映射周边世界,这是全息对象与真实表面交互的基础,是AR技术的核心组件。HoloLens借助于微软特殊研发的全息处理单元(HPU 1.0)才能实现空间映射特性,幸运的是我们可以使用空间映射API来对真实世界做交互。

    全息处理单元

    我们可以利用SurfaceObserver组件来获取控件表面映射信息,下面是基本的操作:

    SurfaceObserver surfaceObserver; 

    void Start () { 

    //初始化 

    surfaceObserver = new SurfaceObserver(); 

    StartCoroutine(UpdateLoop()); 

    IEnumerator UpdateLoop() { 

    var wait = new WaitForSeconds(2.5f); 

    while(true) { 

    surfaceObserver.Update(OnSurfaceChanged); 

    yield return wait; 

    }

    每一个空间表面都需要注册其Handle事件,用于实时调整空间映射信息和交互。

    private void OnSurfaceChanged(

    SurfaceId surfaceId, SurfaceChange changeType, Bounds bounds, System.DateTime updateTime) 

    //处理空间表面变化

    }