private void Update()
 {
     if (!isARReady && isDataSetReady && CameraDevice.Instance.IsActive() && TrackerManager.Instance != null)
     {
         isARReady = true;
         foreach (OneDataSetInfo oneDataSetInfo in oneABClassInfo.dataSetInfos)
         {
             AFSDK_DataSetHandle.LoadDataSetFromPath(PathTool.PersistentDataPath + "/" + oneDataSetInfo.TargetDataSet + ".xml");
             List <string> targetInfo = new List <string>(oneDataSetInfo.TargetInfo.Keys);
             for (int i = 0; i < targetInfo.Count; i++)
             {
                 if (oneDataSetInfo.TargetInfo[targetInfo[i]].oneResInfo.ResPath != "")
                 {
                     GameObject objPrefabs = resLoader.LoadSync <GameObject>(ResFromType.ABRes, oneDataSetInfo.TargetInfo[targetInfo[i]].oneResInfo.ResPath);
                     Transform  trans      = AFSDK_DataSetHandle.ConfigTrackable(targetInfo[i], modelPre: objPrefabs); //生成模型
                     if (oneDataSetInfo.TargetInfo[targetInfo[i]].oneResInfo.isUseConfig)
                     {
                         trans.localEulerAngles = oneDataSetInfo.TargetInfo[targetInfo[i]].oneResInfo.ResRotation;
                         trans.localScale       = oneDataSetInfo.TargetInfo[targetInfo[i]].oneResInfo.ResScale;
                         trans.localPosition    = oneDataSetInfo.TargetInfo[targetInfo[i]].oneResInfo.ResPostion;
                     }
                 }
             }
         }
     }
 }
 private void LoadSet()
 {
     if (ModelPre != null && CameraDevice.Instance.IsActive() && TrackerManager.Instance != null)
     {
         //传绝对路径 : 只需传.xml所在的绝对路径即可
         //AFSDK_DataSetHandle.LoadDataSetFromPath(UnityPathTool.persistentDataPath + "/" + DatasetName + ".xml");
         //此示例采用相对路径 : 直接导入dataset,直接传dataset名称即可
         AFSDK_DataSetHandle.LoadDataSet("VuforiaMars_Images");
         //注意命名空间
         AFSDK_DataSetHandle.ConfigTrackable("Astronaut", "AFramework.ARSDK.AFSDK_DefaultTrackableHandle", ModelPre);
     }
 }
Beispiel #3
0
        public void AutoAddTarget()
        {
            if (TargetDataSetName.IsNullOrEmpty())
            {
                AFLogger.EditorErrorLog("DataSet名称为空!");
                return;
            }
            AF_ABConfig ABConfig = AssetDatabasex.LoadAssetOfType <AF_ABConfig>("AF_ABConfig");

            char[] t       = ABConfig.defaultDataSetPath.ToCharArray();
            string xmlPath = ABConfig.defaultDataSetPath;

            if (t[t.Length - 1] == '/')
            {
                xmlPath += TargetDataSetName + ".xml";
            }
            else
            {
                xmlPath += "/" + TargetDataSetName + ".xml";
            }
            if (xmlPath == "")
            {
                AFLogger.d("未找到DataSet对应的xml文件,请检查m_AllFileAB中是否有配置CategoryOfOwnership为" +
                           ABClassType + "且isHasDataset为true");
                return;
            }
            if (mImagetTargetInfo == null)
            {
                mImagetTargetInfo = new List <OneTargetInfo>();
            }
            List <string> allRecogTarget = AFSDK_DataSetHandle.GetDataSetTarget(xmlPath);

            if (allRecogTarget == null)
            {
                AFLogger.EditorErrorLog("解析xml失败!");
                return;
            }
            for (int j = mImagetTargetInfo.Count - 1; j >= 0; j--)
            {
                bool isNeedRemove = true;
                for (int i = allRecogTarget.Count - 1; i >= 0; i--)
                {
                    if (mImagetTargetInfo[j].ImageTargetName.Equals(allRecogTarget[i]))
                    {
                        isNeedRemove = false;
                        allRecogTarget.RemoveAt(i);
                        break;
                    }
                }
                if (isNeedRemove)
                {
                    mImagetTargetInfo.RemoveAt(j);
                }
            }
            foreach (string recogName in allRecogTarget)
            {
                OneTargetInfo oneTargetInfo = new OneTargetInfo();
                oneTargetInfo.ImageTargetName     = recogName;
                oneTargetInfo.oneResInfo.ResScale = new Vector3(1, 1, 1);
                mImagetTargetInfo.Add(oneTargetInfo);
            }
        }