前面的文章提到為什麼要用 Android NDK 來開發,既然已經有了 Android 版本替換茶壺的文章,這邊記錄 Android NDK 版本的替換茶壺。

2016-07-07 更新:本篇為 3.x 版本,目前 Vuforia 以更新到 5.5.9,新版本使用方式請參考 

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

使用 Android NDK 來做的好處在上一篇文章已提過,C++ 在處理複雜模型上有不錯的表現,也不會出現 Java 宣告大小上限的問題,直接進入步驟。

1. 下載範例檔案 – cube.hcube.png (這個跟前面範例使用的是一樣的)

2. 將範例檔案 cube.h 放到  ImageTargetsNative 專案下的 jni 目錄

3. 將範例檔案 cube.png 放到 ImageTargetsNative 專案下的 assets 目錄

4. 開啟 ImageTargetsNative 專案下 jni 下的 ImageTargets.cpp

// 在上方加入
#include "cube.h"

// static const float kObjectScale = 3.f;
// 改成
static const float kObjectScale = 120.f;

// glVertexAttribPointer(vertexHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*) &teapotVertices[0]);
// 改成
glVertexAttribPointer(vertexHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*) &cubeVerts[0]);

// glVertexAttribPointer(normalHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*) &teapotNormals[0]);
// 改成
glVertexAttribPointer(normalHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*) &cubeNormals[0]);

// glVertexAttribPointer(textureCoordHandle, 2, GL_FLOAT, GL_FALSE, 0, (const GLvoid*) &teapotTexCoords[0]);
// 改成
glVertexAttribPointer(textureCoordHandle, 2, GL_FLOAT, GL_FALSE, 0, (const GLvoid*) &cubeTexCoords[0]);

// glDrawElements(GL_TRIANGLES, NUM_TEAPOT_OBJECT_INDEX, GL_UNSIGNED_SHORT, (const GLvoid*) &teapotIndices[0]);
// 改成
glDrawArrays(GL_TRIANGLES, 0, cubeNumVerts);

5. 開啟 ImageTargetsNative 專案下 jni 下的 ImageTargets.java

private void loadTextures()
{
        //mTextures.add(Texture.loadTextureFromApk("TextureTeapotBrass.png", getAssets()));
        mTextures.add(Texture.loadTextureFromApk("TextureTeapotBlue.png", getAssets()));
        mTextures.add(Texture.loadTextureFromApk("cube.png", getAssets()));
        mTextures.add(Texture.loadTextureFromApk("TextureTeapotRed.png", getAssets()));
        mTextures.add(Texture.loadTextureFromApk("Buildings.jpeg", getAssets()));
}

6. 執行 ndk-build (如果忘記可查看上一篇文章),重新整理 Eclipse 專案後執行。下圖是 cube.h 透過 OpenGL 畫出來的模型,上方是 cube.png 當材質繪製出來的,下方是原本範例中茶壺的貼圖。
018.png

Vuforia 系列文章:

  1. Qualcomm Vuforia 教學 (1) – 安裝 Vuforia
  2. Qualcomm Vuforia 教學 (2) – Create Image Target
  3. Qualcomm Vuforia 教學 (3) – 替換茶壺 – Android 版本
  4. Qualcomm Vuforia 教學 (4) – 使用 Android NDK 版本並開啟多重偵測
  5. Qualcomm Vuforia 教學 (5) – 替換茶壺 – Android JNI 版本
  6. Qualcomm Vuforia 教學 (6) – 3D model -> .obj -> .h

 

 

相關文章

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

Qualcomm Vuforia 教學 (6) – 3D model -> .obj -> .h

終於來到 Vuforia 記錄的最後一篇了,這篇參考到網路上神人的做法,怎麼把一個 3D model 轉換成 Vuforia 可以使用的 .h 檔,這邊之後都直接使用 An
2014-12-10 11:25:50
hans

18

Qualcomm Vuforia 教學 (4) – 使用 Android NDK 版本並開啟多重偵測

接續前幾篇教學,我們已經建置好 Vuforia 開發及執行環境
2014-12-09 17:10:57
hans

18

Qualcomm Vuforia 教學 (3) – 替換茶壺 – Android 版本

接續上一篇 
2014-12-09 15:38:17
hans

18

Google Nexus 7 (2013 版本 USB Driver 安裝)

(2015-02-05 更新) Nexus 7 二代在 ASUS 官網上面寫叫做 Nexus 7 2013,前陣子把電腦更新成 Windows 8.1 64bit 之後,這台 Nexus 7 2013 的 driver 就一直裝不上去,裝置
2014-03-15 13:55:42
hans

18

Solr 教學 (5) – 建立新的 Core

這篇文章小蛙要記錄怎麼樣新建一個 Core 並且也加入 DataImportHandler 的方法。

2014-01-08 14:19:30
hans

18

Solr 教學 (4) – 使用 DataImport 匯入資料庫資料

好一陣子沒有用 Solr,接續前幾篇
2014-01-08 12:00:17
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