AR视觉给移动生活带来的变革

作者 | 张辰,单位:中国移动智慧家庭运营中心

二道江网站建设公司创新互联,二道江网站设计制作,有大型网站制作公司丰富经验。已为二道江成百上千提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的二道江做网站的公司定做!

​Labs 导读

随着移动技术的发展,5G技术的普及,AR/VR行业也迎来了新的春天。由于AR/VR行业的应用,需要大数据量的计算、渲染、以及配套的硬件设备普及,所以为了让你我有更好的观感,对于硬件和软件的要求是非常高的。不过随着科技的发展,这一切都成为了可能,本文就带你了解一下AR/VR在移动开发中的一些技术方案。

Part 01  AR的开发技术难点 

在AR技术逐渐火热的今天,很多一线互联网公司都组件了自己的团队来开发独立的AR框架。以下是一些常见的AR技术平台和运营的公司。

那么AR的开发技术难点在哪里呢?

界面问题:缺乏通用的UI隐喻

尽管人们知道可以用AR做些什么,但并不确定如何使用这项突破性的技术,以及如何运用一种共通的语言帮助梦想照进现实。AR 的难点在于它是一项全新的技术,无法真正受益于任何界面隐喻。我们不能借鉴先例,而且没有过多的背景知识。比如,如何体现现实环境、虚拟环境、并让用户理解移动手机,扫描环境,互动或观看虚拟物体,并且提示行动避开危险等,都尚未形成共通的、直觉的 UI 习惯。如果无法解决UI的隐喻问题,就很难抓住 AR 为我们带来的独特数字机遇。

能耗问题:功耗大、易发热

目前市面上的CPU和GPU大部分都是为通用设备开发,并没有专有为AR设备开发的芯片,导致目前的CPU 尺寸(Size)虽然在微型化处理器和显卡方面取得了很大进展,但是仍然没有达到让高端 AR 成为现实的水平。

功耗(Power)渲染AR体验的过程非常耗电。事实上功耗越大,产生的热量也就越多,产生的这些热量又会反过来降低处理器的速度,甚至使其完全短路。设备越小,散热速度就越慢。

内容问题:3D设计门槛高

AR领域内容的设计需要3D设计的知识。目前,拥有这项能力的技术人员基数较小,除非是专业的动画师、平面设计师、机械工程师或视频游戏制作人,否则很难在这方面有太多经验。

Part 02  ArCore在Android端的应用

目前的这些方案是如何比较好地应用到移动开发中的呢?我们以ARCore举例来看下想要在移动端开发一个AR项目需要做哪些事情。

首先要明确的是平台基于Android,开发IDE基于Android Studio(需要 Android Studio 3.1 或更高版本以及 Android SDK Platform 7.0或更高版本)。其次我们要在需要运行AR工程的设备上安装Google Play,由于对于ARCore来讲,大部分的数据计算和算法运行都需要google_play_service支持,所以升级到最新版本Google_Play_Services_for_AR_1.31.0_x86_for_emulator.apk非常重要。

然后在你的AR项目中找到Manifest添加:











feature支持,并在gradle中导入ARCore支持:

implementation 'com.google.ar:core:1.31.0'

同步后在代码段中就可以添加对于ARCore的检查代码了:

 ArCoreApk.Availability availability = ArCoreApk.getInstance().checkAvailability(this);

即使“面向AR的Google Play服务”随AR必备应用一同安装,使用不受支持的设备的用户可能也可以从外部来源安装该服务。使用checkAvailability()检查是否支持ARCore可确保获得一致的体验。

checkAvailability()可能需要查询网络资源来确定设备是否支持 ARCore。在此期间,它将返回UNKNOWN_CHECKING。为了缩短感知延迟时间并减少弹出式窗口,应用应在其生命周期的早期阶段调用一次checkAvailability()以启动查询,并忽略返回值。这样,在调用 maybeEnableArButton() 时,缓存结果将立即可用。

由于AR设备必须用到相机,所以还请在使用AR设备前,请求并开启相机权限:

if (!CameraPermissionHelper.hasCameraPermission(this)) {
CameraPermissionHelper.requestCameraPermission(this);
return;
}

此时我们准备工作就做好了,就可以构建一个AR Session了。

Part 03 AR Client开发

AR Session 是所有AR流程的一个集合,(如运动跟踪、环境理解和光照估算等),在Android中用于管理 AR 系统状态并处理会话生命周期。官方提供的接口提供允许应用创建、配置、启动或停止会话的方法。最重要的是,它可以让应用接收允许访问相机图像和设备位置方向的帧。

下面我们来创建Session吧,几行代码就可以完成。

public void createSession() {
// Create a new ARCore session.
session = new Session(this);

// Create a session config.
Config config = new Config(session);

// Do feature-specific operations here, such as enabling depth or turning on
// support for Augmented Faces.

// Configure the session.
session.configure(config);
}

是不是很简单,同样,关闭Session 可以直接调用:

session.close();

即可。

然后我们在Activity中构建渲染循环,

  • 创建渲染用GlSurfaceView ,并实现渲染render类。同时创建自己绘制Mesh需要的渲染类,如planetRender(绘制地面),BackgroundRenderer (绘制背景)等。
  • 在OnSurfaceCreate 渲染线程回调中,添加对于mesh,render,texture的初始化操作,申请GPU空间。
  • 在OnSurfaceChanged回调中,设置渲染缓冲的视口。
  • 在OnDrawFrame中加入每帧的渲染逻辑,
Frame frame = session.update();

可以获取当前帧的信息,其中包括相机信息,RGB图,depth图等。

Camera camera = frame.getCamera();

可以获取到当前相机状态,如是否处在跟踪物体,是否跟踪失败等。通过相机的不同状态来绘制三维物体,可以动态的改变三维物体的显示(如位置,大小,旋转,是否被遮挡等)。

Frame中同样存储这点云、锚点、平面这些检测信息,你同样可以根据相机得到视点信息,重新构建出一个三维世界,把以上得到的信息具体的绘制到场景中。在现实的台球桌面上,虚拟化了一个锥形物体,是通过检测得到的平面信息,在平面上添加指定位置的锚点,并在锚点上绘制锥形体。

Part 04  AR/VR的趋势和未来

对于AR和VR设备的普及化,可能还需要一个比较长的过程,其中包括硬件升级和软件升级的过程,也可能包括用户对消费需求的升级。所以前景和市场还是很有希望的,因为它的发现大大提升了之前体感类游戏或者交互的体验,让用户能够随时随地的置身于各式各样的虚拟场景,并得到非常逼真的体验,相信随着移动技术的发展,有一天大家都能用上价格实惠,体感很好的AR/VR产品。​

新闻名称:AR视觉给移动生活带来的变革
当前地址:http://www.shufengxianlan.com/qtweb/news34/406634.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联