2013年2月18日 星期一

[教學]用opengl物件重建obj模型

Pd-extended 預設的物件[pix_model],雖然能夠載入OBJ檔案,可是並無法控制每個vector點的位置,因此我想出一個辦法,透過改寫.obj 檔案成.txt,在將文字檔內容轉換成[qlist]能讀的格式,就能夠把模型的資訊存進Pd的陣列中,接著只要再使用[GEMglVertex3fv]物件重新繪製模型即可。並且因為透過陣列儲存了每個點的位置,因此便可以自由改變模型的造型。

步驟一:首先用sketchup 建立一個3d模型,特別需要注意的是,每一個面只能用四個或三個點構成。(所以如果是五邊形,請把它切割為一個三邊型和一個四邊形)


(切成3-4 或3-3-3都可)



(簡單的建模過程)




(File>Export>3D Model>select obj)


(在選項欄中,只需要勾選「切換YZ座標」,並把單位設為公尺。)


步驟二:把 [name.obj] 檔案的副檔名改成[name.txt],並開啓終點幾用vi編輯器,修正內容的格式。



(1).刪掉文件內不需要的描述,例如此範例中會出現
----------------------------------------------

# Alias OBJ Model File
# Exported from SketchUp, (c) 2000-2006 Google, Inc.
# File units = meters

mtllib test.mtl

g Mesh1 Model

usemtl FrontColor


----------------------------------------------
以上訊息都是不需要的

(2)打開terminal,輸入 vi ..路徑/檔名.txt

(3)每行結尾增加「;」符號,輸入 :%s/$/;/g

(4)消「/」符號,輸入 :%s/\// /g 
(5)存檔離開,:wq

obj參數筆記:[v]x,y,z座標位置,[f] 面由哪幾個點組成。



步驟三:打開k_sketchup-help.pd的檔案,並點選open 按鈕後選擇目標載入檔案(在此為text.txt),並且觸發read 按鈕即可。


(相關[k_sketchup]物件的操作示意,請見本影片。)


Example Download