圖片來源: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
相關文章

Android Vuforia with jPCT-AE (5) – 多重模型載入,以 obj 為例

要進到這系列最後一篇文章了,這篇文章拖了很久,一直沒有時間整理,結果到最後 ... 程式碼留下來了,記憶卻有些模糊了,這邊小蛙配著程式碼盡可能的把還記得的東西寫下來。
2016-07-06 11:24:19
hans

18

Android Vuforia with jPCT-AE (4) – 載入 3DS 測試

延續 jPCT-AE Loader 載入模型的部份,這篇要記錄載入 3ds 檔案格式的方法,基本上跟前面幾個 obj, md2 的方法差不多,只有一些小小的變化而已。
2016-07-06 10:24:33
hans

18

Android Vuforia with jPCT-AE (3) – 載入 md2 測試

前兩篇介紹如何直接透過 jPCT-AE 直接繪圖以及載入 .obj 檔案,這邊繼續介紹 jPCT-AE 載入 md2 的方法,載入動作大致上類似,唯一不同的只有 texture 設定部份。
2016-07-06 09:24:43
hans

18

Android Vuforia with jPCT-AE (2) – 載入 obj 測試

上一篇 Android Vuforia with jPCT-AE (1) –
2016-07-06 08:24:55
hans

18

org.apache.jasper.JasperException : Expecting “jsp:param" standard action with “name" and “value" attributes

今天遇到一個很有趣的問題,有個系統要從舊的環境移到新的環境,在程式碼沒有變動的情況下,新環境會出現這個錯誤,由於舊的環境 JDK 跟 Tomcat 真的是太舊了,會有這些錯誤不意外,環境不一致所造成的不相容也只好慢慢修掉。
2012-10-02 09:50:48
hans

18

Android Tabhost with FragmentActivity

(2013-01-30 更新) 接續Android TabHost
2012-02-29 23:26:55
hans

18

Android TabHost Without TabActivity

2012-02-25 13:47:50
hans

18

Google AdWhirl with Vpon

(2012-07-20 更新)前面幾篇小蛙陸續介紹了Google AdWhirl串接kuAD, AdMob,以及單獨使用AdMob(單獨使用Vpon或kuAD只要直接下載匯入範例就可以囉!),今天要來記錄
2012-01-08 20:21:03
hans

18

Google AdWhirl with kuAD

(2012-04-06 更新)接續上一篇,小蛙繼續記錄使用Google AdWhirl銜接kuAD,kuAD是由kuSOGI
2012-01-07 16:21:10
hans

18

AdWhirl with AdMob by Google

AdWhirl是一套廣告輪播平台,開發者如果同時有許多廣告商,例如:AdMob, Vpon, KuAD …等等,就可以透過AdWhi
2012-01-07 13:59:22
hans

18




 回覆

你可以使用以下語法 HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">

(required)

(required)

   
© 2012 蛙齋 Suffusion theme by Sayontan Sinha