鉴于Web技术的最新进展,它在开发基于AR的解决方案时提供了一组新的选项。Web浏览器的最新更新为AR应用程序打开了大门。使用网络或本机应用程序构建AR体验哪个更好?在这篇文章中,我将简要概述JS在原生应用世界中的使用,然后我将深入探讨WebAR是什么、它是如何工作的、它如何与原生应用竞争,以及哪个是更好的解决方案。以下内容由公众号赞助:AIRX社区(国内领先的AI、AR、VR技术学习交流平台)相信大家已经通过之前的一篇文章介绍了WebAR:WebAR的实现与应用介绍。本文主要详细介绍WebAR与原生AR的区别。JS在应用端扮演什么角色?Javascript无处不在,包括嵌入在本机应用程序中。使用JS代码执行C++代码的能力使Blippar、Zappar、Facebook、Snapchat和其他此类平台能够让开发人员更好地控制他们的AR体验。JS有很多吸引人的特性,但最值得注意的是Java语言是iOS和Android原生的。为了提供有关JS和C++如何协同工作的上下文和详细信息,我将使用Blippar的移动SDK作为示例。BlipparSDK的核心是一个基于C++的OpenGL渲染引擎,它使该应用程序在跨平台时更具成本效益。Blippar的JavascriptAPI允许第三方开发人员使用JS控制底层引擎,但获得了C++的所有响应能力,并为用户提供原生效果。所有上述SDK/API都早于ARKit和ARCore。每个平台现在都有原生实现,ViroMedia创建了一个React插件,可以实现原生和跨平台AR开发。当我们讨论使用Java的AR平台时,我们不能忽视亚马逊。亚马逊推出了Sumerian平台,旨在弥合创作者/出版商职位之间的差距。Amazon在AWS之上构建了自己的XR渲染引擎和Studio。允许用户在AWS基础设施的所有支持下扩展他们的游戏/应用程序/体验。显然,这是亚马逊吸引新开发人员并留住现有客户在其平台上构建的一种方式。这里有几点需要注意,对于后端和架构师来说,这表明亚马逊看到了一个清晰的平台。对于前端人员,SomerianStudio都是基于网络的,脚本编写都是使用基于Javascript的API完成的。Adobe是创作者领域的另一个强大参与者,他们的ProjectAero处于私人测试阶段,使创作者能够使用USDZ格式。我们不能谈论所有这些,更不用说Sketchfab了。最初是3D艺术家用来上传和展示他们作品的存储库,现在已经发展成为一个带有API的市场,以及一个支持ARKit的iOS应用程序,允许用户将3D模型放置在他们的世界中。随着AR和VR越来越流行,Sketchfab是一家值得关注的公司。什么是WebAR?WebAR不仅仅是AR的一个子集,它还是一个涵盖许多不同实现的总称。WebAR解决方案的范围从使用设备的陀螺仪/加速计传感器作为背景和相机输入到更复杂的解决方案,如AR.js、TensorFlowJS和USDZ。从根本上说,AR是使用移动设备的传感器来跟踪其在增强场景中的位置。在过去的几年中,移动浏览器增加了对JS传感器API的支持,例如相机、陀螺仪、加速度计、方向、磁力计(阅读:指南针)。使用这些传感器,开发人员可以创造一系列体验。Blippar是首批推出带横幅广告的浏览器内AR体验的公司之一;布局在AR背景下是一个相对较新的概念,但在推出时引起了不小的轰动。该广告是一种360?汽车内饰体验3,按钮重叠以在显示汽车细节之间切换。我问的第一个问题是它的响应速度如何?AR的计算成本很高,那么它如何在浏览器中运行呢?WebAssembly是一种Web标准,允许浏览器使用二进制文件执行汇编代码。WebAssembly文件是通过将C/C++编译成使用JS代码执行的.wasm文件来创建的。让我们考虑一下这里的含义。使用WebAssembly,可以在使用原始Javascript的Web浏览器中以接近本机的性能运行计算密集型操作。WebAssembly支持TensorFlowJS和ML5JS等项目。WebAssembly很酷,但只有WebAR的一半。WebAssembly完成了AR计算机视觉中的所有繁重工作,我们有用于渲染的webGL。WebAssembly和WebGL是基础,但我们如何使用这些API来创建基于Web的AR体验?输入AR.js,这是一个由JeromeEtienne编写的框架,它使用A-Frame(构建在Three.js之上)和JSARToolkit5(ARToolKit的脚本端口),还有一些其他WebAR框架,但大多数需要特殊的Web浏览器应用程序或使用专有API。AR.js是开源的,不需要任何特殊的应用程序,它在默认浏览器中运行。要讨论AR.js及其对WebAR的意义,有必要快速了解一下为该框架提供支持的组件。A-Frame是Three.js之上的基于JS的API框架,使其更像是具有实体-组件关系的游戏编码。这简化了Three.js的语法,让开发者可以专注于体验/游戏。然后,AR.js使用JSARToolkit将3D场景跟踪到标记,并利用计算机视觉检测特征点。这就是支持大多数早期基于应用程序的AR体验的原因。AR.js让移动网络踏入了大门,可以与基于应用程序的AR竞争。看看苹果和谷歌的努力,我们看到他们已经采取措施,使3D模型与各自的移动浏览器之间更深入的集成。让我们从Apple的.usdz文件格式开始。什么是USDZ,它是如何运作的?简而言之,Apple已将ARkit功能内置到iOS版Safari中。只需几行html和一个.usdz文件,任何网站都可以包含AR元素。
