Qualcomm技术论坛
直播中

刘丽

7年用户 1247经验值
私信 关注
[经验]

从SD卡中加载Dataset

从SD卡中加载Dataset






AR/VR技术交流群 129340649



1、使用Vuforia
For unity SDK中Dataset

abstract bool Load
(String name)

默认从"StreamingAssets/QCAR" 加载.



abstract bool Load
(String path, VuforiaUnity.StorageType storageType)

从给定路径加载Dataset,storageType说明路径类型。

STORAGE_APP, STORAGE_APPRESOURCE, STORAGE_ABSOLUTE



2、

从SD卡中加载Dataset数据





复制代码



[size=1em]
1


[size=1em]
2


[size=1em]
3


[size=1em]
4


[size=1em]
5


[size=1em]
6


[size=1em]
7


[size=1em]
8


[size=1em]
9


[size=1em]
10


[size=1em]
11


[size=1em]
12


[size=1em]
13


[size=1em]
14


[size=1em]
15


[size=1em]
16


[size=1em]
17


[size=1em]
18


[size=1em]
19


[size=1em]
20


[size=1em]
21


[size=1em]
22


[size=1em]
23


[size=1em]
24


[size=1em]
25


[size=1em]
26


[size=1em]
27


[size=1em]
28


[size=1em]
29


[size=1em]
30


[size=1em]
31


[size=1em]
32


[size=1em]
33


[size=1em]
34


[size=1em]
35


[size=1em]
36


[size=1em]
37


[size=1em]
38


[size=1em]
39


[size=1em]
40


[size=1em]
41


[size=1em]
42


[size=1em]
43


[size=1em]
44


[size=1em]
45


[size=1em]
46


[size=1em]
47


[size=1em]
48


[size=1em]
49


[size=1em]
50


[size=1em]
51


[size=1em]
52


[size=1em]
53


[size=1em]
54


[size=1em]
55


[size=1em]
56


[size=1em]
57


[size=1em]
58


[size=1em]
59


[size=1em]
60


[size=1em]
61


[size=1em]
62


[size=1em]
63


[size=1em]
64


[size=1em]
65


[size=1em]
66


[size=1em]
67



[size=1em]
[size=1em]
using UnityEngine;

[size=1em]
  

[size=1em]
using Vuforia;

[size=1em]
  

[size=1em]
using System.Collections;

[size=1em]
  

[size=1em]
using System.Collections.Generic;

[size=1em]
  

[size=1em]
   

[size=1em]
  

[size=1em]
public class SDCardDataSetLoader
: MonoBehaviour

[size=1em]
  

[size=1em]
{

[size=1em]
  

[size=1em]
    private bool mLoaded
= false;

[size=1em]
  

[size=1em]
    private DataSet
mDataset = null;

[size=1em]
  

[size=1em]
    //
Update is called once per frame

[size=1em]
  

[size=1em]
    void Update()

[size=1em]
  

[size=1em]
    {

[size=1em]
  

[size=1em]
        if (VuforiaRuntimeUtilities.IsVuforiaEnabled()
&& !mLoaded)

[size=1em]
  

[size=1em]
        {

[size=1em]
  

[size=1em]
            string externalPath
= "/mnt/sdcard/tARMac.xml";

[size=1em]
  

[size=1em]
   

[size=1em]
  

[size=1em]
            if (mDataset
== null)

[size=1em]
  

[size=1em]
            {

[size=1em]
  

[size=1em]
                //
First, create the dataset

[size=1em]
  

[size=1em]
                ObjectTracker
tracker = TrackerManager.Instance.GetTracker();

[size=1em]
  

[size=1em]
                mDataset
= tracker.CreateDataSet();

[size=1em]
  

[size=1em]
            }

[size=1em]
  

[size=1em]
   

[size=1em]
  

[size=1em]
            if (mDataset.Load(externalPath,
VuforiaUnity.StorageType.STORAGE_ABSOLUTE))

[size=1em]
  

[size=1em]
            {

[size=1em]
  

[size=1em]
                mLoaded
= true;

[size=1em]
  

[size=1em]
            }

[size=1em]
  

[size=1em]
            else

[size=1em]
  

[size=1em]
            {

[size=1em]
  

[size=1em]
                Debug.LogError("Failed
to load dataset!");

[size=1em]
  

[size=1em]
            }

[size=1em]
  

[size=1em]
        }

[size=1em]
  

[size=1em]
    }

[size=1em]
  

[size=1em]
}
















路径设置:

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



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



其次设置路径:

大部分手机SD卡的路径如下:

/mnt/sdcard/

也有部分手机SD卡路径如下:

/sdcard

/storage/sdcard0



或者使用externalPath = Application.persistentDataPath;

当你开启了权限之后,该路径如下:

/storage/sdcard0/Android/data/ + + /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

更多回帖

发帖
×
20
完善资料,
赚取积分