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); } }
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); } }