Android Vuforia with jPCT-AE (1) – 基本範例
說來慚愧,從 Google Adsense 被 ban 之後,就好久沒有發文了,站上 Vuforia 的文章也已經是好久以前的事情了 (遠目),最近有專案要用到 Vuforia,爬以前的文回來看,蛙哩咧 … 現在已經更新到 Vuforia 5 了 … 真的是好遙遠啊!這篇記錄怎麼讓 Vuforia 可以透過 jPCT-AE 這套工具把 3D 模型 render 出來,而不是透過之前 Qualcomm Vuforia 教學 (6) – 3D model -> .obj -> .h 這種轉換方式,系列文內會大概講解遭遇到的問題。
囉哩巴唆
在 Zachary Marv 的這篇留言中提到用這種方式產生出來的模型雖然是正確的,但是貼圖會變的怪怪的,沒有辦法像 Vuforia 的茶壺那樣好看,小蛙對 3D model 不怎麼了解 … 無法解答發生的原因以及要怎麼改善,但這的確是一個非常 OX 的問題 …
這次專案又要用到 AR 相關的技術,想說之前使用過 Vuforia,那就繼續用用看吧!對 Vuforia 的記憶根本就消失殆盡,還好之前有留系列文章下來:
Qualcomm Vuforia 系列:
- Qualcomm Vuforia 教學 (1) – 安裝 Vuforia
- Qualcomm Vuforia 教學 (2) – Create Image Target
- Qualcomm Vuforia 教學 (3) – 替換茶壺 – Android 版本
- Qualcomm Vuforia 教學 (4) – 使用 Android NDK 版本並開啟多重偵測
- Qualcomm Vuforia 教學 (5) – 替換茶壺 – Android JNI 版本
- Qualcomm Vuforia 教學 (6) – 3D model -> .obj -> .h
but … 人生最大條的就是這個 but … 版本也差太多了吧!連套件名稱都不一樣了 … 上述紀錄文只能當作找回記憶碎片的”參考文”了,不過這六篇還是有一點參考價值啦!進主題 ~
Vuforia Android Sample
簡單敘述一下整個流程:
- 必須要有一個 Vuforia 的帳號,註冊這檔事應該沒什麼難的地方,就填填資料就好了。
- 註冊完之後,建立一個 License Key (以前 3 版的時候沒有的),官網教學。
- 複製下來自己的 License Key (就是那一長串看不懂的東西)。
- 到這邊下載 Vuforia SDK,解壓縮好放在一個容易找到的地方,例如:c:\vuforia\。
- 到這邊下載 Vuforia Sample (Core Features 這一組),隨便解壓縮到一個地方,然後用 Android Studio 匯入。
- 打開之後看看缺少那些 jar,然後去上面的 SDK 裡面找,把缺少的 jar include 進來。
- 打開 com.vuforia.samples.SampleApplication.SampleApplicationSession.java,搜尋「Vuforia.setInitParameters」,把剛剛建立的 License Key 貼在這邊。
- 檢查看看還有沒有紅字,沒有的話應該就可以正常執行了 (不行別罵小蛙,感覺應該是這樣)。
Vuforia Android JNI Sample
到這裡應該是不會有什麼問題才對,因為比較麻煩的是 Vuforia Sample Advanced Topics 這組,如果要使用 obj 轉 .h 的方法可以下載 Vuforia Sample Advanced Topics 這組,經過小蛙測試以及上面 Zachary Marv 提到的,texture 透過 JNI 的方式 render 出來會怪怪的,剛接觸的網友可以試試看上面教學的 (4) (5) (6),也可以順便熟悉一下 JNI 的運作 (如果是使用 JNI 的朋友會比較麻煩,簡單一點的方法是把 Vuforia SDK 中的 build 目錄複製下來,丟進 ImageTargetsNative-5-5-9\app\src\main\ 下,接著修改 app/build.gradle
1
2
3
4
5
6
7
|
def VUFORIA_SDK_DIR = 'C:\\vuforia' // 改成你的 Vuforia SDK 位置 def JAR_DIR = 'build/java/vuforia' // 如果照著上面做的話,直接寫這樣 sourceSets.main { jni.srcDirs = [] jniLibs.srcDir "src/main/libs/" // 檢查裡面要有 armeabi-v7a 資料夾,如果沒有就去 Vuforia SDK 下複製 } |
第二個要修改的部份是 ImageTargetsNative-5-5-9\app\src\main\jni\Android.mk
1
2
3
4
|
// 如果是照著上面步驟的話,改成這樣,不然就自己 trace 路徑看看 LOCAL_SRC_FILES = .. /build/lib/ $(TARGET_ARCH_ABI) /libVuforia .so // 如果是照著上面步驟的話,改成這樣,不然就自己 trace 路徑看看 LOCAL_EXPORT_C_INCLUDES := .. /build/include |
完成之後點擊選單列 Build -> Make Project,如果沒有錯誤,直接執行就可以了!
Vuforia Android Sample With jPCT-AE
要使用 jPCT-AE 把 3D 模型呈現出來很簡單,只要幾個步驟就可以了:
- 到 這裡 下載整個 project。
- 直接匯入 Android Studio,跟上面一樣搜尋「Vuforia.setInitParameters」,把 Vuforia License Key 貼進去。
- 這時候應該很多紅字,到 Vuforia SDK 中 (如小蛙的位置在 C:\vuforia\build\java\vuforia) 把 Vuforia.jar 複製到 Vuforia559_jPCT-AE-master\app\libs 中。
- 找到 build.gradle 新增 Vuforia.jar
1234
dependencies {
compile files('libs/jpct_ae.jar')
compile files('libs/Vuforia.jar') // 新增這行
}
- 直接 run 專案,就可以看到結果了!
啥?那麼簡單?沒錯,就是這麼簡單 … 如果直接運行這個範例的話,會看到一個桶子,然後桶子看起來還有點昏暗,不過可以看到桶子表示已經成功了,下一篇將介紹怎麼載入其他 jPCT-AE 支援的 3D 模型。
Android Vuforia 系列:
- Android Vuforia with jPCT-AE (1) – 基本範例
- Android Vuforia with jPCT-AE (2) – 載入 obj 測試
- Android Vuforia with jPCT-AE (3) – 載入 md2 測試
- Android Vuforia with jPCT-AE (4) – 載入 3DS 測試
- Android Vuforia with jPCT-AE (5) – 多重模型載入,以 obj 為例