前言

ARCore是一种增强现实体验构建平台,它可以利用不同的API让手机能够感知其环境、理解现实世界与信息进行交互。ARCore使用三个主要功能将虚拟内容与通过手机摄像头看到的现实世界整合:
1) 运动跟踪功能让移动设备可以在移动时跟踪特征点的变化情况,从而确定设备移动时的位置和屏幕方向;
2) 环境理解功能让移动设备可以检测各类表面(如地面、桌面或者墙壁等水平、垂直和倾斜表面)的大小和位置;
3) 光估测功能让移动设备可以估测环境当前的关照条件,提升虚拟物体的真实感。
ARCore可以在运行Android 7.0(Nougat)及更高版本系统的多种符合资格的Android手机上使用,具体支持设备完整列表可查看此地址:https://developers.google.cn/ar/discover/supported-devices。
随着ARCore技术的兴起,超图在SuperMap iMobile for Android产品中将三维技术与ARCore技术结合,将更好的服务与数字城市的建设等GIS应用中。下面将分享在iMobile for Android中三维AR的使用。

前期准备

开发环境

安装 Android Studio 3.1 或更高版本以及 Android SDK Platform 7.0(API 级别 24)或更高版本。

支持设备

运行Android 7.0 (Nougat) 及更高版本系统的多种符合资格的Android手机,具体类型查看上述链接地址,小编开发运行时使用的小米8。

数据准备

在iMobile for Android的三维AR应用中支持BIM、精模和倾斜摄影等数据,所以在iMobile中开发前,需要在SuperMap iDesktop中准备好对应的三维数据,比如,AR中显示BIM或精模等数据,需要对配置好的场景数据切osgb/s3m格式的Android设备的场景缓存;如果是倾斜摄影数据需要在iDesktop中转成Android设备的纹理压缩等。识别区出来后手指触屏加载场景数据,如果数据离触屏位置较远,可以调整缓存数据插入点让模型处于为0,0,0附近,在配置文件.scp中修改参数Position中的x、y和z的值。

功能实现

平面识别

定义ARControl对象,开启AR,在运行程序的时候手机会自动去识别平面,等平面识别出来后手指触屏加载数据,关键代码如下:

arControl=new ARControl(this,sceneControl);
sceneControl.sceneControlInitedComplete(new SceneControl.SceneControlInitedCallBackListenner() {@Overridepublic void onSuccess(String success) {//开启ARarControl.setARstate(true);}
});

注:在识别平面的时候,手机对的平面不要太光滑,有纹理更能使设备识别到平面特征点,对着平面时可以水平移动手机,加快平面的识别。

图层缩放

AR中加载模型数据时,可以控制图层中数据显示的大小,实现的关键代码如下:

arControl.setAnchorOnClickListener(new ARControl.AnchorOnClickListener() {@Overridepublic void onSuccess() {if(!isFirst && isLicenseAvailable() ){//打开本地场景数据openLocalScene();//设置一个数据放缩,范例数据在室内,默认放缩到0.005,就是室外。arControl.setLayerScale(0,0.005);}}
});
图层平移

在AR中可以控制每个图层模型数据在X、Y、Z轴方向的平移,实现代码:

arControl.setLayerTransLation(0,10,10,1);
图层旋转

在AR中可以控制每个图层模型数据在X、Y、Z轴方向的旋转,实现代码:

arControl.setLayerRotation(0,10,20,10);

结语

在使用SuperMap iMobile for Android开发三维AR应用的时候,Android平台和SDK版本要高一点,另外要准备支持ARCore的设备。关于具体的应用开发,还可以参考iMobile for Android解压包下/ SampleCode /SampleCode_AndroidStudio/SuperMap AR范例。

SuperMap iMobile for Android中三维AR的使用相关推荐

  1. SuperMap iMobile for Android常见问题解答集锦(十四)

    问:SuperMap iMobile for Android中导出shp数据时能否设置其字符集,怎么设置? 答:导出时可以设置shp的字符集,通过类DataConversion下的setConvert ...

  2. SuperMap iMobile for Android常见问题解答集锦(十三)

    作者:皇皇 问:SuperMap iMobile for Android中是否支持实时GPS定位,怎么实现? 答:可以支持:通过LocationManagePlugin管理插件类,开启GPS设备,并设 ...

  3. SuperMap iMobile 8Cfor Android/iOS ——专业级移动GIS开发平台

    SuperMap iMobile 8C是一款全新的移动GIS开发平台,具备专业.全面的移动GIS功能.支持基于Android和iOS操作系统的智能移动终端,可以快速开发在线和离线的移动GIS应用. 谁 ...

  4. SuperMap iMobile for Android之行业导航

    作者 :dongyx 在我们工作生活中,经常会遇到怎么去哪.如何去最节约成本的问题,这就需要使用地图导航的功能了,那么如何使用SuperMap iMobile for Android制作导航APP呢? ...

  5. SuperMap iMobile for Android 地图开发(一)

    第一步:创建 Android Studio 项目 第一步:创建 Android Studio 项目 Android Studio 有两种创建项目的方法. 第一种是在 Android Studio起始页 ...

  6. SueperMap iMobile for android中在线数据对接大全

    作者:xinxin 在SuperMap产品中,数据源可以分为文件型数据源.数据库型数据源和在线数据源,SuperMap iMobile for Android可以对接文件型数据源和在线数据源,文件型数 ...

  7. SuperMap iMobile for Android许可介绍

    作者:dongyx 使用SuperMap iMobile产品需要SuperMap的授权,即获得许可.目前,针对不同的用户和不同的使用场景,SuperMap iMobile提供三种许可方式,分别为试用许 ...

  8. SuperMap iMobile for Android开发入门(iMobile 10i + AS 3.6)

    SuperMap iMobile开发入门(iMobile 10i + AS3.6) 超图防坑指南 文章概要 AS3.6安装.SuperMap iMobile 10i下载 HelloMap工程创建 He ...

  9. SuperMap iMobile for Android 地图添加POI兴趣点

    作者:程溯 简介 Demo按类型往地图里添加POI兴趣点,并添加兴趣点的名称(name)与详细信息(detail).地图上不同类型的POI兴趣点采用不同符号来表示. 示例数据 Data: mypoi. ...

最新文章

  1. Table嵌套去掉子table的外边框
  2. 微信小程序首页index.js获取不到app.js中动态设置的globalData的原因以及解决方法
  3. 设计模式-2-代理模式
  4. 从零开始Code Review
  5. 世界是有生命的(通向财富自由之路学习笔记十五)
  6. oracle 韩思捷_ORACLE数据库技术实用详解:教你如何成为10g OCP
  7. php strip_tags 少,详解PHP函数 strip_tags的用法不足之处
  8. 顺利通过2018年下工信部的软件设计师考试,在此感悟一下
  9. [Linux] 编译 与 链接
  10. 图像处理(一)bicubic解释推导
  11. python导入excel加入折线图_excel表格中怎么设计炫酷折线图
  12. 怎么用wps抽签_“excle 如何摇号“如何参与摇号?
  13. MEncoder的基础用法—6.5. 编码为MPEG格式
  14. Mac下编译WebRTC(Mac和iOS版本)
  15. 如何利用IP地址开展金融反欺诈?
  16. 华为虚拟机服务器怎么使用教程,虚拟机装服务器教程
  17. SVN 已提交版本回退
  18. CVPR2020:Seeing Through Fog Without Seeing Fog
  19. 阿里2015校园招聘广州站 面试经历
  20. 《计算机网络》— 计算机网络基础

热门文章

  1. 如果我能再次养大我的孩子
  2. firstChild和firstElementChild兼容
  3. Cannot set priority of datanode proces
  4. 下一代5G计算终端,正在你我的案头苏醒
  5. 浅谈C语言参数可变函数的实现
  6. [证券日报]阿里或收购东方证券,全行业颤抖 ?
  7. wal_level问题
  8. Qt下对软件试用期以及使用次数设置
  9. matlab怎么做函数,Matlab定义函数怎么操作?进行定义函数教程分享
  10. 白底黑字!Android浅色状态栏黑色字体模式