AR/VR
AR:Augmented Reality,即增强现实技术。在屏幕上把虚拟世界套在现实世界并进行互动(利用电脑技术将虚拟的信息叠加到真实世界),通过手机、平板电脑等设备显示出来,加强视觉效果和互动体验感。常见应用比如手机扫红包,PokemonGoAR(利用手机摄像头,扫描现实世界的物体,通过图像识别技术在手机上显示相对应的图片、音视频、3D模型等)
AR的三大技术要点:三维注册(跟踪注册技术)、虚拟现实融合显示、人机交互。
AR常见SDK
Vuforia:支持的平台:Android,iOS,UWP和Unity Editor。开发人员可以轻松地为任何应用程序添加先进的计算机视觉功能,使其能够识别图像和对象,或重建现实世界中的环境。
HiAR:支持平面识别、3D识别、空间建模、人脸增强和姿态跟踪。HiAR云平台是国内首款AR云,支持亿级图库秒级搜索,识别准确率高达96%,是国内AR平台中准确率最高、响应速度最快、识别图库最大的AR云。迄今为止,HiAR已成为全球用户量最多的AR开发平台之一,覆盖用户超过8亿,三星、腾讯、百度、华为、OPPO、大疆、搜狐等企业均在HiAR获取AR技术支持与服务。
Wikitude:iOS,Android,Windows Phone和Blackberry创建增强现实WebAPP(包括移动版)。
ARToolKit:iOS,Android,Windows,Linux,SGI和MAC OS X创建基于标记的WebAPP。该框架的功能包括处理2D和3D图像,以及与GLUT库一起完全支持OpenGL规范。
D'Fusion:Android,iOS,Flash和Windows,开发环境的功能包括识别运动和复杂元素,如眼睛和嘴唇的形状,跨平台支持,D'FusionCV渲染器,同时识别多个标记,使用多达500个预定义标记,此外,由于其直观的图形界面,D'Fusion对初学者来说非常方便。
ARmedia:iOS,Android,Windows和Flash,该框架允许处理通过GPS,陀螺仪,加速度计和磁力计获得的数据,并采用市场上最强大的3D跟踪器之一。Inglobe Technologies创建的类似跟踪器广泛用于智能眼镜软件的开发。ARmedia最值得注意的优势之一是通过云提供框架的服务和管理功能。
AR.js:是一款应用于 Web 的高效增强现实(AR)库,基于 three.js + jsartoolkit5,无需安装。它适用于任何带有 webgl 和 webrtc 的手机,且运行速度非常快,在手机上也能高效运行,包括 Android、IOS 和 Windows phone 。
Lullaby:是 Google 为 AR/VR 开发而推出的高性能 C++ 开源库,支持完整的 3D VR 环境,包括几何世界、全景图像和空间音频。它可实现高效的 runtime 性能,是由数据驱动的开发工具,可进行快速迭代。基于 Java API ,可与现有的安卓应用集成,支持 Cardboard/Daydream 头显、DaydreamVR 控制器和 VR 键盘,适用于 Android、iOS、Linux、Windows。
A-Frame:是 Mozilla 开源的网页虚拟现实体验( WebVR )框架,旨在让创建 WebVR 体验变得更简单。它可在移动、桌面、Vive 和 Rift 在内的平台上运行,跨平台处理 3D 和 WebVR 模板。A-Frame 被设计成 Web 开发者很熟悉的模样,HTML 代码易于阅读和复制粘贴。
ARTetris:是一款用 ARKit/SceneKit 实现的 iOS 增强现实版俄罗斯方块游戏,和目前 iOS 11 的 App Store 里的 AR 游戏一样,要求具有 A9 及以上的芯片的设备。开始游戏之前,需找到水平面,如地板、桌面等。
React VR:是 Facebook 开源的一款用于构建在 Web 浏览器中运行的 VR 应用的框架,使用与 React 相同的设计,让您通过声明式的组件构建丰富的 VR 世界和 UI。它将现代 API(例如 WebGL 和 WebVR)与 React 的声明能力结合起来,通过各种设备提供适用于消费者的体验。
IdeaSpace:是一款用于虚拟现实网页的 CMS 内容管理系统。可以像管理博客一样管理你的虚拟现实空间和资源。IdeaSpace 使用前面提到的 A-Frame 来实现主题和空间,提供强大的遵循 Web 标准的标识语言。可通过 Oculus Rift 或者 Google Cardboard 在浏览器上方便体验虚拟现实空间,无需安装插件和应用。
开发步骤
1.获取相机图像
2.特征匹配(实时获取的图像和预存的marker)
3.根据匹配结果估计相机位姿
4.通过非线性优化的方法优化位姿
5.通过求解出的相机位姿矩阵和内参矩阵
6.通过OpenGL渲染虚拟物体到正确的位置。
简单实践(Xcode+ios+ARKit+3D场景Scenekt+swift语言)
核心类
ARSCNView:显示AR体验的视图,通过3D SceneKit内容增强了相机视图。
ARWorldTrackingSessionConfiguration: 会话配置类,在配置类对象里设置会话如何将真实的设备运动映射到3D场景的坐标系统里,这里默认是使用重力。
SCNScene: SceneKit内容的容器. 你可以从3D建模工具生成的文件中加载一个场景,或者用代码创建一个 ,然后把它显示在视图上。
VR:Virtual Reality,即虚拟现实技术,又称灵境技术,具有沉浸性、交互性和构想性特征。VR技术集合了计算机图形学、仿真技术、多媒体技术、人工智能技术、计算机网络技术、并行处理技术和多传感器技术等多种技术,模拟人的视觉、听觉、触觉等感觉器官的功能,使人恍若身临其境,沉浸在计算机生成的虚拟世界中,并能通过语言、手势等进行实时交流,增强进入感和沉浸感。通过VR技术,让人在感受真实世界逼真的同时,还能突破时空等条件限制,感受到进入虚拟世界的奇妙体验。VR技术的应用十分广泛,如宇航员利用VR仿真技术进行训练;建筑师将图纸制作成三维虚拟建筑物,方便体验与修改;房地产商让客户能身临其境地参观房屋;娱乐业制作的虚拟舞台场景等等。
MR:Mix reality,混合现实技术,通过全息图,将现实环境与虚拟环境相互混合,也可以看成是VR与AR的混合。
参考资料:
《AR与VR开发实战》