簡介

本篇介紹香港科藝家 Bryan Chung 自製的 Library in Processing: simpleARToolKit,一套基於 jARToolKit 衍伸出來可在 Processing 中直接編寫擴增實境 (Augmented Reality) 應用程式的函式庫 (Library)。

而這個 jARToolKit 正是由前篇介紹的 ARToolKit 衍伸出來,也屬 Open Source 的軟體。

jARToolKit 是改以 Java 為開發環境,並支援 Java3D 來繪製三維圖形。在 Processing 中將 jARToolKit 的 jar 及 dll 置入資源庫資料夾中 (由於 Processing 本身脫離不了 Java),即可呼叫使用。

PS. 看到 dll,令人想到原本 ARToolKit 的 Cross-Platform 就此消失?(若需 Cross-Platform 又要使用 Java,可找找 NyARToolkit,甚至可再轉至 Flash AS3 上使用:: FLARToolKit)

 

預備

以下簡述如何在 Processing 中撰寫基本 AR 應用程式:

1. 確定您系統中有 Processing,也正確安裝 Java 相關執行環境。
2. 確定系統有裝 WebCam 並已經正常運作。
3. 到 Bryan 的部落格下載 simpleARToolKit,解壓縮至 {Processing 安裝目錄}\libraries 資料夾內。
4. 將 {Processing 安裝目錄}\librarie\simpleARToolKit\print\pattHiro.pdf 列印出來。(視要用到的標記)
5. 至 {Processing 安裝目錄}\librarie\simpleARToolKit\examples 打開 demo01 或 demo02 範例。
6. 按下 RUN 按鈕編譯並執行。
7. 完工!

若是上述過程一切順利,您將會得到以下畫面 (追蹤 patt.kanji):

simpleARToolKit 建置成功畫面

若是出現以下錯誤畫面:

代表沒有 import Processing 關於視訊設備的輸出入函式庫,可在程式碼的頭幾行中,加入:

import processing.video.*;

即可成功執行 cheers :-)

 

實戰

import processing.opengl.*;
import pARToolKit.*; // 請先將 simpleARToolKit 放入 Processing 的 libraries 裡面
import processing.video.*; // 直接編譯&執行範例有出錯時加入此行

SimpleARToolKit ar01;

void setup() {
  size(320,240,OPENGL); // 這邊可更改 AR 的追蹤解析度 (解析度會影響效能)
  hint(ENABLE_OPENGL_2X_SMOOTH);
  background(0);
  frameRate(15);
  // patt.hiro 表示此程式碼會追蹤辨識 hiro 標記,可改成 patt.kanji,則會追蹤"人"的標記 (如上上圖)
  ar01 = new SimpleARToolKit(this,"patt.hiro");
  // 將 showBox() 註冊給 ar01,追蹤到 ar01 指定的標記時,執行 showBox() 函式
  ar01.register("showBox");
}

void draw() { // draw() 函式是依照 frameRate 率不斷執行其內容
  background(0);
  ar01.showImage();
  if (ar01.findMatch(100)) { // 猜測 100 是 Threshold 值
    ar01.showObject();
  }
}

void showBox(SimpleARToolKit t) {
  pushMatrix();
  noFill();
  stroke(255,200,0);
  box(50); // 可將此行改為其他 OpenGL 繪圖指令
  popMatrix();
}

以上為 demo01 的註解參考。
Processing 語法類似 Java,不過有其固定格式,詳情參閱 Processing 網站或是本身程式內的基本範例。

 

備註

(一) 要從 camera 中 crab 資訊,需要安裝 Apple QuickTime 或 iTunes (有版本連帶 QuickTime) 以及 WinVDIG,請安裝下載。[原文出處]


(二) 每個範例的目錄下都會有個 data 子目錄,如 {Processing 安裝目錄}\librarie\simpleARToolKit\examples\demo01\data

而 data 目錄下的東西都有其用途:

  • camera_para.dat 儲存相機參數用 (在 ARToolKit 中可針對自訂相機作相機校正)
  • patt.hiro 標記檔
  • patt.kanji 標記檔

(三) 若您覺得標記太少不敷使用,有以下辦法可解決:


1. 在 ARToolKit 中可針對自訂圖式轉存為 patt 檔,可供程式讀取辨識。
2. 可在網上尋找關於 ARToolKitPlus 這套軟體,內有最高支援 4096 個辨識效果佳的標記,可以拿來利用。
3. 製作 pattern 的程式下載(@dk01.cc)

[ 尚待補 ]

創作者介紹

DKBLOG

DK 發表在 痞客邦 PIXNET 留言(6) 人氣()


留言列表 (6)

發表留言
  • 小郭
  • 請教您

    因為最近也在碰AR
    很想請教您如果是使用flash來撰寫..不知道怎麼操作...所以想要請教大大@@ 感恩
  • 你好 ^^

    已PO"FLARToolKit"測試文

    DK 於 2009/03/23 11:13 回覆

  • 阿宏
  • 不好意思 我想請問一下 他在建構的時候似乎不能摻雜中文路徑在裡面 後來移到D槽可執行

    但之後匯出單獨執行檔似乎也是會有一樣的問題 造成不能在桌面正常執行的問題 這有辦法解決嗎 ??

    不好意思 最近也在研究AR的新手 謝謝^^
  • 路徑或檔名不能有中文這件事情的確頭痛,
    我記得我上次用1.0.3也有此問題,我不確定之後版本是否有解決,你可以試試看 ^^

    若始終沒解決,只能請您放在根目錄或英文路徑下以確保其正常運作。

    DK 於 2009/12/30 10:37 回覆

  • 阿宏
  • 喔~我是用最新版的(1.0.9) 看來還是沒辦法了 / \
    請問一下...WinVDIG這是用來解決Window連結視訊的問題

    那Mac的呢? 因為我匯出Mac執行檔後 拿給Mac的朋友 似乎就無法連結到視訊
  • Mac平台需安裝QuickTime才能使用video lib
    我本身使用都正常 你再試試吧 ^^

    DK 於 2010/01/01 18:21 回覆

  • Jerry
  • 請問我在這裡如何導入自己的3d模型? 或是一個animation?
  • wow 我總是偷懶,最近常被抓包

    這篇漏提了 ARToolKit User 常用到的 X3D/VRML。這對於想將自製 model/animation 由 Max/Maya 轉出後放入 AR application 的玩家來說非常重要。

    對 Processing 而言,到目前的 1.0.9 似乎在 OpenGL 那塊並沒有加入可直接將 VRML 讀入場景的功能,而我們就算腦筋再好也不能每次都用 OpenGL 去撰寫複雜的模型。

    關於這點,必須找找 VRML Library for Java,大致而言支援 Java 等同支援 Processing。我稍微找了一下,國外 Processing 官網討論區也有人在討論這些,他們也找了兩個解決方案,可將 VRML 讀進場景中,請參考看看:

    Xj3D
    http://www.xj3d.org/

    CyberX3DFor Java
    http://www.cybergarage.org/cgi-bin/twiki/view/Main/CyberX3DForJava

    DK 於 2010/02/11 13:24 回覆

  • chang
  • 跟著這篇文章所做以後終於成功試出方形出現在標籤上
    請問我該如何才能知道關於方形的座標呢?
  • 請參考API中關於 ARMarkerInfo 這個 structure ^^

    DK 於 2010/09/21 10:42 回覆

  • 毛 那根
  • 你好,不好意思我想請問一下
    我是依照您上方語法輸入
    但他顯示「The constructor SimpleARToolKit(demo01,String)is undefined」
    然後標示在「ar01 = new SimpleARToolKit(this,"patt.hiro");」
    請問您知道我的問題是出在哪裡嗎?
    謝謝>"<