站在微软的肩上玩AR 手把手教你玩转Holographic(全息)平台

2026-10-02上海AR开发专家

  • 如果你正琢磨着开发一款
    AR应用
    ,不知道从何下手;
    如果你想快速了解AR应用的窍门,正愁没有干货;
    恭喜你,这是目前最详细的帖子。
    本文您将了解到:
    1. 什么是Holographic(全息)平台?
    2. 如何快速使用Holographic平台?
    3. Holographic平台的工具有哪些?
    4. Holographic平台有啥性能优势?
    在如今的巨头中,微软正在凶猛发力。
    在手机浪潮中错失良机的微软,正寄希望于下一代计算平台,重新杀回战场。
    大厂的发力,资源的倾注,往往会带动创业者的涌动与跟随。谁能在新的
    AR平台
    抢得先机,谁也就有了更多的资本搅动力,更多的故事,以及更多脱颖而出的机会。
    VR价值论也随时关注着最新的动态,以及最有价值的干货(价值菌:你懂的,我们只盯着干货)。
    如下,我们为您整理出一份目前为止最干的干货,关于
    AR开发
    ,关于Holographic平台的开发步骤,关于注意事项,关于技能技巧,希望对有着强烈冲动,想要在AR应用上大干一场的创业者,提供最详实的帮助。
    本期(第19期)来自微软(中国)开发技术顾问梅颖广在FGF大会上的内容分享: 手把手教你如何利用好Holographic平台来进行AR应用的开发?
    梅颖广
    微软(中国)开发技术顾问
    我的分享将主要围绕三块内容进行:
    第一,我会对Holographic平台做一个大致的介绍;
    第二,我会介绍一下如何利用Holographic平台做一些应用的开发。
    这里又分为两个层次:
    1. 如何从零开始一步一步去做Holographic的应用开发;
    2. 如何利用开源工具Holotoolkit-unity。
    第三个,我也会具体聊一聊Holographic的性能优化问题。
    先从第一部分开始。
    1什么是Holographic平台?
    在此之前,大家应该已经听说过一个概念——Universal Windows Platform(价值菌注: 通用Windows平台,以下所提到的UWP就是这个的简称啦,注意要跟上哦)。
    其实,这已经不是一个全新的概念了。
    自去年Win10发布以来,我们在很多场合都介绍过UWP。
    UWP的一个重要功能是——简化程序员的工作。
    也就是说,程序员只要写一套相同的代码,其生成的应用,便可以部署在微软所有的硬件平台上。
    这样做,有什么意义呢?
    有两点:
    1. 比如,你之前已经做了一个Win10的应用,如今,只要符合硬件的要求,就可以将应用直接部署到Holographic的平台上,而不用自己再去受累转变了;
    2. 再比如,你做了一个发布在Holographic设备上的UWP应用,那么如今,这个应用也可以运行在其他UWP平台上了。
    来看一下Win10的开发架构,同样,Holographic的应用也符合Win10的开发架构。
    你可以看到最底下有一部分叫Universal App Platform API。
    具体什么意思呢?
    就是说, 程序员在UWP所有硬件平台进行最后编程的时候,都是用相同的API(价值菌注:Application Programming Interface,应用程序编程接口), 然后全部运行在所有相同的Windows Cure(Windows内核)上。
    通过这个架构和内核的保证,就可以实现UWP。
    2借助哪些工具开发Holographic平台?
    紧接着,第二个问题,如何利用Holographic 平台做具体的开发呢?
    具体的开发资料,包括开源代码等,其实都可以在微软官网上找到。
    我这边给大家列了两个网址:
    在这个网址所链接的开发者中心,可以找到有关于Holographic应用的专项。
    打开这个网址,你可以看到两部分内容:
    1.全套的Documentation(文档),通过这个Documentation就可以了解到Holographic平台的一些具体开发技能。
    2.你可以看到这里有个Community(社区)。开发Holographic应用时遇到任何问题,都可以第一时间加入到这个社区里,进行提问。来自微软总部,以及世界各地的技术专家会根据所提的问题,做一些技术支持。
    而在这个网页上,你是可以找到微软和Holographic相关的开发工具的。
    此外,一些很有用的代码,也都已经开源在Github上。
    Github/Microsoft,这个是微软所有开源项的总网址,在搜索里面输入Holo就可以找到相关项目,包括我之后会讲的Holotoolkit——所有的关于
    HoloLens
    的开发课件的源代码,都已经全部开源在Github里面了。
    OK,介绍完这两个网站之后,我来介绍一下开发要求。
    在前面已经和大家介绍过,整个Holographic是和Win10的UWP这套架构打通的,所以,在开发的过程中,需要注意三个方面:
    第一、必须是支持Win10的设备,所有对它的开发,需要基本符合Win10的开发要求。
    符合Win10的开发要求其实也比较简单,只要用Visual Studio 2015,至少要装Update1,建议升级到update3以上(包括update3),然后装Win10的SDK就可以了。
    第二、除了符合Win10的开发要求,开发HoloLens因为设备的关系,推荐开发者使用HoloLens的模拟器。
    第三、开发工具。
    HoloLens的开发可以通过三种方式来实现,不过推荐大家直接使用Unity开发就可以了。
    不过在版本上需要注意,Unity的最新的是5.4f3这个版本,如果用HoloLens去开发的话,你需要装一个HoloLens Technical Preview的版本(简称为HTP)才行。这样一个版本才可以完成HoloLens的开发。
    下图是对模拟器的一个详细介绍。
    如果你有Window phone的开发经验,你会发现,微软的硬件模拟器,基本都长得都差不多:
    左边是它的运行结果,右面是一排工具按钮。
    如果你了解HoloLens的话,应该知道HoloLens的操作方式,跟PC以及平板的的操作方式是不同的。
    HoloLens有三个操作方式,分别是Gaze/Gesture/Voice,即凝视、手势和语音。
    对于这三种方式,Emulator(模拟器)是全部支持的。
    你可以通过按键去模拟人的凝视、手势等,而不需要在电脑面前去做这样的手势。
    按下这里的按钮,你基本上就能启动我刚才说的 “通过按键来模拟人体交互” 。
    在刚才模拟器的介绍图片中,大家可以看到右面有一排按钮,其中一个按钮是Open Device Portal。
    HoloLens有一个Device Portal的门户,它的中文叫做设备门户。
    在一个局域网里面,你只要输入HoloLens的IP地址,PC就能打开这个设备门户。
    这个设备门户有以下几个功能:
    比如,你可以对HoloLens的温度、功耗状态进行监测;
    比如,你可以对它的
    混合现实
    数据,进行直接提取。
    我们希望大家在开发过程中,一定要注意这个功耗的问题,稍后我也会讲。
    有一点要注意: HoloLens毕竟是一副眼镜,不会带主动散热器件,基本都是被动散热,因此,对于应用的功耗来说,要求会高一些。
    所以, 一定要使用设备门户的按键——Performance(性能),对所开发的应用在HoloLens上的功耗状态进行监控。
    接下来,你的应用如何发布呢?
    如果你有UWP应用的发布经验,你就会发现,其实Holographic平台设备的发布,跟UWP的平台发布是一样的。
    发布的流程基本上还是按之前的六步来做, 唯一的区别就是——如果你是针对Holographic平台的话,一定要在Manifest文件里把你的硬件改为Holographic。
    其次,在商店里面设置的左边,有一个小按钮叫Holographic,发布的时候记得要把这个按钮点上,因为它的默认状态是不点的。
    总的来说,整个发布过程还是很简单的。
    刚才为大家介绍了一些开发工具,接下来介绍一下3D技术。
    3如何用Unity开发Holographic平台?
    Unity是我们比较推荐的一个开发工具,这里,我分四个部分给大家介绍一下具体如何使用。
    第一部分,怎样用Unity去建一个Holographic
    第二部分,介绍一下Holotoolkit
    先来说说如何用Unity来建Holographic。
    怎样用Unity去建一个Holographic?
    1. 创建一个新的工程
    注意:这个新的工程在创建的时候用的工具是5.4f3版的HTP版本,而不是普通的版本。
    创建新工程的时候,你需要选好3D选项,然后它会启动一个普通的3D工程。
    在这里, 记得要做一些对于Main Camera的设置,最主要是把它的Clear Flags(清除标志)功能从天空盒状态切换成纯色,黑色作为它的底色。
    为什么要这么设置呢?
    大家知道HoloLens是一个MR产品,如果虚拟的数据你不进行显示的话,它就会默认显示眼睛后面的真实场景。所以我们要把它设置成黑色,这样就不会有投影显示了。
    如果你设置天空盒的话,你看到的是一个类似叠加的场景,而不是一个MR的场景。
    2. 调整近裁面
    因为HoloLens在一些设备硬件方面受到限制,所以它的近裁面要比普通的设备稍远一些。
    我们推荐大家把近裁面,从之前默认的0.3改成0.85。
    根据HoloLens的性能表现,来调整项目的配置。比较推荐使用最快的配置,追求速度而不是追求效果。
    3. 构建一些设置
    构建的设置其实跟Win10的构建设置是一样的。你只需要在Unity里面把它切换到商店的应用。
    从Win8开始,Unity把所有商店的应用全部归在Windows Store(Windows应用商店)这个选项里面,所以你需要在大项选择Windows Store,然后把里面的SDK改成Universal 10,这个就代表一个Win10的UWP应用了。
    4. Build Type(构建类型)
    里面包含两种,一种是XAML,一种是D3D。
    一般来说,Holographic的应用不会去整合Win10的UI设计,所以在这里,还是建议大家使用D3D,有利于效率的提高。
    5. 确认Project Settings(项目设置)
    这里要确认Project Settings(项目设置)里的VR SDK是不是Windows holograhic。
    虽然HoloLens是一个MR类,但Unity全部归为VR产品,所以你还是要到VR里去找。
    6. 输出成为Visual Studio的window10 的解决方案
    7. 部署到模拟器
    使用这个Visual Studio把Win10的工程打开,就可以编译成一个Holographic的应用包,然后输出到模拟器上。
    接下来,我介绍一下HoloToolKit-Unity。
    何为HoloToolKit-Unity?
    这是我们为了方便用Unity开发HoloLens而做的一个开源的项目。
    整个项目分为两个版本,一个是后面带Unity的,一个是后面不带Unity的。
    如果你是从Unity开发的话,你需要获得HoloToolKit-Unity这个项目,它基本上是有一整套组件和脚本的。
    为什么要给大家去介绍这个东西呢?
    首先,我理了一张表格,大家可以看出它提供了各种各样的功能,这些功能都是非常适合于Hololgraphic这个平台的开发的。
    它会有很多的内容,根据类型分出不同的目录,从这个目录可以看到有脚本、有Prefabs(预制)、有材质等等,这样的类型其实你直接就可以拿到自己的Holographic的项目中去用。
    其次,它的整个模块有六个。
    第一个就是Input(输入)
    Input模块是针对三种不同的交互手段,功能就是方便进行交互的开发。
    第二个就是Sharing(分享)
    Sharing(分享)这个模块也很重要,它分担了一些网络交互的功能。
    第三个就是空间映射(Spatial Mapping)
    空间映射是指在HoloLens启动的时候,用于周围环境采集的一个步骤。
    第四个是空间声音(Spatial Sound)
    这里面装了很多关于空间声音的数据,包括对音源的处理和对声音屏障的处理。
    第五个是实用程序(Utilities)
    除了前面四个跟Holographic相关的功能以外,Utilities的这个模块属于普通的实用功能。
    举几个例子:
    比如说FPS的显示。
    比如,我们做一个Billboard(广告牌)。
    比如,Main Camera。
    你可以看到里面有一个叫Main Camera(主摄像头)的内容,我刚才的介绍中你会发现有一个步骤是对Main Camera进行设置的。在使用了utilities之后,就非常简单了,只需两步:
    第一步把你的Unity提供的默认的Camera去掉,第二步直接将utilities提供的Main Camera(主摄像头)放到场景中来使用。
    第六个是构建(Build)
    开发完以后,我们一定要做一个工作就是用build的功能,部署成一个Win10的工程,然后在Visual Studio里面跟踪调试。
    但这样其实会给开发过程带来麻烦。
    针对这个情况,Build模块给开发者提供了一套比较好用的流程——也就是说,在Unity里面就能做这个事情,而不需要把它部署成一个Win10的Studio去完成。
    那么到底应该怎么去用Holotoolkit呢?
    其实很方便,因为它是一个开源项目,所以第一步你要把这个开源项目克隆下来,在Unity里面打开,然后选中里边的Asset这三个功能,把它输出为一个Package。
    Holotoolkit可以帮助完成一些项目和一些环境的搭配。
    比如说,直接用Main Camera Project(主摄像头工程)来替换Unity Camera(统一摄像头)。
    它进来以后你会发现Unity多了一个叫Holotoolkit的菜单,在这个菜单里面你可以选Configure,把三个Apply都选上,分别对环境、对工程、对HoloLens capability进行一次性设置,就不用一一设置了。
    所以只要做这样几步,整个工程从零开始就的搭建也就做完了。
    最后可以用一下Build Windows,这就是我刚才说的Build模块,它体现在Unity里面有一个菜单——Build Windows。
    你把它打开以后,会展示BW的一个界面,在这里面你可以直接生成一个XAP的包、以及一个solution(解决方案),然后可以直接部署在HoloLens上。
    4性能优化建议
    大家通过我刚才的介绍也知道了HoloLens对性能方面还是有一定要求的,所以我们给大家提供三个相当于纲领性的建议。
    第一, Holographic的应用只要求刷新率达到60帧。这其实要比VR类的产品要求低,VR产品现在要求都是90帧。
    第二,内存建议大家占用量不要超过900兆;
    第三,功耗
    当你应用搭建起来后,一定要到设备门户里面去看两个数据,以此保证系统的功耗和SOC的功耗,这两个数据一定要保证它的瞬时曲线,和一分钟的平均曲线,全都要在橘红色区域之下。
    如果这两条曲线在橘红色区域的话,会直接进入一个过载保护状态,这个设备就会关机(状态),这点一定要注意。
    下面针对于Unity这块,我稍微深入介绍一下。
    Unity这个版本现在已经适用于很多的
    VR平台
    ,所以大家在官网上会发现很多对于VR优化的建议,而这样一些建议同样是适合于Holographic平台的开发。
    举两个例子
    右边的属于遮挡剔除,除了能像左边那样进行视锥剔除外,它还可以保证把那些被遮挡的小物件不被渲染出来,这样的话,就能大大的降低DC(DRAW CALL),所以建议做的时候把这个功能打开。
    再一个就是在Unity里面记得要把DC的Batching功能选上。
    Unity基本上有两种,一种是静态的,一种是动态的。
    静态的话基本上就相当于使用内存消耗来提高渲染效力;动态其实就是消耗CPU的资源来提高渲染程度。
    我们建议大家可以把这两种都选上。
    下面给大家介绍两个功能,这两个是比较新的Unity5.4所提供的功能。
    第一个功能我们称为SPSR单通道立体渲染。
    大家知道我们是一个双眼的渲染设备,基本上常规的话会先做左眼渲染再做右眼渲染,但从Unity5.4开始,Unity提供了一个从SPSR的功能,它的作用就是分配一个比较大的render target,然后就可以使用一套绘图指令来完成左眼和右眼同时渲染的功能,以此提高效率。
    第二个功能叫Graphics Jobs(图形工作)。
    我个人感觉这个功能对于多线程渲染效果比较好。
    我们把这个功能打开以后,Unity就会自动地把那些在主线程上做的工作,分配一部分给到渲染线程,以此来大幅度减轻主线程占用CPU的时间。
    目前为止我了解到,在Holographic的开发上,这两个功能是默认关闭的,特别是Graphics Jobs,它还是一个试验的阶段,那么为什么给大家提出来呢?
    第一,我认为虽然Graphic Jobs目前是一个试验功能,还在完善中,但最终会成为正式功能,所以有必要早点提出来让大家知道。
    第二,Holographic的设备,不仅仅是HoloLens, 还包括关于Holographic的VR一类产品,这些都需要Win10的PC来支持。Win10本身是支持DX12的,而DX12在多线程渲染方面,大大优于DX11, 所以我还是建议大家多关注一下Graphics Jobs这个功能。
    这两个功能应该说还是比较简单,在Player Setting里面设置就可以。
    最后我想从Unity的角度来谈谈其未来将对Holographic开发的支持。
    从Unity5.5开始,会内嵌一个Holographic Emulation(模拟器),如果你没有用Holotoolkit/Unity,你也可以在Unity里面去使用holographic的模拟器。
    那么你可以看到它的整个数据输出方式也是分两种, 一种是直接输出到editor里面,那么你就可以直接从Unity编辑器直接看到HoloLens运行出来的一个情况;
    另一种,你也可以直接输出到HoloLens设备上,这样就不需要去把它发布成一个Visual Studio的工程,这样的话对开发的周期和效率都会有非常好的提升。
    当然我也观察到一个细节(并非来自官方的消息),在介绍Holographic Emulation的时候,有博客的消息说,Unity5.5支持,但并没有说是5.5的HoloLens Technical Preview的这个版本去支持。
    从这点可以看出,可能从5.5开始,HoloLens的开发会包含在其他VR类的开发之中。
    所以,大家在使用Unity5.5的版本去开发时,就不用再下载一个特别的Holographic的Unity版本。

关于AR

卓越的技术,一流的团队,为您打造专家级AR产品。
Test your infrastructure

什么是AR?

AR(Augmented Reality),即增强现实技术能将虚拟信息(图片,视频, 音频等)融入现实世界,让现实世界更加多元、丰富,为人们带来更加生动有 趣的感官体验。简单来说AR技术给人们带来的是一种信息的增强体验,它也 将成为一种“更新奇、更易传播”的新型信息传递方式。

AR的趋势

在信息技术化的时代趋势下,AR将以一种新型娱乐及信息交互方式融入人们 的生活,而对于企业来说,AR产品的广泛推广及运用也将是一项不可错失的 绝佳商机。

Test your infrastructure

AR运用的困惑

AR技术备受瞩目,然后实际运用上却让人望而止步。
成本上 往往单制作一个AR形式的内容就得花费上万元, 只有高预算的大企业或广告商才能出手
技术上 AR技术总给人一种触不可及的印象,导入AR技术 是否需要高度技术支持。
企划上 AR充满娱乐性,但是好玩之外,如何将AR良性结 合商务是难题。

选择迅速AR的八大优势

迅速AR始终以满足顾客为己任,成就AR领先品牌。

经典案例展示

我们是AR应用的领军者,专注AR技术研究与开发。

新闻动态 · 与日俱进

我们诚心邀您分享我们的成长历程。
更多动态 >

合作伙伴

整合全球产业链资源,服务超过7亿用户