AR项目中如何从SD卡中加载数据集

Hello,我是KitStar。

我是学习Unity的一名初级程序员。如果,一下文章整理的不对。还请见谅。


首先,我们先了解一下AR的数据集(DataSet)。


1.

在我们使用Vuforia的AR sdk来开发项目的时候。会先去官网上传并下载需要识别的图片的一些信息。把下载的unitypackage文件导入你的Unity项目中后,会得到以下两个文件夹:AR项目中如何从SD卡中加载数据集_第1张图片里面的具体内容如下图显示:

AR项目中如何从SD卡中加载数据集_第2张图片如图所示: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();
                //首先,创建一个数据集。(即得到当前跟踪对象的引用)

                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,谢谢查看喽。

你可能感兴趣的:(ARSD卡中加载数据集,AR,unity,xml,Dataset,AR)