ImageTarget替換Target,以及遇到的坑
我自己研究的時候從替換3D模型開始,因為沒有基礎導致花了一整天時間沒有成功,后來就先易后難,從替換Target圖片開始,但是也因為網上的很多教程、博文都很簡單或者干脆互相抄襲,很多坑沒有提示,也導致浪費了三個小時,一個坑一個小時的代價了。
還是一步一步來操作,做記錄。
1、選擇一個圖片,畫面內容豐富比較好,選擇了公司大廳的一張照片,見過的同學說明是我的同事哦。
2、上傳照片,生成數據庫
打開官網,先登錄,Develop->Target Manager->Add Database創建一個數據庫,命名沒有要求,一般即可。
選擇創建的數據庫,Add Target。添加target,在彈出窗口中選擇Single Image,選擇自己想要的文件上傳。
這里遇到一個坑Width:
Width:上面寫着的Vuforia uses meters as the default unit scale.看清楚,寬度單位是米,我開始寫的是圖片的像素寬高,結果死活不成功。
第二個坑Name:
(網站已經大寫了,我沒注意也是我的錯),此處的Name字段將會在修改代碼時使用到,所以不要用圖片原名(截圖XXX之類的),直接寫一個合適的名字。
這里有第三個坑,評分
上傳成功之后,網站會執行渲染計算什么的,看到Rating評分,圖片內容不夠豐富,評分低了也是不會成功的!
據說至少三分才行,我看五分最好,無非是找個好圖。
3、下載數據庫
勾選之后,點擊Download Database,選擇Android Studio項(Eclipse是一樣的),里面會有.xml和.dat文件。
4、添加資源,修改代碼
a 將.xml和.dat文件放入assets下
b 修改代碼
ImageTargets.java 修改
將自己數據庫的名字添加到 onCreate()方法 mDatasetStrings 賦值中。 將原來的第一個注釋掉,補上自己的。
mDatasetStrings.add("snow.xml");
mDatasetStrings.add("StonesAndChips.xml");
將自己的數據庫添加到側滑菜單中。將原來的第一個注釋掉,補上自己的。
group.addRadioItem("snow", mStartDatasetsIndex, true); group.addRadioItem("Stones & Chips", mStartDatasetsIndex + 1, true);
ImageTargetRenderer.java 修改
int textureIndex = trackable.getName().equalsIgnoreCase("snow") ? 0 : 1; // int textureIndex = trackable.getName().equalsIgnoreCase("snow") ? 0 : 1; textureIndex = trackable.getName().equalsIgnoreCase("stone") ? 2 : textureIndex;
調試時可以看到trackable.getName()的名字是添加圖片時寫的名字。不是圖片原本的名字。
5、運行並觀察
現在就可以在自己替換的圖片上看到茶壺了,增強現實的第一步完成!
還有更多,替換模型,換掉該死的茶壺...