所谓 AR(Augmented Reality), 即加强事实,是一种将通过计算机渲染出的虚构图像与真实世界奇妙交融的伎俩,背地宽泛使用了多媒体、三维建模、实时跟踪、智能交互、传感等多种计算机技术,将程序代码生成的文字、图像、三维模型、音乐、视频等虚构信息模仿仿真后,显示在终端用户通过挪动设施的摄像头察看到的真实世界中,虚构和实在的两种世界互为补充,从而让终端用户感触到真实世界被“加强”的体验。
前端开发者的一个福音,就是现在咱们能够仅仅凭借 JavaScript 技能,就能开发一个反对加强实现的挪动利用了。应用的工具是 React-Native + ViroReact.
React-Native 在国内早已不是一个新技术了。辨别于另一种通过 JavaScript 语言开发挪动利用的 Cordova 开源我的项目,React Native 产出的并不是运行在挪动设施操作系统的 WebView 控件里这种混合利用,而是一个真正的原生挪动利用,所应用的根底 UI 组件和原生利用完全一致。从用户体验上来说,React-Native 打包而成的原生利用给终端用户的应用感触同用 Objective-C 或 Java 编写的原生利用相比简直无奈辨别。
ViroReact, 是基于 React-Native 的一个开发库,给 React-Native 的开发人员提供了一种通过 JavaScript 语言开发跨平台的反对 AR 的原生挪动利用的伎俩。
官网:https://docs.viromedia.com/do…
只管在 React-Native 我的项目里引入 ViroReact 的依赖只须要一行代码,但这只是冰山一角:
咱们关上一个申明了如上依赖的 React-Native 利用,npm install 装置依赖后,在 node_modules 文件夹上面能看见 ViroReact 的实现。
ViroReact 官网里宣称的“一次编写,到处运行“的个性也体现在这:ViroReact 提供了一个跨 iOS 和 Android 平台的高性能 3D 渲染引擎,别离基于 iOS 的 ARKit 和 Android 的 ARCore.
Viro 渲染器可能在挪动设施上以原生形式运行,从而获得最佳性能。它反对基于物理的渲染 (PBR)、高动静范畴 (HDR) 以及实时照明和暗影,确保开发人员可能创立出令人惊叹的加强事实场景。应用 Viro 的物理引擎还能为开发对象增加真实世界的力学成果,其提供的全功能粒子系统容许烟雾、火焰等特效的渲染。
Viro 平台提供了一系列大型组件,开发人员能够利用这些组件来构建 JavaScript 利用的 AR 体验。与传统的 3D 渲染和 VR 相比,AR 的亮点在于响应用户的事实世界所发动的交互申请。
本文着重介绍 ARCore.
在 ViroReact 库文件夹下的 android 子文件夹内,咱们看到了名为 arcore 的文件夹。那么要应用 ViroReact,咱们得先理解 ARCore 是个什么货色。
ARCore 是 Google 为 Android 提供的开发 AR 原生利用的一个平台, 以 SDK 的形式,为开发者提供了 AR 利用必须的三大性能:
- Motion Tracking – 静止跟踪
- Environmental understanding – 环境辨认
- Light estimation – 光源估算
Motion Tracking
当咱们挪动 Android 手机时,ARCore 应用一个称为 COM(Concurrent Odometry & Mapping,并行测距映射)的过程,联合手机硬件传感器,来确定手机在真实世界的精确地位和姿态。当真实世界的风物呈现在手机摄像头里并产生位移变动后,ARCore 应用一系列算法标注出图像上的特色点,并基于这些特色点来计算地位的变动。
大家看视频中在摄像头里显示的特斯拉汽车,能发现随着手机地位的变动,汽车在摄像头里显示的 3D 形象也随之变动,好像是一个存在于真实世界中的物体一样。这种成果就是 ARCore 的功绩:手机摄像头捕捉到的视觉信息,联合手机设施中惯性测量单元 (Inertial Measurement Unit,简称 IMU,由三个单轴的加速度计和三个单轴的陀螺仪组成) 测量出的惯性测量值进行综合计算,就能渲染出摄像头内的虚构物体,并确保随着时间推移和手机的位移变动,在事实世界中地位和朝向也能跟着变动的成果。
Environmental understanding – 环境辨认
一系列呈现在摄像头中的真实世界里水平面或者垂直面 (比方桌子外表或者墙壁) 上的特色点,都是 ARCore 试图辨认环境的输出。ARCore 以这些特色点为输出,辨认出真实世界的立体和边界信息之后,就能容许开发者通过编程的形式,在这些辨认出的平台上搁置一些虚构物体。
Light estimation – 光源估算
咱们在摄像头里察看到的真实世界的所有物体,无不被各种强弱各异的光线所笼罩,从而造成灰度不一的暗影成果。如果通过代码投射到真实世界里的虚构物体,不反对这种被光源照耀的暗影成果,则虚构物体的真切水平会大打折扣。
好消息是,ARCore 具备探测实在环境下的光照信息,开发者能够通过 ARCore 捕捉到呈现在摄像头里的真实世界的均匀光照强度,从而将这些光照信息投射给虚构物体,进一步减少其真实感。
一个 SDK 就反对这么多弱小的性能,谷歌不愧是谷歌啊!
反对 ARCore 的 Android 手机型号列表,能够从 Google 官网取得:
https://developers.google.com…
在三星利用商店或者腾讯利用包里搜寻 ARCore 并下载:
装置之后,咱们就能够开始用 ViroReact 进行利用开发了。
总结
本文首先介绍了加强事实开发畛域所须要理解的一些最根底的概念和术语,接着介绍了 ViroReact 这个 AR 开发库的跨平台工作个性,并介绍了其开发环境的搭建和配置步骤。本系列下一篇文章,会具体介绍如何应用 ViroReact 进行利用开发。