2015年2月24日 星期二

AR擴增實境製作流程與心得分享

    AR擴增實境指的是會把虛擬資訊加到使用者感官知覺上的顯示器上,將電腦虛擬世界與真實世界裡的圖片、素材和資料加以結合,產生出複合式的影像。讓使用者不但可以同時看到真實世界的景象及虛擬世界的元素,同時還創造出許多令人想像不到的互動。AR擴增實境系統與某些虛擬實境雷同的技術,但有項根本的差異:VR虛擬實境企圖取代真實的世界,而AR擴增實境卻是在實境上擴增資訊。因為上次的院區開放而有接觸到AR擴增實境的機會,趁此紀錄一下期間的操作流程與心得。

    ARToolKit是AR擴增實境較為普遍使用的軟體,網路上有許多教學,但是大多是給有程式設計背景的人看的。由於這次接觸AR擴增實境的目的是為了院區開放所做的實驗性活動,主要目的是吸引一般民眾,帶動現場氣氛,故不需要很深入的研究,和我一樣不懂如何編寫程式碼,但是又想試試,可以去網路上下載  [ARToolKit必要環境懶人包] 。

步驟1.安裝:
先將ARToolKit必要環境懶人包\AR_Req_Pack_DK\glut-3.7.6-bin\glut32.dll,複製到 C:\Windows\system 既可開啟。


圖A   複製glut32.dll到C:\Windows\system


步驟2.開啟:
先裝上視訊攝影機,開啟 ARToolKit\bin\simpleVRML.exe 跳出視窗。


圖B   視訊設定


每個攝影機的設定介面都會不同,但設定都大同小異。先使用內定規格,按下[確定]就會出現視訊攝影機畫面。


圖C   視訊畫面


步驟3.設定自己的圖示
畫出你的圖示,圖示一定要有外框,因為程式是利用外框的變形來做定位的。
裡面的圖示不要太複雜或線條太細,若攝影機不夠好的話,容易判斷錯誤。
但太簡單又會造成在一般拍攝時的視訊畫面上,程式會誤認為某些物體為該設定的圖示,導致明明沒有該物件會出現的圖示,該物件卻在不該出現的地方出現的情況。所以線條清楚、黑白分明,略帶排列的幾何圖形較為適合。


 圖D   設計適合的幾何圖形


圖示設計好後列印出來,列印的材質也是要注意的地方。如果會反光或紙質太軟,都會照成程式判斷錯誤而辨識不出來,導致顯示物件閃爍或無法顯示的情形。這次是使用卡典西德貼在壓克力板上,較能避免上述問題。


圖E   使用材質較硬與不易反光的材質於圖示上


開啟ARToolKit\bin\mk_patt.exe,開啟後會問哪個相機,直接按 Enter 執行。


圖F  直接按 Enter 執行

執行後接下來攝影機的畫面就會出現。攝影機對準圖示它會出現紅綠的框,盡量拍攝的正一點,並設法為紅色左上角,綠色右下角,讓程式能夠清楚辨認。


 圖G  將圖示擺正已變程式判斷

都調整好確認後,在攝影機畫面上點一下畫面就會定住。 接者另一視窗的dos畫面,於Enter filename:後,打上圖示的名稱。按 Enter 進行圖示辨認的存檔。


圖H  儲存該圖示的名稱


回到ARToolKit\bin,可以看見剛剛所存下的圖示名稱檔案。


圖I   圖示名稱的檔案會出現在bin下


步驟4.指定檔案與圖示
首先將 ARToolKit\bin\Data\ object_data_vrml 以記事本開啟進行設定。


 圖J  以記事本開啟


object_data_vrml#the number of patterns to be recognized 2
此欄為設定模型出現數量,內定是2,能出現的數量似乎與電腦配備有關。
目前我這台最高能出現20組,超出容許範圍將不會出現任何模型於畫面上。
#pattern 1 VRML
此欄為第一組物件
Wrl/1.dat
此欄為第一組指定物件的位置。
Data/A
此欄為第一組指定圖示的位置 (文件內定圖示指定在 Data下,記得將之前儲存的 A 圖示檔案移到 Data 檔案夾中)。
80.0
此欄第一組為數值越大模型越小。
0.0 0.0
此欄第一組為物件的原點座標。
#pattern 2 VRML
此欄為第二組物件。
Wrl/2.dat
此欄為第二組指定物件的位置。
Data/B
此欄為第二組指定圖示的位置。
80.0
此欄為第二組數值越大模型越小。
0.0 0.0
此欄為第二組物件的原點座標。

步驟5.置入自己設計的模型
這軟體支援的格式為wrl檔,將所製作的模型輸出為wrl格式ARToolKit\bin\Wrl 既可。


圖K  輸出成wrl格式於Wrl資料夾中


轉存時要注意的是軸向部分,ARToolKit 與 3ds MAX 不同,3ds MAX 的上視圖到 ARToolKit 為正視圖。我的作法是先在3ds MAX 做好模型後,將整體由正視圖的方向旋轉為上視圖,避免製作上的不習慣。
貼圖部分,就我試驗得知有支援 JPG 與 PNG 格式,TGA格式不支援。貼圖方式按照 3ds MAX 原有的貼圖方式設定既可,不用做其他設定。繪製好的貼圖一樣放置於 ARToolKit\bin\Wrl 中程式就可以讀取到。貼圖若需要透空的話,於 PHOTOSHOP  將所需要去除的背景清除,直接存成 PNG 格式。回 3ds MAX 將模型賦予所賦予的材質球下,Diffuse Color 給予 PNG 格式的貼圖既可,不需要在Opacity 給予下貼圖指定。


圖L 背景清除存成 PNG 格式既可



圖M   不需要額外於Opacity 給予貼圖指定

ARToolKit 也可以呈現 3ds MAX所製作的動態,除了一般的位移、旋轉、縮放外,也有支援 Morpher 功能。


圖N   支援 Morpher


3ds MAX的分子系統需要將其轉為物件,就可以在 ARToolKit 呈現分子的部分。但 3ds MAX 的 Particle Flow 由於是反應式串連的寫法,目前還沒找到可以順利轉成物件的方法,所以只能使用直線式的分子操作。


圖O   將分子轉為物件



圖P   反應式無法轉為物件


被骨架帶動的物件,輸出時coordinate interpolators 選項要打勾既可。但是測試的結果,有時間差的問題無法解決。也就是在 3ds MAX 製作的動態, 會與 ARToolKit 所看到的 tempo 不一致,有慢拍的問題,若講究動態細節的話就會體悟其差別所在。


圖Q   骨架所帶動的動態,輸出時coordinate interpolators 選項打勾


輸出時還要注意 Bitmap URL Prefix 要將貼圖路徑改為在電腦中的路徑。另外 Normals 要勾選,並於模型上加上 Edit Poly,否則輸出的模型會有利邊。


 圖R  輸出時其他注意事項


模型輸出到 ARToolKit\bin\Wrl 之後,還需要一個 dat 檔。這裡將範例的 sample.dat 複製,將檔名改為先前所輸出時命名的 Wrl檔一樣的名稱。接著將該 dat 檔用記事本打開,把 dat 檔裡的第一行同樣改成輸出時命名的Wrl檔。


 圖S  將dat 檔改為輸出wrl時的名稱


最後回到 ARToolKit\bin\Data ,以記事本開啟 object_data_vrml。將
#pattern 1  VRML  Wrl/1.dat  Data/A  80.0  0.0 0.0  改為
#pattern 1  VRML  Wrl/hat.dat  Data/A  80.0  0.0 0.0


 圖T  將object_data_vrml內容也改成輸出wrl時的名稱


改完儲存關閉後,開啟 ARToolKit\bin\simpleVRML.exe,自己所做的模型就會出現在視窗當中。


 圖U  自製的模型呈現在視窗中


    以上是這次使用 ARToolKit 的流程與心得,在網路上還看到許多其他AR擴增實境的軟體,運用發揮得相當活躍,其中還能透過圖示給螢幕中的物件下指令,圖示就像是有真的按鈕一樣,透過辨識達到操作物件的效果。給右轉的圖示,物件會右轉。給左轉的圖示,物件會左轉。可惜礙於缺乏程式語言的技術,否則將有更大的發揮空間。例如前一陣子,日本的旅遊景點以鬼怪作為主題與app手機結合,運用AR擴增實境的功能,在特定地點,透過手機辨識圖片,手機中就會有鬼怪出現,達到與旅客互動的效果;某知名家具大廠,它所發行的型錄,經由讀取辨識圖片,3D家具就現身在螢幕上,更為消費者能貼近規劃想要的空間擺飾。可以想見在未來,隨著AR擴增實境技術發展越來越成熟,AR擴增實境將會深入到日常生活之中。將使得更多的活動或行銷創意能夠有被實現的可能性。