2010年10月24日 星期日

擴增實境(AR,Augmented reality)簡易測試

既然可以編譯成功,
後續當然是了解一下AR的運作原理,
了解後就可以思考應用面的問題囉。

運作原理透過Google大神找到一篇還蠻經典的,簡單易懂,
我引用一張圖出來,應該很容易了解AR的運作方式,












看到這裡,
基於原始範例程式的架構,
以下的component如果可以換成我要的,
那就完成初步的測試:
(1)   marker à 可以不要是 嗎?
(2)   3D object à 可以換成我要的3D object嗎?
(3)   marker à 可以自訂marker嗎?


(1) 置換其他的marker
回到simpleLite這個專案下的simpleLite.c source code
      char *cparam_name = "Data/camera_para.dat";
         char *vconf = "";
         char *patt_name  = "Data/patt.hiro"; à "Data/patt.sample1";

doc\patterns\Sample1 pattern.pdf à 印出marker

執行bin\simplelited.exe測試,哈,沒啥難度~


(2) 置換其他的3D object
回到simpleVRML這個專案下的simpleVRML.c source code
const char *cparam_name = "Data/camera_para.dat";
char *vconf = "";
char objectDataFilename[] = "Data/object_data_vrml";
看了一下object_data_vrml 檔案內容
#the number of patterns to be recognized
2
 
#pattern 1
VRML   Wrl/apple.dat
Data/patt.hiro 
80.0
0.0 0.0
 
#pattern 2
VRML    Wrl/snoman.dat
Data/patt.kanji 
80.0
0.0 0.0
apple.dat
apple.WRL
0.0 0.0 25.0           # Translation
90.0 1.0 0.0 0.0               # Rotation
0.75 0.75 0.75         # Scale


看起來3D object marker都定義在上面這些關連的檔案內囉~
以下就來改一改測試一下囉:

2.1 simpleVRML.c
const char *cparam_name = "Data/camera_para.dat";
char *vconf = "";
char objectDataFilename[] = "Data/object_data2_vrml";

2.2 copy object_data_vrml to object_data2_vrml
object_data2_vrml 檔案內容
#the number of patterns to be recognized
2
 
#pattern 1
VRML   Wrl/test.dat
Data/patt.hiro 
80.0
0.0 0.0
 
#pattern 2
VRML    Wrl/snoman.dat
Data/patt.kanji 
80.0
0.0 0.0
test.dat
cylinder.wrl
0.0 0.0 50.0           # Translation
90.0 1.0 0.0 0.0       # Rotation
25 25 25               # Scale
cylinder.wrl 是網路上隨便找的3D模型

重新編譯simpleVRML及執行,哈,可以喔~


(3) 自訂marker
doc\patterns\ Blank pattern.png是基本的marker檔,你的識別item必須在以下的圖例中間,超過中間的部份會被忽略喔。來試看看吧~

有個mk_patt專案,這個可以訓練自己的marker
執行bin\mk_pattd.exe

帶入default camera參數

輸出大小,我選了640 x 480

我勾選了垂直相反,


不然影像是顛倒的(這部份我沒深入去探討原因)

~找了之前列印好的Hiro pattern


再加上10元硬幣,確定後在Camera畫面上click一下

輸入要儲存的檔名,這個marker檔就產生囉。
趕快來測試看看:
把剛剛產生的patt.coin copy to bin\data 目錄內,
修改object_data2_vrml 檔案內容
#the number of patterns to be recognized
1
 
#pattern 1
VRML   Wrl/snoman.dat
Data/patt.coin 
80.0
0.0 0.0

執行simpleVRMLd.exe
底下有10元硬幣的marker就可以顯示3D object
10元硬幣移開的marker就無法顯示3D object~







1 則留言:

  1. 可以請問一下,要是我用網上下載回來的artoolkit2.65vrml

    在自製marker時卻沒有video Catpure的部份
    結果出來是上下顛倒的,
    怎樣才可以找到(垂直相反的)選項唷?

    回覆刪除