微软创新技术合作事业部梅颖广:详解微软混合现实开发平台
日前,国际虚拟现实创新大会在青岛崂山区会展中心正式开幕。虚拟现实关键技术趋势论坛于11月10日举行,VR网(微信公众号:VR平台)作为特邀媒体出席了现场。
聊完了虚拟现实,再来听听关于混合现实的内容。本次论坛邀请了微软混合现实平台工程师梅颖广,他就《微软混合现实平台开发》这一话题为大家分享一些体会,以下是演讲内容纪实:
大家好,我是微软创新技术合作事业部的梅颖广,今天想给大家简单分享一下微软混合现实平台开发的事情。整个大会其实有关于这个部分,其实有两个内容,一个是讲混合现实生态的,这是在今天下午会由我的同事来讲,我看了一下今天还是偏程序员的东西比较多,和之前的几位讲师内容稍微有点不同。
我这部分内容比较多,主要是跟大家讲一下三方面,第一是说一下什么是微软的混合现实平台,第二讲一下为什么微软要推出这样一个平台,然后我们要力争要打造现在的其他的一些厂家的VR和AR的平台来的更加的优异,优异点在哪里。第三也是重点,我们如何在平台上做VR和AR的应用,或者是MR的应用。我这儿有五个部分,一个是简单的介绍一下开发的概况,第二就是介绍开发的环境、工具方面。第三因为这是一个相对比较新的平台,所以对应用怎么发布,可能有很多的开发者不是很了解,想给大家介绍一下。第四部分就是介绍一下开发当中微软开发了一个非常有用的工具,MRTK,第五就是性能优化的内容。
先面两个,因为下午有同事来讲,我这边儿以最快的速度给大家过一下。第一个是说一下什么是微软的混合现实平台,如果大家参加过微软的一些讲座,这个图已经多次给大家看了,主要就是从微软的角度把目前业界的VR和AR和自身的MR在这个图表上给大家做了一个罗列,在微软的MR概念里面,把VR和AR分在整个MR系统两端,我们讲AR更多讲真实世界、物理世界相关的场景,VR更多的讲的是数字化的世界的一些场景,但是MR是处在真实世界和数字化世界的中间,在这个中间的一块区域,大家可以看到基本上把来自于数字世界的物体和来自于真实世界的物体做一定程度的混合,而且这个混合比,并不一定是50%:50%,也有可能是10%:90%,也有可能是90%:10%,根据不同的混合百分比,会产生不同的场景,不同的使用案例,这样一个整个的区间我们都认为是微软混合现实平台所关注的领域。
大家可以看到,从左往右的混合和从右往左的混合是略微有点不同的,我们看到真实的世界当中,混合部分数字化的世界,这个我们称之为全息设备,从右往左是沉浸感的设备,主要强调的是数字化的世界当中混入一些真实世界的信息。
针对这个两个概念,微软延伸出两大类产品,比如HMDs强调的是真实的世界当中,在里面混入部分来自于数字化世界的物体。右边的部分是体现在虚拟化的物体当中混入部分来自真实的物体,大家可以看到,这两类产品,微软所使用的策略略微有一些不同,左边来说主要是微软用的是第一方的产品去做的,右边的产品主要是趋向于和世界上比较有名的一些大厂合作,作为我们的OEM厂商来推出各自品牌的一些产品,目前大家可以看到,有宏基、华硕、惠普、联想、戴尔、三星,在日本有富士通,中国主要我们是跟桑格拉斯(音)合作。这边儿主要是推出这些产品,每个厂家生产的样子都不同,但是基本的底层的架构和模板是完全一样的。
各个OEM厂商推出的产品进度略为不同,但是最快的有两家,一个是宏基,还有一个是惠普,这是两家头盔主要的硬件方面的细节,大家可以简单的看一下,最主要我想有这么几条,一个是微软MR头盔主要对外的连接只有一根电缆,没有多余的一些相关的边上的外围的传感器,基本上只有一根电缆,然后和电脑、PC连接就可以了。
第二就是可以看到,它的主要的分辨率还是挺高的,还有就是FOV,因为刚才有嘉宾提出来,HOLO的极限视角相对来说比较狭窄一些,所以很多的开发者、公司给我们反馈,这个使用起来可能有一些限制,对于沉浸感的头戴设备,FOV也是达到95度,这和业界基本上标准是完全匹配的,所以简单给大家介绍一下。
下面,说一下第二个问题,为什么微软的混合现实平台是比较好的,或者是比较有优势的,这边儿有六张图,说了六点,第一是佩戴完了以后移动非常自由,HOLO本身就是独立运算的设备,和手机的使用过程是完全一样的,这没有任何的限制。然后就是沉浸感头戴,因为这也是没有外围的一些传感器的限制,所以使用起来也不会受传感器的范围的限制,所以相对来说移动跟目前市面上的VR产品相比也是比较自由的。第二就是下面的图,还有就是整个设备的设置非常容易,这和手机一样没有配置方面的成本,把HOLO打开也是一个自带系统,打开之后直接使用就可以了,不需要安装什么东西。沉浸感头戴也是一样的,基本上就是一根线接到PC就可以了,也没有其他的传感器的搭建的繁琐的过程,所以使用起来非常容易。因为我们现在也是发宏基的开发套件,开发者拿到第一个反馈就是特别轻,这是非常容易使用的一个方面,头盔的重量真的非常轻,有机会的话大家可以试戴一下,戴在头上应该非常的舒服。
然后第三,我们微软推的东西基本上都是以平台级别推出的,所以对外特别是一些UI、用户体验的界面方面,HOLO和MR的沉浸感头戴产品完全一样,不管你是什么OEM厂商提供的头盔,真的使用起来里面的体验完全是一样的,包括HOLO和沉浸感体验都是一样的。
然后从开发的角度,因为是平台级别的支持,我们提供一套MR的SDK,对于开发者来说,写好这个代码以后,直接在这个厂商上面可以运行,在另外一个厂商戴的头盔仍然可以运行,没有迁移的成本。
第五个优点,因为我们OEM厂商很多,所以产生的头盔样子各种各样,同时价格也是有高有低,所以这个非常方便于开发者或者是消费者,可以根据自己的经济实力去选购适合于自身的产品。
第六,大家从软件资源角度,MR的产品我们通过WIN 10的商店发布,所以从这个角度来说,大家可以看到我们会有非常多的一些产品在我们的MR平台上去涌现,当然我们也欢迎开发者去尝试我们的平台。
下面重点说一下怎么开发,可能偏程序员内容方面。
第一个说一下UWP,微软的MR平台架构到WIN 10平台之上,它最重要的推出平台的原因,或者是优势就是保证一套代码运行支持这套平台上所有的硬件家族当中,大家可以看到最上面,我们在推出之出就把HOLO放在上面,所以在推出之初可以看到MR平台就属于硬件家族的一员,所以开发的应用当中,完全和之前的UWP开发的概念好处都是共享的。
第二个就是看一下官网,如果你要做开发,你只要访问aka.ms/mr就可以了,比如你想申请做MR的开发者,就/want MR就可以了,论坛里面有四块内容,第一部分是学院,基本上提供了在线的课程,帮助你做开发的工作,基本上都是在线的,然后课件都是开源的。第二部分就是设计,因为你会发现官方的一些应用,包括在HOLO里面,包括设计菜单你都非常的喜欢,如果你想学习,在应用里面也想用,你可以到这里面去找,这里面也有一些开源的资源提供。第三部分就是开发方面的文档,这里面的内容非常多,基本上看现在已经超过200篇文章,牵扯到API介绍、硬件方面的介绍,包括MR的概念介绍等等。最后有一个社区和一个在线支持,如果开发遇到问题,直接到里面访问就可以了。
下面说一下开发的环境,因为MR平台我们是包括沉浸感头戴和HOLOLens的,然后说一下硬件,可以看到因为沉浸感头戴设备毕竟也是需要一个PC帮它做渲染的设备,从PC的角度来说,总体来说比目前市面上的一些VR产品比PC要求更低,因为微软提出的概念希望越来越多的人能够享受MR给大家的体验,所以把硬件的准入门坎拉的不是很高,主要的硬件分为两大块,一个是普通PC,另外一个就是ULTRA PC,如果是做一些360度视频,主要是用在这的内容,配一个普通PC就可以了,包括开发者也是一样的,如果你想玩一个VR类似沉浸感的游戏,对3D部分比较高的话,就用ULTRA PC,显卡基本上是960左右,所以从这个方面来说,这个机器是保证90帧/秒的开发环境。
然后就是微软的设备门户工具,这主要装了WIN 10,工具就已经默认在里面了,这个工具是和HOLOLens一样,在WIN 10的设置里面,把开发者里面把这个功能打开,下面会给你一个IP连接地址,随便找一个浏览器把IP地址放进去就可以打开这个功能,然后打开就有一大串树状结构,比如可以显示CPU的运行时间、网络使用情况等等,如果开发的话,对设备本身做一个监控,特别是出问题的一些文件、文档的获取,包括性能的内容用这个工具来说是非常有用。
下面的一些连接,大家可以官方文档有的,都是对工具的详细说明
第二说一下MR的内容,比如更新到最新的创意者更新,现在是秋季创意者更新版本以后,找一下右上角的小图标,进去以后就可以把MR的工具打开,所有MR的应用都是在门户应用启动的,这个门户的作用,我列了一下,有一个准入门坎,可以告诉你适合运行我们的MR的应用,先有一个判断,然后又一个环境测试,基本上把测试的环境分为两大类,一个是人是不动的,只有头是不动的,但是人基本不动。第二就是人会动,如果人动,需要给MR的环境指定大概活动的范围,如果人超出这个范围,在应用里面会给你一些提示。第三,这当然是一个门户,第四是自己还提供一套模拟器,如果我要买沉浸感头戴,至少有一个头盔,还要有手柄,如果没有的话,如果想开发,可以通过MR工具里面把模拟的按纽打开,就可以去用PC屏幕和手柄来模拟MR应用的操控。
这个是MR家,它的样子感觉像家一样,就是进入这个MR应用之后,展现在眼前的就是完全VR状态的一个家的3D场景,里面开发的应用或者是已经买到的一些VR的应用,都会在这样一个初始菜单里面点开,然后把应用直接放在虚拟家的场景上,使用效果和HOLOLens是完全一样的,只不过里面变成了一个房间,默认了一些官方的应用自动的放在这个房间的周围。
这就是刚才说的里面能够提供的MR的模拟器,比如我没有买头戴,可以把头戴的选项在ON这边儿,这样屏幕就是头戴,然后输出的话,会自动的输出,下面是按键的组合,比如没有买手柄,我可以非常精确的模拟有手柄的情况,下面是一些按键对应的按键图,刚才几个介绍了一下开发的工具,下面说一下MR应用的发布,如果大家不是开发者,我讲的稍微的快一些。第一个总体的发布和之前UWP的发布是完全一样的,包括在开发者中心里面给应用定名字,包括在这里面把相关的一些信息和自己开发的应用做相应的绑定,包括在这个地方发布好了应用之后可以启动我们称之为APP的程序,是不是符合商城里面的规定做一个离线的本地的检测,如果应用被认为符合我们的商店规定的要求,这个应用才可以发布到我们的商店里面,发布的时候也很容易,只要启动一个模式就可以启动了。
在这里面有几个方面,比如在商店的设置里面可能有一些选项要注意一下,如果发布的是头戴设备,注意在这里面一定要选择的是PC不能选择HOLOLens,开发者很容易搞错,认为我发布了一个沉浸感的应用,是不是应该选择HOLOLens,这是不对的,因为这个应用最终还是发布在PC端,虽然是VR,但是靠PC去运行,所以在这边儿依旧要选择的是PC。然后要注意,发布的时候,一定要选择这个应用是需要MR,一定要钩选,如果不选的话,和普通的应用就没有什么区别了,消费者进来之后,就有可能买了这个应用,然后又没有头戴,然后就发现这个应用跑起来之后没有办法跑,或者是没有VR的体验,然后就会在这个应用下面给差评,所以发布的时候一定要注意,应用所需要运行的和MR相关的硬件设备一定要钩选。
然后有一个硬件家族,如果发布HOLOLens的应用,要在WIN 10上一定要钩选。下面说一下开发,大家知道一个MR的应用和我们普通的3D程序或者是2D程序最主要的区别,大家可以看到左边这张表,会有这样几个重大的区别,一个就是交互,因为不管HOLOLens还是MR设备最重要支持三类交互,一个是凝视,眼睛看,因为眼睛看哪里,应用对消费者眼睛看的方向做出一个反馈,所以凝视操作非常重要,第二就是手势操作,微软这边儿因为配了深度摄像头之后是支持手势的,第三就是全语音,是能够支持语音输入的,在三块里面,考虑成本关系,是没有配深度摄像头的,所以沉浸感头戴设备是不支持手势的。接下来就是对于外设。对于动作传感器,稍候会给大家看到,类似于HTC的手柄,这个给沉浸感头戴设备的,还有三个,上面几个和交互有关,下面就是和空间相关,因为HOLOLens是一个MR设备,和现实设备混合的设备,刚才有嘉宾说了,包括坐标,我们是需要去对坐标的,所以在这边儿有三个和空间相关的元素,一个是空间坐标系,然后就是空间映射,所以这三个也是跟常规的应用开发所不同的。
右边说一下,我们现在对这个平台开发的一些准备情况,大致可以理解一下这个平台目前为止基本上开发的过程是完善的,特别是这个月10月17号秋季更新版本结束之后。
这是MRTK,这是针对开发者的开发套件,目前做了比较大的版本更新以后,简称叫MRTK,下面包含了很多的模块,会发现这样一些东西跟我刚才说的开发的几大模块其实是配套的,也就是说如果自己用这个开发当然要处理几大模块的事情,对于不熟悉模块的话,开发有一定的学习门坎,所以如何简单的上手,微软这边儿有一个开源的MRTK的项目,里面提供很多现有的模块直接拿这个用就可以了,也可以学习这个模块,看一下到底怎么开发,然后学习一下,然后自己去把相应的模块去做一定的完善,做一些提高以后,然后用到自己的项目里面去,相当于是非常快速上手的非常好的工具。当然每个模块里面的功能针对于我刚才说的交互或者是几个空间相关的内容,可以看到在里面都相应可以提供。这有一张表,也是非常技术,主要是讲一下刚才说的几大模块,如果我要调用相应的API,大概会牵扯到什么API可以调用,比如MRTK里面需要调用什么模块。
下面说一下Motion controller的事情,周围的灯大家不要以为是视频做的一个绚的效果,真的有一圈灯在周围,点亮以后是非常的漂亮,当然目前为止大家如果有兴趣的话,可能大家都已经看到这样一些手柄,微软总部正在对手柄的驱动做相应的更新,将来它的定位精度包括识别和环境感知的功能,应该来说要比现在的版本有极大的提升,会大大超过HTC手柄的精度,从开发的角度也是简单说一下,基本上有三种交互的方法,如果用Unity的话,比如我想做一套代码,所有的VR平台都想对应,这肯定是用到Unity等函数,这里面的一些应用在Motion Controller里面也是可以用的。
第二,如果这个代码特别是定制化在Motion Controller上面的话,你就可以用它更多的方法,主要是给大家提供了两个,可以看到Unity是左右两个方法,大家如果做过手柄,大家觉得中段是非常主要的方法,手柄介绍的一个消息,就会做一个函数,右边这个是一个轮询,每时每刻都会查Motion Controller的状态,中段相对来说比较高效,但是获得的信息比较少,同时精度方面稍微差一点,轮询要求精度高一些,但是每时每刻都要做查询这件事情,所以对于CPU、应用来说占用比较高一些,对性能方面有一定的损失,所以这两个方法大家能够注意。
最后说一下优化方面的问题,我这边儿列了一张表,和大家说一下。
不管做HOLOLens还是沉浸感头戴设备应用,任何对于VR类技术的应用,对于MR应用来说完全都是实用的,毕竟都是3D类的程序,比如常规的一些优化的方法,比如降低折扣的数量,比如使用不同的LED的等级等裁减的技术等,我们是不推荐大家使用动态光影处理的,应该用欲渲染的方法去做,目的就是为了大家能够有一个更好的对外表现的应用的效果。