您的位置:首页 > 其它

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,谢谢查看喽。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: