归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
阅读:5908回复:11

从SD卡中加载Dataset数据

楼主#
更多 发布于:2015-08-29 14:16


SD卡中加载Dataset


1、使用Vuforia For unity SDKDataset
abstract bool Load (String name)
默认从"StreamingAssets/QCAR" 加载.

abstract bool Load (String path, VuforiaUnity.StorageType storageType)
从给定路径加载DatasetstorageType说明路径类型。
STORAGE_APP, STORAGE_APPRESOURCE, STORAGE_ABSOLUTE

2
SD卡中加载Dataset数据

using UnityEngine;
 
using Vuforia;
 
using System.Collections;
 
using System.Collections.Generic;
 
  
 
public class SDCardDataSetLoader : MonoBehaviour
 
{
 
    private bool mLoaded = false;
 
    private DataSet mDataset = null;
 
    // Update is called once per frame
 
    void Update()
 
    {
 
        if (VuforiaRuntimeUtilities.IsVuforiaEnabled() && !mLoaded)
 
        {
 
            string externalPath = "/mnt/sdcard/tarmac.xml";
 
  
 
            if (mDataset == null)
 
            {
 
                // First, create the dataset
 
                ObjectTracker tracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
 
                mDataset = tracker.CreateDataSet();
 
            }
 
  
 
            if (mDataset.Load(externalPath, VuforiaUnity.StorageType.STORAGE_ABSOLUTE))
 
            {
 
                mLoaded = true;
 
            }
 
            else
 
            {
 
                Debug.LogError("Failed to load dataset!");
 
            }
 
        }
 
    }
 
}




路径设置:
首先需要开启对SD卡的读写权限。在Unity3d中,可以在Player Settings中设置,如下:

图片:图片1.png


或者在AndroidManifest.xml中进行设置。

其次设置路径:
大部分手机SD卡的路径如下:
/mnt/sdcard/
也有部分手机SD卡路径如下:
/sdcard
/storage/sdcard0

或者使用externalPath = Application.persistentDataPath;
当你开启了权限之后,该路径如下:
/storage/sdcard0/Android/data/ + <package-name> + /files
假如你的包名为com.arvrschool.apps,那么该路径即为:
/storage/sdcard0/Android/data/com.arvrschool.apps/files
那么保存的dataset的完整路径可表示如下:
/storage/sdcard0/Android/data/com.arvrschool.apps/files/tarmac.xml
/storage/sdcard0/Android/data/com.arvrschool.apps/files/tarmac.dat

AR学院(www.arvrschool.com),从这里感触未来!

欢迎分享

1739516172
精灵王
精灵王
  • UID748
  • 粉丝0
  • 关注3
  • 发帖数63
  • 社区居民
  • 忠实会员
沙发#
发布于:2016-02-24 13:39
大哥从从SD卡中加载Dataset 加载数据之后该怎么使用啊!xml读取出来了但是不知道该怎么用了,
归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
板凳#
发布于:2016-02-24 15:28
1739516172:大哥从从SD卡中加载Dataset 加载数据之后该怎么使用啊!xml读取出来了但是不知道该怎么用了,回到原帖
参考这个帖子https://developer.vuforia.com/forum/unity-3-extension-technical-discussion/change-image-target-runtime
AR学院(www.arvrschool.com),从这里感触未来!
1739516172
精灵王
精灵王
  • UID748
  • 粉丝0
  • 关注3
  • 发帖数63
  • 社区居民
  • 忠实会员
地板#
发布于:2016-02-24 16:48
我看了一下那个脚本,就是获取所有的数据集,一个加载单个数据集的方法,一个删除数据集的方法,加载数据集的方法和你的是差不多的
1739516172
精灵王
精灵王
  • UID748
  • 粉丝0
  • 关注3
  • 发帖数63
  • 社区居民
  • 忠实会员
4楼#
发布于:2016-02-24 16:51
我觉得还是你写的比那个外国佬好多了,简单易懂,可是加载之后我需要获取当前加载的数据集的一些信息,比如说当前识别图的名字什么的
归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
5楼#
发布于:2016-02-24 17:53
1739516172:我觉得还是你写的比那个外国佬好多了,简单易懂,可是加载之后我需要获取当前加载的数据集的一些信息,比如说当前识别图的名字什么的回到原帖
这个问题你继续看我发的链接,后面有解析xml的代码
AR学院(www.arvrschool.com),从这里感触未来!
1739516172
精灵王
精灵王
  • UID748
  • 粉丝0
  • 关注3
  • 发帖数63
  • 社区居民
  • 忠实会员
6楼#
发布于:2016-02-25 10:55
大神求助
1739516172
精灵王
精灵王
  • UID748
  • 粉丝0
  • 关注3
  • 发帖数63
  • 社区居民
  • 忠实会员
7楼#
发布于:2016-02-25 10:56

     //如果这个游戏对象没有触发识别的脚本
            if (go.GetComponent<DefaultTrackableEventHandler>() == null)
            {
                // Add a Trackable event handler to the Trackable.
                // This Behaviour handles Trackable lost/found callbacks.
                //给这个游戏对象添加触发识别脚本
                go.AddComponent<DefaultTrackableEventHandler>();
                //并且激活这个游戏对象
                go.SetActive(true);
                XmlNode nodo = xml.SelectSingleNode("//Target[@id=\"" + name + "\"]");
               go.GetComponent<DefaultTrackableEventHandler>().infos = nodo;
 
            }DefaultTrackableEventHandler里面infos的定义
1739516172
精灵王
精灵王
  • UID748
  • 粉丝0
  • 关注3
  • 发帖数63
  • 社区居民
  • 忠实会员
8楼#
发布于:2016-05-25 12:18
归海个还少数据集的激活赶快加上去  mTracker.ActivateDataSet(mDataset);,还有路径啊
huanghuan
新手
新手
  • UID1739
  • 粉丝0
  • 关注0
  • 发帖数8
9楼#
发布于:2016-06-07 16:02
后续哪里有解析xml的代码?
归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
10楼#
发布于:2016-08-21 11:40
AR学院(www.arvrschool.com),从这里感触未来!
dg88534187
新手
新手
  • UID1877
  • 粉丝0
  • 关注0
  • 发帖数8
11楼#
发布于:2016-08-26 16:14
大神你好。我想问几个问题。跪求解答。
1.assetbundle原始文件只有1M为什么 用 WWW.LoadFromCacheOrDownload下载的assetbundle 达到8M,是解压后存到磁盘去了吗.
 2.我想从服务器下载 后从本地加载。 一定得用AssetBundle.CreateFromFile吗,那加载的话路径应该是什么呢。
3.AssetBundle.CreateFromFile必须加载未压缩的资源,但是我2M的资源他打成未压缩assetbundle变成10M去了,压缩的assetbundle大概是1M。这是正常的吗。
4.WWW.LoadFromCacheOrDownload把资源下载到哪里了呢。在手机文件夹找了好久没找到。
目前用WWW.LoadFromCacheOrDownload很蛋疼,区分不了是服务器下载还是本地读取。
游客

返回顶部