圖片來源:https://developer.vuforia.com/library/articles/FAQ/Watermark
圖片來源:https://developer.vuforia.com/library/articles/FAQ/Watermark

說來慚愧,從 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 教學 (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

簡單敘述一下整個流程:

  1. 必須要有一個 Vuforia 的帳號,註冊這檔事應該沒什麼難的地方,就填填資料就好了。
  2. 註冊完之後,建立一個 License Key (以前 3 版的時候沒有的),官網教學
  3. 複製下來自己的 License Key (就是那一長串看不懂的東西)。
  4. 這邊下載 Vuforia SDK,解壓縮好放在一個容易找到的地方,例如:c:\vuforia\。
  5. 這邊下載 Vuforia Sample (Core Features 這一組),隨便解壓縮到一個地方,然後用 Android Studio 匯入。
  6. 打開之後看看缺少那些 jar,然後去上面的 SDK 裡面找,把缺少的 jar include 進來。
  7. 打開 com.vuforia.samples.SampleApplication.SampleApplicationSession.java,搜尋「Vuforia.setInitParameters」,把剛剛建立的 License Key 貼在這邊。
  8. 檢查看看還有沒有紅字,沒有的話應該就可以正常執行了 (不行別罵小蛙,感覺應該是這樣)。

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

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

// 如果是照著上面步驟的話,改成這樣,不然就自己 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 模型呈現出來很簡單,只要幾個步驟就可以了:

  1. 這裡 下載整個 project。
  2. 直接匯入 Android Studio,跟上面一樣搜尋「Vuforia.setInitParameters」,把 Vuforia License Key 貼進去。
  3. 這時候應該很多紅字,到 Vuforia SDK 中 (如小蛙的位置在 C:\vuforia\build\java\vuforia) 把 Vuforia.jar 複製到 Vuforia559_jPCT-AE-master\app\libs 中。
  4. 找到 build.gradle 新增 Vuforia.jar
    dependencies {
        compile files('libs/jpct_ae.jar')
        compile files('libs/Vuforia.jar')  // 新增這行
    }
  5. 直接 run 專案,就可以看到結果了!

啥?那麼簡單?沒錯,就是這麼簡單 … 如果直接運行這個範例的話,會看到一個桶子,然後桶子看起來還有點昏暗,不過可以看到桶子表示已經成功了,下一篇將介紹怎麼載入其他 jPCT-AE 支援的 3D 模型。

Android Vuforia with jPCT-AE 系列文章

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) – 多重模型載入

參考資料

  1. Vuforia
    https://developer.vuforia.com/
  2. Vuforia559_jPCT-AE
    https://github.com/TheMaggieSimpson/Vuforia559_jPCT-AE

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *