W3C

Web 中文兴趣组会议

2022年9月6日

题目:WebXR 的实践与展望

讲者:张浩(华为)[演示文稿]

现场纪要

张浩:

大家好!华为在XR领域目前有两个产品,第一个是我们业内首先量产的基于Pancake超短焦光学技术的VR Glass,大家知道业内的VR产品都是HMD头盔形态,而华为的VR产品是眼镜形态,支持0~700度近视调节,同时具备很高的PPI。在VR Glass基础上,华为推出了6DoF套件,支持Inside-out的6DoF头部跟踪和6DoF手柄跟踪,精度小于10毫米。

第二个产品是华为AR Engine,和苹果的ARKit、谷歌的ARCore一样,是一个包含多种AR算法的手机AR开放平台,目前我们在国内的覆盖设备基数最大,我们的AR引擎是18年推出,到现在四五年,接入的三方应用超过了3000,目前主要是原生开发和基于游戏引擎的跨平台开发两种方式,Web XR现在业内有很多进展,所以我们也在向WebXR生态靠拢。

手机上这套AR引擎,之前主要是对应用开发者免费开放,目前也对于OEM设备厂商授权开放,也就是说不管是其他的手机还是眼镜设备都可以和我们进行合作,除了AR算法引擎以外,还包含了开发框架、开发工具以及后续的格式标准、相应的云服务都是对外开放的。

下面重点讲讲今天的主题WebXR,为什么需要WebXR?大家都知道Web对开发者非常友好,一次开发可以多端运行,不受平台限制,而且对使用者来说即点即用。众所周知,Web在PC互联网时代是巅峰期,通过搜索引擎作为入口取得了绝对的生态统治力。到了移动互联网的上半场,由于交互方式的变化导致流量入口的转移,Web一度有些衰落,但到了移动互联网的下半场,以二维码为介质打通线上线下,以及社交软件的链接分享,Web又重新焕发了生命力,特别是小程序出现之后,解决了Web应用和原生应用体验上的差距,通过页面模板和数据的分离部署,使得基于Web技术开发的小程序基本达到原生应用的体验。

但是XR时代,在XR之下,它的触发方式会更加多种多样,会基于图像或者位置,或者多人协同。大家都在讨论Web3,Web3有个很大的特点,就是一个新的数字实体,可能是由个人来创作的,或者Web3下面或者元宇宙下面很可能消费者和开发者的身份会变得模糊,就是每个人都能在Web3的世界或者元宇宙世界,大家既作为开发者,也作为一个消费者同时存在,大量新创造出来的内容是由个人掌握的。大家在一起协同的时候,就是直接拿出来分享。这种情况下内容可能没有服务器的缓存来支撑,或者说是去中心化的形式,而且也没法做到提前下载,所以在XR的场景下,我们认为和Web即点即用、自由发布和跨平台的特性有更多的契合点。因此基于XR,我们畅想的元宇宙或者Web3时代,我们认为WebXR有更大发展前景。

我们也总结了一下业界在于WebXR技术路径上的探索!大家看到比较多的是基于纯前端的实现,也就是说把感知交互的算法和渲染放到了前端,用JS来实现。那这种实现方式的好处就是通用性非常好,不依赖与系统和浏览器的引擎,当然它会带来前端的应用本身过大,它里面内置的算法和3D引擎会导致加载时间比较长!另外就是JS的性能问题,当然现在可能有WebAssembly的方式帮助它,因为WebXR对AI有一些诉求,可能也会用到标准正在制定中的WebNN,这些标准对前端性能提升有一些帮助,但是大家知道Slam对设备标定有要求,纯前端的方式标定的工作比较难做。

但是,基于前端也可以看到跨平台的方式比较有好处,在目前小程序的场景下都有一些Web前端的做法。国际、国内上都有比较知名的企业在做一些前端的方式,我们认为这对于教育用户、对于推广WebXR是非常好的方式。

另外一种是浏览器引擎当中实现,主要是把感知和交互方面的算法能力下沉到浏览器引擎当中,它相对纯前端实现性能会有一定的提升,同样有一个问题,目前它没法把芯片的定制能力用上,通常使用的是CPU或者GPU的通用能力,对于芯片比如有NPU这种情况,现在还没有办法很好的利用。同样的问题就是SLAM算法标定上,也没有办法得到很好的解决。早期的时候像Google推出的Cardorad VR就是在浏览器当中实现的场景,但是在浏览器引擎当中实现的方式,对于推广现在定义的WebXR Devices API还是很好的方式,因为它可以很好的普及。

我们可以看到第三种路径把算法直接下沉到设备上,设备上可以把各种性能、精度跟硬件做到更好的适配,但是这种情况目前特别在手机上具备感知算法的设备并不是特别多,我们知道像苹果的设备基本上都是AR,国内主要是华为的设备上是有AR 引擎的预装。

目前,这种路径Google已经基于Chrome+ARCore支持了WebXR Device API,苹果方面也看到WebKit社区已经有一些进展,预计也会支持;目前如果要在iOS上要用起来,可以通过Mozilla开发的WebXR Viewer进行体验。

所以,我们觉得这方面还是需要更多厂商一起来推进。目前,在设备能力覆盖面还不是特别大的情况下,浏览器引擎或者浏览器的厂商愿意通过浏览器支持的方式把WebXR Device API尽快推向市场,对开发者来说会更友好一些!

刚才讲的是手机AR的方向,VR方面,Chrome 已经基于OpenXR和PCVR做了打通,部分设备厂商也通过合作或者自研的方式实现了对WebVR的支持!前面提到华为的VR Glass,已经和igalia进行合作,上线了Wolvic for 华为VR Glass 3DoF和6DoF的版本,但是,目前主要是上架在华为海外应用市场,在国内还有一些合规的问题无法上架!

另外,对于华为手机上的AR引擎和Browser结合来支持WebXR Device API,我们也有了一些进展,可能到11月会有一个正式发布。

还有基于扩展Tag形式,苹果谷歌MagicLeap和华为之前都有过一些探索,就是在网页上新增加一些标签,用户点击标签所代表的3D模型或者是图片之后,会跳转到本地原生的页面或者原生的应用做AR展示,这也主要是在AR的场景下。现在各个厂商都在推自己的标签,没有通用,苹果在W3C已经推了一个model标签,我们也比较认可,如果用这个标签可以在各自的设备上通过跳转到原生应用或者页面来进行AR内容展示。

前面讲的三种路径都是感知交互的算法,从前端到浏览器引擎再到设备的OS上不断下沉,让它的性能、精度能够进一步提高。但是,对WebXR来讲还有一个需求,就是3D渲染,大家熟悉前端渲染引擎例如Three.js,Babylon.js等,但是如果渲染也下沉到浏览器引擎,在性能方面会有更好的提升。

基于这种情况,我们对WebXR进行了展望。目前WebXR的场景,可以看到基于WebXR Device API实现的WebXR,实际上是在HTML上拿出一个Canvas跑WebXR的接口加上前端的3D渲染引擎;而我们说的第四种模式,在HTML上增加一个标签,在HTML当中进行展示,XR展示的时候还是跳转到本地原生展示,这两种方式都还是寄生在HTML上的。现在在WebXR Device API中有一个DOM Overlay模式,可以实现XR下与2D元素的互操作,但是,我们认为这还不够彻底。我们认为3D的东西集成在2D上并不合适,我们认为既然进入了3D时代,应该以3D为基础,可以在3D的基础上展示2D的元素,而不是2D上展示3D,这种模式不太合适。所以我们会讲进一步沉浸式的Web,就是我们要设计一种全新的XR和3D的描述语言,这种描述语言下,它和HTML是并列的关系,之前提到的3D渲染可以下沉到浏览器引擎当中,包括场景框架,都可以下沉到浏览器的引擎当中,让它成为和HTML并列的渲染引擎。在脚本引擎方面可以继续沿用JS的脚本引擎,让Web开发者可以平滑移到3D场景下。

3D和2D相比,3D和XR描述的是一种实体,和DOM不同并没有严格的树状的关系,它支持元素和元素之间的互操作性,这是以DOM文档结构为基础的HTML很难实现的,所以下一代我们希望会有进一步沉浸式的Web。

在这方面,包括像苹果以及业内先驱Web3D联盟早期就已经在格式方面做过一些探索,例如Web3D联盟制订的VRML/X3D标准,也包括苹果的USD格式。前段时间看到网络上的新闻,英伟达也提出希望USD成为与HTML并列的web标准,我们也希望沉浸式Web成为开放元宇宙的标准,所以华为也进行了一些探索,提出了一些我们自己的想法。

我们自己制定了Reality Scene Description Zip,我们希望它基于ECS框架支持3D元素的互操作性,同时支持物理引擎。之前的3D格式主要还是用于GPU渲染,更多是基于渲染属性的描述,对于物理以及其他考虑并不是太多,但是如果要考虑到元素和元素之间互动、互相操作性的话,对于物理引擎的一些属性,也应该支持。比如一个物体的质量是多少、弹性系数是多少,这样就可以直接把它实现了!

另外,在脚本语言方面,我们还是希望延续在Web世界里大家一直在沿用的JS这套脚本语言,同时我们还希望它能支持2D的一些控件,也就是说在3D里兼容一些2D的操作。

这是我们对未来沉浸式WebXR的展望,在未来WebXR和元宇宙的场景下,我们认为会有三种生态并存。一种是基于游戏引擎跨平台的生态,这种生态应用要自带一个游戏引擎,它本身的包体比较大,主要支持重型场景的独立应用。一种是基于原生的XR生态,有更高的性能,但原生XR生态上可能会在跨平台上受到限制,适合开发工具类应用。另外一种就是基于Web的生态,Web是所有的操作系统都支持的公开的标准,它的引擎会在操作系统中自包含,这个基础上,沉浸式Web的生态就可以看到它有跨平台、轻量化、支持跨设备跨OS的互操作性的特点,特别适合作为Web3或者开放元宇宙的基础。

所以,我们认为如果在Web上发展出了下一步的XR或者3D场景的描述格式,往这个方向走,它在MetaVeser和Web3.0时代可能会有更大的发展潜力。

目前业界已经成立了一个元宇宙标准论坛,包括W3C、Khronos等各种标准组织都在里面,我们希望各个标准组织进一步合作,让OpenXR、WebXR等标准可以尽快拉通,设备层和前端可以尽快对齐。因为现在大家的方向还不一致,下面的标准和上面的标准还没有办法一一对应上,开发起来还是有很多困难。另外就是刚才讲的沉浸式Web相关的3D/XR内容格式标准制订可以尽快启动。

谢谢大家!


返回[会议总结页面]获取其他话题的会议纪要。

若您对上述内容有任何疑问或需进一步协助,请联系:讲者张浩 <zhanghao101@huawei.com> 或会议主办方 W3C 北航总部 <team-beihang-events@w3.org>。