VRML
VRML(Virtual Reality Modeling Language, 於西元1995年前被視為 Virtual Reality Markup Language) 為一種三維圖像(3-Dimensional Graphic) 的標準檔案格式,以標記語言(Markup Language) 的形式來紀錄向量圖形 (vetor graphics) 中多邊形 (plygons) 的頂點 (vetices) 及邊線 (edges)。所以若直接用文字編輯器開啟 VRML 檔案 (一般而言,檔案類型為 .wrl,一些經過 gzip 壓縮過的檔案類型是 .wrz) 看到的會是類似於結構語言,如下:
#VRML V2.0 utf8
WorldInfo {
title "Test Sphere"
}
DEF Sphere1 Shape {
appearance Appearance {
material DEF Red Material {
ambientIntensity 0.200
shininess 0.200
diffuseColor 1 0 0
}
}
geometry DEF GeoSphere1 Sphere {
radius 1.000
}
}
早期的 Web3D 開發者,可能會像筆者寫網頁用記事本一樣寫 VRML (筆者是死要面子 XD),也像早期用 C 寫 OpenGL 只能硬幹。大概也隨著科技日新月異 (老梗),開始有一些 3D 建模、動畫大尾軟體開始支援 VRML 的 Export,方便創作者在 3D 圖形軟體如: 3ds Max, Maya 內建模甚至製作完動畫後直接轉檔使用。
但是轉出成 .wrl 後,又有一個麻煩的事情,就是如何方便觀看轉出的 VRML 有無瑕疵 (這邊指的是貼圖跑位、模型在轉出運算上的失誤等等),總不能每次開 3ds Max 拉進來看 (電腦像鋼鐵人一樣猛的可以這麼作),所以就有了所謂 VRML Viewer 的產生。也因為 VRML 的主要用途便是於網頁上觀看三維圖像,這些 VRML Viewer 通常也是跟 Browser 如 Mozilla, Netscape, Internet Explorer 等等 bundle 在一起,有好有壞,不過的確省卻了要打開 3ds Max 來看 .wrl 檔的麻煩。
對於想以 VRML 來展示 3D Model 的 AR 玩家,建議安裝 VRML Viewer 於系統中,網路上常見的似乎是 Cosmo Player,支援 IE 及 Firefox (不過筆者沒用過)。另外,微軟也有所謂的 Microsoft VRML Viewer 可以裝。
VRML in ARToolKit
玩膩了內建範例、內建標誌(marker)、一大堆的內建之後。每個玩家一定都急著想要將自己建得模、或動畫等等放上 ARToolKit 玩弄一翻 (羞)。當然,也要順便來翻玩一下 ARToolKit 的 marker。恕筆者把這兩件事情列為此篇 VRML 實戰的主軸:
1. 更換自己的模型
- a. 請先將於 3DsMax 中匯出(Export) 自己的模型或動畫,副檔名選擇 *.WRL(VRML97)。
- 一些細節(材質, 面數) 選項[如下圖],請特別注貼圖放置的相對位置(Bitmap URL)
- 有些網友指出貼圖檔只能使用 GIF 格式,但筆者本身經驗是可使用 JPG 格式,請自行斟酌。
- 如果程式功力不錯的網友在 VRML 顯示上有大問題,可嘗試將新的 OpenVRML 引入此 ARToolKit 專案,畢竟 ARToolKit for Free 已經很久沒 Update 了
The figure is from Bruno Cipriano e Vasco Bila (MovLab) 2007.
- b. 切換目錄至 {ARToolKit}\bin\Data
- c. 以[記事本]或[文字編輯器]開啟"object_data_vrml" (無副檔名)
- d. 將 1 改為要讓系統認得的 marker 數量: (認出3個marker即填3)
#the number of patterns to be recognized
1
- e. 若有三個 marker 要系統辨識,則以下參數需針對每個marker個別定義一次。
- 第一行 VRML 為 dat 檔所在之相對路徑 (Wrl/bud_B.dat即{ARToolKit}\bin\Wrl\bud_B.dat)。此檔功用後面會詳述
- 第二行 Data/patt.hiro 意即系統在辨識出 Hiro marker 時,會顯示上述的 Model (蜜蜂轉呀轉的預設動畫)
- 第三行 80.0 應為預設 marker 大小 (待確認)
- 第四行 (待確認)
#pattern 1
VRML Wrl/bid_B.dat
Data/patt.hiro
80.0
0.0 0.0
- f. 確認執行檔未開啟(simpleVRML),將 object_data_vrml 存檔。
- ps. 關於 bud_B.dat 或自設 xxx.dat 之修改方式,如同上述請以[記事本]或[文字編輯器]開啟。
此檔之目的為記錄 VRML File (wrl) 檔名、所在位置。另外一方面可以針對此 Model 進行位移、旋轉、縮放的設定。好處在於若遇到 Model 在場景位置不正確、物件大小比例與實物不符等等問題時,不用將檔案丟到 3DSMax/MAYA 微調。
- 第一行 wrl 檔名
- 第二行 針對 Model 位移(Translation)
- 第三行 針對 Model 旋轉(Rotation)
- 第四行 針對 Model 縮放(Scale)
bud_B.wrl
0.0 0.0 0.0 # Translation
0.0 0.0 0.0 0.0 # Rotation
10.0 10.0 10.0 # Scale
- g. 存檔,執行範例程式。
2. 如何製作自己的 Marker
- a. 請先移動至 {ARToolKit}\bin (建議在DOS或命令提示字元底下運作)
- b. 找到 mk_patt.exe 並執行之,他會詢問相機參數檔,預設可直接按下 Enter
- c. 此時會開啟 Webcam,請將攝影範圍對準您自訂的 marker,盡量正面且不要將邊角落在攝影範圍外
- d. 直至出現以下紅綠框框住您所自訂的 marker
- e. 接著在視窗中點一下滑鼠,即可輸入檔名儲存自訂 marker
- f. 配合上述[更換自己的模型]章節提到的,我們可將 object_data_vrml 檔案中 "
Data/patt.hiro" 部分改為自訂 marker 所儲存的檔名(ex. Data/patt.DK),即可使用。
[更多詳細實戰待補完]
REFERENCES
VRML, Wikipedia, http://en.wikipedia.org/w/index.php?title=VRML
ARToolKit官方網站, http://www.hitl.washington.edu/artoolkit/
其他相關文章
ARToolKit 實戰/教學(一) 建置篇

您好 我想請問一下 ARTOOL的MUTIL該怎麼改 我看不太懂MUTIL裡面的MARKER與 PATT.a - f的關係 不知道該如何下手去改他
哈囉~ Multi 那個範例我也還沒鑽研很深入。就我所知,他同時偵測許多 marker,你必須用記事本去修改 marker.dat 裡面的資料,可以將 Patt.a-f 改成自己想要的 marker!其他還有一些參數你可以試著調整! 歡迎交流心得~
請問VRML可不可以匯入聲音阿? 因為聽網路上的ARtoolkit都有聲音.... 哈哈~~ 想來玩玩看
hi 乖乖 VRML 通常是模型的向量集合或動畫 對於您看到有聲音的很有興趣,可不可以提供一些連結呢? ------------- 2010.06.15 updated 可參考 Sound in VRML Examples 的寫法 http://www.ifi.uzh.ch/groups/ailab/people/nitschke/VRML2/Sec9.htm
嗯嗯~ 就像下面影片阿 http://www.youtube.com/watch?v=N6e-65EGt7U&feature=related 不過我也是不太懂啦~ 也不知道是不是用VRML辨識的 音樂還可以隨波律動 真神奇 XD
大致看了一下 上傳者有提到是從日本網站下載而來的範例,但沒留下連結所以也只能用猜的 我的判斷是用ARToolKit追蹤,並處理來源聲音的訊號(類似於Media Player的Visual Effects)。最後餵給OpenGL產生動畫。 可以試試OpenAL融入ARToolkit這個方向寫寫看 ^^
最近困惑在關於更換模型以及更換marker的問題,因為我已經有自己建的模型.wrl,想請問我該怎嚜修改程式哪裡呢?那麼也怎嚜去變換我的marker呢?不要使用內建的hiro 謝謝你
抱歉 +.+ 小弟我實在太懶了! 居然一直都沒補齊這篇! 先回答您這兩個問題,草撰於本文,先參考一下,稍待補齊
哈囉~ 您好 抱歉又來打擾了 因為在下碰到了一個怪問題 有關 simpleVRML compiler 以下是我在編譯時產生的問題 1>正在產生程式碼... 1>正在連結... 1>LINK : fatal error LNK1104: 無法開啟檔案 'libarvrmld.lib' 1>已將建置記錄儲存於 "file://c:\Program Files\ARToolKit\examples\simpleVRML\Debug\BuildLog.htm" 1>simpleVRML - 1 個錯誤,13 個警告 ========== 建置: 0 成功、1 失敗、27 最新、0 略過 ========== 編譯後會出現這樣的錯誤 請問跟我用Visual Studio 9.0 (2008) 有關係嘛? 而且編譯ARtoolkit其它組件都沒錯誤 唯讀simpleVRML 可以幫忙解答一下嘛 XD
應該是找不到 libARvrml 試試看將整個專案完整編譯過一遍,把預設沒開的項目也要打開編譯,再去作個別修改囉! ----> 詳見實戰教學(一) Build章節第10.項 我目前確定 VC6/7(VS2003)/8(VS2005) 沒問題, VS 2008 就要等你告訴我了 ^^"
請問我從網路上下載這個wrl檔 http://www.dewantoro.net/search/download+free+wrl+3d+model 照你的步驟走,更改object_data_vrml 和自行設dat檔,但不能讓影像呈現耶!! 請問是哪裡出問題,還是wrl檔有特定的規格限制 或者dat檔不能自行做!!因為我是直接把密蜂的改成下載的那個檔名去讀 請問這樣可以嗎?
wrl根據我經驗,有所限制。轉出時貼圖路徑的設定也會影響顯示結果。 dat檔可以這樣去改沒問題,至少我都是這樣^^" 可是dat要確認檔案裡面對應的wrl檔及一些資訊。有時候在建模時並沒有注意的細節常常會影響顯示結果:我碰過模型大得超出場景之外(scale), 或是模型有親地板(rotation)和騰空飛起(translation)的狀況發生。
你好~不好意思過了這麼久又來發問~ 請問一下 MAX檔轉VRML之後 ,怎麼讓他在ARTOOL裡吃的到貼圖? 不然都只能用MAX的選色...另外再問除了貼圖外~材質他也吃得到嗎?
真抱歉,一直沒找到 3DMAX 來複習一下,所以也遲遲沒貼上來VRML轉出方法。 據我所知及使用經驗,是可以成功轉出貼圖並呈現於 ARToolKit。材質方面我不確定,這要查查 OpenVRML Library 的支援程度了!
感謝回覆 瞭解了~我去翻翻其他的辦法好了
請問同樣在3D-MAX完成動畫與非動畫兩個作品,並輸出成wrl格式..且使用與蜜蜂相同檔名的bud_B.wrl做覆蓋測試...非動畫的作品..可以正常顯示..但是有動畫且使用到照相機與自發光材質的動畫卻無法顯示...還有一個問題~~大大提到的Rotation..裡面的四個數值..分別是什麼呢..??
我最近比較沒在仔細看文章,這必須查一下 ARToolKit 手冊,或是你能自己將 ARToolKit 裡面 OpenVRML 那塊給更新,對 WRL 的支援程度應該會有不少提昇。 PS. 原 ARToolKit 使用 OpenVRML 0.14.3,而 OpenVRML Library 現已經更新至 0.18.3
樓上的 根據我試作的結果 VMRL好像不支援VRAY 所以如果是用VRAY的發光材質 或是燈光 都是沒有效果的
的確,之前的經驗是不支援 VRay。 OpenVRML 環境下, 如果想要將三維物件弄得看似真實點,可能必須再搭配使用 OpenGL 程式撰寫了...
請問有人實驗過Maya轉vrml成功顯像嗎?
急問 請問有人知道怎麼把含有BONE的3D MAX洞化正確轉成VRML嗎 目前轉成VRML之後都只出現骨頭動但是 MODEL沒有動的狀態
試試 BS Exporter V2.0, 手邊資料看起來是有支援骨骼動畫 若成功,請再上來分享 ^^
先回上面的 你有把人物 跟 骨骼 鎖住嗎? 再來我要發問的 目前 我要製作 有兩張標籤 會出現第三種動畫 可是 我的畫面 會有三種動畫 怎樣 可以蓋過 前面兩張動畫呢 = =
可能要請您再詳細描述,大家可以一起討論! ^^"
感謝回復 首先我不太清楚你鎖住的意思!? 我有用Physique去榜皮膚(如果你是指這個的話@@) 另外~你的問題應該要用程式去解決~可以使用鍵盤輸入 隱藏或顯是某幾個模型
試試 BS Exporter V2.0, 以下從手邊查到的資料中列舉幾個與您有關的: 1. 支援Physique骨骼動畫 2. 支援多重材質與紋理 3. 環境反射座標紋理 4. 單網格多重貼圖 因我本身不是做動畫的(不太會),所以要請您實驗看看了!若成功,請再上來分享 ^^
------------------ | | | a b | |----------------| 虛線 是黑框 a 是 HIRO B 是另一個標籤 目前我只能用這樣子 這樣子 製作標籤 才能 讀到黑框 可是我現在是想要 不需要外面的黑框 就可以 直接 讀到 A 跟B 的標籤 這樣子 在運用上 好用 感謝大家
您好,我想我能懂您的問題。 我一開始也想這麼做,覺得那黑色方塊不是我的需求,於使用上也與AR的內容無直覺與關連性。 不過不幸的,ARToolKit的追蹤系統是從尋找那個黑框開始的,找到黑框才會對裡面的圖樣做圖形辨識。而對為何要使用那黑色外框做追蹤對象感到有興趣的話,可以拜讀Owen, C.B在2002年發表於IEEE的一篇"What is the best fiducial" 若非得秉除那黑框,只好自行改寫tracking部分的程式了,以上,希望能幫助到您
謝謝 所以說 在不改寫黑框的程式前提之下 我要讓 HIRO 跟 人這兩張標籤 在攝影機 之下 會產生第三張標籤 只能利用 判斷兩張標籤的位子 來產生了嗎?
我姑且猜測您的目的是想要用兩張Marker合併後才會出現AR Content,那您必須改寫程式如兩張marker都被偵測到才執行OpenGL那部分 若不諳程式或者不想花時間大改程式,可以嘗試往multiTest這個範例著手,會省很多時間!
音效問題...我把聲音程式碼放在約20行的地方,如下: ....transparency 0 } Sound { source AudioClip { url "Wrl/BIRDS.WAV" stopTime -1 #不停播 loop TRUE } location 1 1 1 #聲音位置 intensity 50 #聲浪大小 direction 0 0 1 #聲音方向xyz minFront 5 #前面5米內聲浪不變 minBack 3 #後面3米內聲浪不變 maxFront 40 #前面聲浪漸淡至40米 maxBack 20 #後面聲浪漸淡至20米 spatialize TRUE #立體聲} # End of AudioClip } # End of Sound } geometry DEF pSphere1-FAC.... 執行"simpleVRML.exe"之後沒有聲音,連原本的模型都不見了... 有解決辦法嗎... :"(
在執行範例時應該會有 rendering 的 error messages 吧! 可否貼來參考,有助於解決問題喔 ^^
不好意思請問一下,我用maya輸出.wrl檔照你的方法做都沒辦法讓圖顯示出來耶!但可以用DirectX打開,圖示完整沒錯的!
ARToolkit2.65與2.70用了不同版本的OpenVRML,國外討論區也有不少人提到一樣的WRL File原本2.65能用,到了2.70卻不能呈現。這必須去參考OpenVRML的資料,或是您可以在兩個版本間做測試比較看看。
大大你好: 小弟是研究生,也是從事有關AR這方面的研究,想請問一下有關個人化marker的設計,有没有什麼限制條件呢? 還是只要有黑框,黑框裏面的隨我們自行設計呢? 感謝。
如您使用ARToolKit開發是以黑框為準中間圖樣自行設計沒錯喔,若不要黑框則可改寫ARToolKit Tracking那塊 :-)
您好!!!小妹我是個大學生 因為專題有接觸到AR這塊 剛好看到這篇文章 實在太好了!! 看完 還是有點不太懂 這是用什麼語法寫出來的? 目前小妹我遇到的難題是怎麼辨別三個圖識請問大大有沒有什麼建議的!? 還有請問大大有沒有建議載AR這方面看的書籍或是網站? 感謝您!!:D
你好,可以參考第一篇,裡面有提及一些國外書籍,另外也有一篇討論國外相關應用與網站,可參考看看喔! 語法基本上是C/C++語言,若不習慣可改用FLARToolkit(Flash)或NyARToolKit(Java)喔。
大大你好 我有一個問題 就是可不可以在辨識紙上崁入SWF 檔 OR MOV 檔 小弟找了很多資源好像都沒辦法 請問大大有沒有可以解決的辦法或方向?? 謝謝提點
最快的方式: 直接使用 FLARToolkit喔! 改寫繪製 3D Content 那部分的程式碼, 改成 loadMovie 即可.
你好 最近有接觸到AR 想請問一個問題 如何讓Mark移開之後影像仍然保留在電腦上呢? 不然可以讓模型不要一直閃爍嗎?! 這問題困擾我好久,麻煩大大不知道有沒有解決方法?!謝謝ˊˋ
直接改寫程式最快喔! 如果沒理解錯誤 您是希望 marker 僅輔助3D定位之後即移出相機拍攝範圍, 但 3D Content 仍繼續在畫面上是嗎? 之前有試過,確定可行喔 ^^
請問是改寫程式的哪一個部分呢? 目前是用Flar tool kit 我還是新手,請多包涵...> <
ARToolKit是改arDetectMarker.c和arGetMarkerInfo.c等,然後包成lib。 FLARToolKit必須再找找了,因為他基於NyARToolKit,而Ny又是將ARToolKit原核心編譯port to Java。理論上是要將ARToolKit或NyARToolKit那邊追蹤marker的地方改完重編譯,再拿來FLARToolKit這邊用。
抱歉,想請問一下,是不是一定只能用.wrl檔才能顯示呢?
如果原核心不動的前提下,能用OpenVRML(.wrl)和OpenGL繪製3D。 也可以想辦法外掛可解析X3D的Library 這方面FLARToolKit的選擇就多不少。 可以Papervision3D, Away3D, Sandy, Alternativa3D 等套件繪製3D。
我想請問一下,攝影機跟標記的距離是要看那一個地方,現在卡在這邊,麻煩你了,謝謝
arGetTransMat(&marker_info[j], patt_center, patt_width, patt_trans); 應可大致推估攝影機與標記間的距離
請問,那這樣的話,我想使用obj.3ds.stl或ply檔就沒辦法呈現喔??
您必須看一下OpenVRML的支援度。或許新版的OpenVRML可以,那麼便可將ARToolKit中的OpenVRML那部分更新。 我碩士班期的指導老師是有在C++中成功讀取.obj/.3ds檔,並於OpenGL中繪出的經驗。記得當初他用得Library也是網路上的OpenSource。您或許可在SourceForge上找到。
請問一下 因為我想做像multiTest 可以蓋住marker時可以換一個圖的效果,請問應該怎麼下手呢?謝謝
您好 可參考 examples/multiTest
請問marker從定位到辨識(包含二值化)的程式大概在哪裡,可否告訴我 謝謝
您說的在 arDetectMarker 裡面可以找到
你好 請問一下 artoolkit裡面有個範例是可以讓茶壺旋轉的,那有沒有哪一個是可以讓vrml模型旋轉的? 或是有哪裡可以參考? 麻煩你了!謝謝你!
請問能讓茶壺旋轉指得是哪個範例呢? 你可以將之與simplevrml的draw部分合併喔!
"graphicsTest"是這個! 謝謝你!
你好 請問一下 我想請問一下要怎麼讓兩個object可以顯示不同的顏色 例如relationTest這個檔? 拜託 麻煩你了:)
我有成功製作出Mark 可是卻沒辦法顯示出模型 不管修改object_data_vrml裡的 VRML Wrl/bud_b.dat Data/patt.hiro 改bud_B.dat還是改patt.hiro都沒法使用自己本身的Mark或.wrl檔 是哪個部分有問題嗎 謝謝^^"
是否有error log可參考呢?
你好,我又來發問了 這次想問關於模型比例的問題 在我的3ds max中模型是1:1建立出來 可是投影出真實世界時並不是1:1 (理應我使用3米的模型,畫面會完全被擋著吧?) 我想到是物件的比例跟marker size有關(上面有說預設marker size為80) 可是我做的專題,比例問題是一個很大的障礙 針對這點我題出一些問題: 1. 80 是不是marker邊長? 是的話,單位是什麼呢? 2. 有書籍或網址可以參考 比例運算的方法嗎?
建議您參考本篇 1. (f),每個.dat可以針對每個vrml model去修改translation, scale等。 marker size 的問題,我不是很清楚。 印象中,拿 hiro.pdf 以A4 paper一比一印出來會是8cm,這部份我不敢肯定。 bud_B.dat File ---- bud_B.wrl 0.0 0.0 0.0 # Translation 0.0 0.0 0.0 0.0 # Rotation 10.0 10.0 10.0 # Scale ---- 將最後一行改為 1.0 1.0 1.0 # Scale 試試看 :-)
我的問題以解決,原來是我抓錯檔案= =" 看到上面有人問說MAYA轉檔問題,我用過是不行的 所以我是MAYA存成.wrl檔後匯入3DMAX裡面再重新匯出一次.wrl檔後就可以讀取到模型了。 至於3DMAX貼外部材質則是在匯出要存檔時,在../maps那裡貼上你要貼的材質路徑再按OK即可。
您好, 我自己做Marker之後 影像沒辦法顯示動畫 都有設定好了 動畫也是從MAX會出WRL檔 請問哪裡出錯了
如果您用VRML Viewer動畫顯示正常, 那可能要trace一下Customized marker是否有被正確讀取。
你好, 看過你的教學以後我使用Google sketching up輸出VRML格式的檔案, 可是放到AR中常常有部分材質無法顯示, 請問你知道是甚麼樣的問題嗎?
請問我可以不要是藉由改dat檔裡的Rotation來旋轉嗎?? 可以直接從程式裡面讓它旋轉嗎??? 我想要當我按下左鍵..圖中的人物即轉向左邊.. 但怎麼試都試不出來!!!:( 可以幫幫我嗎!!!!>"<
您必須先了解 OpenGL程式架構。 大致說明一下,通常 OpenGL 用 KeyboardFunc 監聽使用者按鍵,例如當監聽到左鍵時給予 glRotate (旋轉指令),其實作法很多。^^
你好,看到你的文章讓我對AR有了基礎的認識 在此可以跟你要artag的sdk嗎...到處都抓不到 只剩下ftp://cgip.kyungwon.ac.kr 有 不過沒帳密無法登入 THX
http://www.scss.tcd.ie/~jzhou/tutorial_ARTag/artag_rev2k_demo_windows_0608.zip
你好 我將3D模型匯出後發現以下問題(模型有包含動作) 1.透空貼圖無法正常執行 2.骨架顯示並且會動 但是模型本身不會動 請問我該如何更正呢?? 不吝指教 謝謝版主:)
請問我跑出來的3d模型有出現物件位移(一個檔案裡有一個部位自己跑掉位置)、抓不到貼圖(我用c4d輸出時有選擇"with file了")的問題讓我一直找不到頭緒。 在問一下我該去哪裡尋找更新的opgl?
您好, 請問如果我希望我匯入的模型能用鍵盤操控, (例如:按空白鍵一下 模型往前一步) 這樣我該修改什麼地方呢?? 我到處都找不到類似的教學耶>< 請教教我拜託!謝謝!!
我完全照著步驟做 可是為何開啟simpleVRML的時候 鏡頭對hiro這個marker完全沒反應!! 我有看到DOS寫我dat的位置是"Unreachable URL" 可是我確定我的相對位置沒寫錯啊... 究竟怎麼會這樣><
是"Unreachable URI" 抱歉講錯了><
要使用AR擴增實境,使用3DMAX繪圖完成後轉成WRL檔,卻讀不出貼圖顏色,圖形變成白色,請問要怎麼解決?