AR项目中如何从SD卡中加载数据集
2016-08-13 17:51
281 查看
Hello,我是KitStar。
我是学习Unity的一名初级程序员。如果,一下文章整理的不对。还请见谅。
首先,我们先了解一下AR的数据集(DataSet)。
1.
在我们使用Vuforia的AR sdk来开发项目的时候。会先去官网上传并下载需要识别的图片的一些信息。把下载的unitypackage文件导入你的Unity项目中后,会得到以下两个文件夹:
里面的具体内容如下图显示:
如图所示:Editor中存储的重要就是你要去识别的文件。而StreamingAssets文件夹中储存的就是这些图片的识别信息(在后缀为.dat中),以及配置信息(在后缀为.xml中)
。而我们说的数据集主要就是StreamingAssets文件夹里面的文件了。
2.
现在我们就开始用代码告诉大家怎么在SD卡中加载数据集了。
代码如下:
using UnityEngine;
using Vuforia;
using System.Collections;
using System.Collections.Generic;
public class SDCardDataSetLoader : MonoBehaviour //如何从SD卡中加载数据集
{
private bool mLoaded = false; //是否加载
private DataSet mDataset = null; //要加载的数据
// Update is called once per frame
void Update()
{
if (VuforiaRuntimeUtilities.IsVuforiaEnabled() && !mLoaded)
//VuforiaRuntimeUtilities高通运行的一个API接口的使用。里面的IsVuforiaEnabled来判断场景是否启用
{
string externalPath = "/mnt/sdcard/tarmac.xml"; //设置文档路径(tarmac.xml这个文件是针对你项目中的XML文档)
if (mDataset == null)
{
ObjectTracker tracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
//首先,创建一个数据集。(即得到当前跟踪对象的引用)
mDataset = tracker.CreateDataSet();
//给此对象创建一个数据集
}
if (mDataset.Load(externalPath, VuforiaUnity.StorageType.STORAGE_ABSOLUTE))
//然后,给数据集中添加数据。
//参数一: 数据目录
//参数二: 存储类型,(绝对存储,以防丢失)
//返回值为 : bool(代表是否加载成功)
{
mLoaded = true; // 加载成功
}
else
{
Debug.LogError("Failed to load dataset!"); //否则报错
}
}
}
}
3.再说一些题外话,项目中的StreamingAssets文件夹是Unity中的特殊文件夹。我在AssetBundle在安卓中的解析的教程中有提及过。有兴趣的可以查看。
4,谢谢查看喽。
我是学习Unity的一名初级程序员。如果,一下文章整理的不对。还请见谅。
首先,我们先了解一下AR的数据集(DataSet)。
1.
在我们使用Vuforia的AR sdk来开发项目的时候。会先去官网上传并下载需要识别的图片的一些信息。把下载的unitypackage文件导入你的Unity项目中后,会得到以下两个文件夹:
里面的具体内容如下图显示:
如图所示:Editor中存储的重要就是你要去识别的文件。而StreamingAssets文件夹中储存的就是这些图片的识别信息(在后缀为.dat中),以及配置信息(在后缀为.xml中)
。而我们说的数据集主要就是StreamingAssets文件夹里面的文件了。
2.
现在我们就开始用代码告诉大家怎么在SD卡中加载数据集了。
代码如下:
using UnityEngine;
using Vuforia;
using System.Collections;
using System.Collections.Generic;
public class SDCardDataSetLoader : MonoBehaviour //如何从SD卡中加载数据集
{
private bool mLoaded = false; //是否加载
private DataSet mDataset = null; //要加载的数据
// Update is called once per frame
void Update()
{
if (VuforiaRuntimeUtilities.IsVuforiaEnabled() && !mLoaded)
//VuforiaRuntimeUtilities高通运行的一个API接口的使用。里面的IsVuforiaEnabled来判断场景是否启用
{
string externalPath = "/mnt/sdcard/tarmac.xml"; //设置文档路径(tarmac.xml这个文件是针对你项目中的XML文档)
if (mDataset == null)
{
ObjectTracker tracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
//首先,创建一个数据集。(即得到当前跟踪对象的引用)
mDataset = tracker.CreateDataSet();
//给此对象创建一个数据集
}
if (mDataset.Load(externalPath, VuforiaUnity.StorageType.STORAGE_ABSOLUTE))
//然后,给数据集中添加数据。
//参数一: 数据目录
//参数二: 存储类型,(绝对存储,以防丢失)
//返回值为 : bool(代表是否加载成功)
{
mLoaded = true; // 加载成功
}
else
{
Debug.LogError("Failed to load dataset!"); //否则报错
}
}
}
}
3.再说一些题外话,项目中的StreamingAssets文件夹是Unity中的特殊文件夹。我在AssetBundle在安卓中的解析的教程中有提及过。有兴趣的可以查看。
4,谢谢查看喽。
相关文章推荐
- 如何让VC在编译ARX项目时自动通知AutoCAD卸载ARX程序,并在编译完成后自动加载新编译的ARX程序
- iphone 项目中如何加载本地html文件到uiwebview
- 运行安卓项目时,没有加载到虚拟机上,如何解决(如何重启ADB)
- cocos2d-x的android项目中如何加载第三方so库
- Java项目初学-------满汉楼----如何动态加载图片做背景?
- JDeveloper如何优先加载项目指定的类包
- 揭秘谷歌 AMP 项目:它是如何提高网页加载速度的?
- cocos2d-x的android项目中如何加载第三方so库
- android项目中如何加载已有so库
- 如何构建一个完整的angular项目(一)--- 如何按需加载静态资源
- xcode4.2 空项目如何加载view
- android项目中如何获取assets下面的文件在SD卡上面的保存路径
- android项目中如何加载已有so库
- android项目中如何加载已有so库
- 如何将nutch项目加载到MyEclipse中,生成一个web project
- NDK编译的文件如何加载到Android项目
- NDK编译的文件如何加载到Android项目
- 如何加载OgreSE导出的文件到项目中
- VC++ 如何加载lib文件到项目中
- 图形画画板 如何欺骗系统将保存的图片加载如sd卡