Vuforia的Samples详细解析(Android)
来源:互联网 发布:免费视频聊天的软件 编辑:程序博客网 时间:2024/06/05 19:17
Vuforia的Samples详细解析(Android)
Core Feature介绍
Vuforia的Core Features包含以下核心特性:
Image Targets 特定的图片识别功能
VuMark 类似二维码识别的VuMark识别功能
Object Recognition 立体物体的识别(制作立体物体识别database,可360度全方位识别)
Cylinder Targets 圆柱体的识别
Multi Targets 多目标的识别(即对一个立方体各个面都可以识别,并且识别结果一致)
User Defined Targets 用户自定义目标识别(即拍摄任意图片作为识别目标)
Cloud Recognition 云识别,即将识别物放到vuforia后台,并通过网络交互确认识别的功能
Text Recognition 文字识别功能
Virtual Buttons 虚拟按钮的功能,一种AR交互,覆盖图片中的按钮,能影响3D模型的颜色。可以发挥想象空间。
Sample 解析
下载和配置
1.在https://developer.vuforia.com/downloads/sdk界面中下载vuforia-sdk-android-6-2-10.zip
2.在https://developer.vuforia.com/downloads/samples下载Core Features下的vuforia-samples-core-android-6-2-10.zip
3.将上述两个压缩包解压,并将samples文件夹放到sdk文件夹下的sample目录下,即可用Android Studio 打开此目录并顺利完成Gradle的bulid工作
4.运行时需要在sample中设置自己的key
注册了Vuforia后,在Develop版块的License Manager里通过Add License Key创建你的key
在SampleApplicationSession类中找到Vuforia.setInitParameters(mActivity, mVuforiaFlags, "the key");代码设置key。
Sample内容解读
java
├SampleApplication
│├SampleApplicationSession 控制AR功能生命周期的实现类,(开始,暂停,停止,销毁)
│├SampleApplicationControl SampleApplicationSession的回调类,返回当前AR的生命周期状态
│├SampleAppRenderer 3D模型的渲染器
│├SampleAppRendererControl 3D模型的渲染器的回调类
│└SampleApplicationException Sample异常封装类
└VuforiaSamples Core Features对应的各个简单实现
asset 使用的资源,包括被识别物的.dat和.xml文件和识别后的生成的3D模型渲染文件(如TextureTeapotBlue.png,TextureTeapotRed.png)
ImageTargets实例解析
下面,我们以ImageTargets为例,介绍一下vuforia的简单实现原理。
在VuforiaSamples/app/ImageTargets目录下有两个类ImageTargets(一个Activity)和ImageTargetRenderer(3D水壶的渲染类)。
我们看看ImageTargets做了些什么?
protected void onCreate(Bundle savedInstanceState){ Log.d(LOGTAG, "onCreate"); super.onCreate(savedInstanceState); //创建SampleApplicationSession vuforiaAppSession = new SampleApplicationSession(this); startLoadingAnimation(); //设置被识别标识物信息 mDatasetStrings.add("StonesAndChips.xml"); mDatasetStrings.add("Tarmac.xml"); //初始化AR vuforiaAppSession .initAR(this, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); mGestureDetector = new GestureDetector(this, new GestureListener()); mTextures = new Vector<Texture>(); //设置3D模型渲染资源 loadTextures(); mIsDroidDevice = android.os.Build.MODEL.toLowerCase().startsWith( "droid"); }
其核心内容是onCreate()里的三个操作:
1.启动AR功能
2.设置被识别物
3.设置识别后的需要渲染的3D模型资源
而在AR初始化完成后(onInitARDone方法中)做了一件重要的事:
// Initializes AR application components.private void initApplicationAR(){ // Create OpenGL ES view: int depthSize = 16; int stencilSize = 0; boolean translucent = Vuforia.requiresAlpha(); mGlView = new SampleApplicationGLView(this); mGlView.init(translucent, depthSize, stencilSize); //初始化渲染器,输入渲染模型信息,并关联GLView mRenderer = new ImageTargetRenderer(this, vuforiaAppSession); mRenderer.setTextures(mTextures); mGlView.setRenderer(mRenderer);}
自此,整个工作流程就打通了,即:
被识别物通过AR进行识别,识别的结果告知给Renderer(渲染器)。Renderer根据识别结果渲染出对应的3D模型。
ObjectRecognition实例解析
作为一个有别于其他Sample针对图片的识别,ObjectRecognition,立体物体的全方位识别,在这里做下重点介绍。
首先是制作立体物可识别库
你需要准备几个工具:
1.Vuforia Object Scanner 用于扫描并生成识别物数据的apk工具 下载地址:https://developer.vuforia.com/downloads/tool
2.打印一张用于定位目标物体的背景贴纸
接下来是制作过程:
1.将你想要制作的3D识别物放置在如上背景纸的右上方的区域
2.打开Vuforia Object Scanner,将摄像头对着3D物体进行全方位的扫描,如下图:
透明网格表示待扫描区域,绿色网格表示这个角度的数据已扫描完毕。你可以手动调整摄像头角度和远近将透明网格变成绿色网格。当所有网格都是绿色后,表示3D物体信息录入完整。
按下结束按钮,输入自定义名称保存数据后,你可以通过Scanner的测试按钮测试数据的可用性。
打开测试扫描器,任意角度对准3D识别物,如果出现一个绿色3D矩形,表示数据可用。如图:
接下来是上传数据到Vuforia云服务端。
通过adb将Scanner生成的在 /sdcard/VuforiaObjectScanner/ObjectReco文件夹下的*.od文件导出。
登录Vuforia网站,在Develop版块中找到Target Manager,并创建一个Type为Device的database.
点击进入你创建的database,点击Add Target,选择3D Object,上传*.od文件,编辑好名称即可添加,如下图:
最后是使用。Download Database中选择Android Studio,下载获得.dat和.xml文件。将此两个文件放到Sample里的/assets/ObjectRecognition目录下。
在ObjectTargets.java类中doLoadTrackersData方法里
if (!mCurrentDataset.load("ObjectRecognition/objectTarget.xml", STORAGE_TYPE.STORAGE_APPRESOURCE)) return false;
替换objectTarget.xml为你创造的.xml名称。编辑运行,即实现了创建自定义3D识别物并识别的功能,如下图:
- Vuforia的Samples详细解析(Android)
- AR初体验之Vuforia官网的Samples运行
- Android Samples的使用
- android的samples
- 分享一下最新的unity 2017.2 和 Vuforia 内置unity的下载包 以及 Vuforia core samples资源包
- 如何导入android的samples
- Android-7 Samples的思维导图
- arcgis for android 整理的samples
- vuforia + zxing 解析二维码
- Vuforia的学习(六)DefaultTrackableEventHandler脚本解析
- Android 项目的目录结构 详细解析
- 【Android杂谈】AsyncTask的详细使用解析
- android系统架构的详细解析
- Android系统架构的详细解析
- Android系统架构的详细解析
- Android系统架构的详细解析
- 史上最详细的Android系统SystemUI 启动过程详细解析
- Android SDK Samples,学习Android的好方法
- Web攻防之XSS,CSRF,SQL注入
- ObjectiveC 二维码生成算法
- 'latin-1' codec can't encode characters in position 62-66: ordinal not in range(256)
- 二维数组求平均数(每行/每列)
- 订单号字符串组装
- Vuforia的Samples详细解析(Android)
- PythonWeb 开发Django框架(一) 环境搭建
- oracle帮助文档——Oracle Database Security Guide
- 自己实现atoi
- Android的activity启动模式官方中文版
- C++学习笔记四之使用new来创建动态数组
- IDEA 在同一目录创建多个项目
- iOS开发——制作Framework
- oracle帮助文档——DB Reference