ImageTarget替換Target,以及遇到的坑html
我本身研究的時候從替換3D模型開始,由於沒有基礎致使花了一成天時間沒有成功,後來就先易後難,從替換Target圖片開始,可是也由於網上的不少教程、博文都很簡單或者乾脆互相抄襲,不少坑沒有提示,也致使浪費了三個小時,一個坑一個小時的代價了。java
仍是一步一步來操做,作記錄。數據庫
一、選擇一個圖片,畫面內容豐富比較好,選擇了公司大廳的一張照片,見過的同窗說明是個人同事哦。網站
二、上傳照片,生成數據庫spa
打開官網,先登陸,Develop->Target Manager->Add Database建立一個數據庫,命名沒有要求,通常便可。3d
選擇建立的數據庫,Add Target。添加target,在彈出窗口中選擇Single Image,選擇本身想要的文件上傳。調試
這裏遇到一個坑Width:
Width:上面寫着的Vuforia uses meters as the default unit scale.看清楚,寬度單位是米,我開始寫的是圖片的像素寬高,結果死活不成功。 code
第二個坑Name:
(網站已經大寫了,我沒注意也是個人錯),此處的Name字段將會在修改代碼時使用到,因此不要用圖片原名(截圖XXX之類的),直接寫一個合適的名字。xml
這裏有第三個坑,評分htm
上傳成功以後,網站會執行渲染計算什麼的,看到Rating評分,圖片內容不夠豐富,評分低了也是不會成功的!
聽說至少三分才行,我看五分最好,無非是找個好圖。
三、下載數據庫
勾選以後,點擊Download Database,選擇Android Studio項(Eclipse是同樣的),裏面會有.xml和.dat文件。
四、添加資源,修改代碼
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()的名字是添加圖片時寫的名字。不是圖片本來的名字。
五、運行並觀察
如今就能夠在本身替換的圖片上看到茶壺了,加強現實的第一步完成!
還有更多,替換模型,換掉該死的茶壺...