- OpenGL 基礎物件:jit.gl.gridshape與 jit.gl.plato 用來繪製簡易幾何圖形;jit.gl.model 用來導入 obj 3D 模型;jit.gl.handle 用來控制3D物件與場景的位置;jit.gl.sketch 用來直接讀取 OpenGL 指令,並將這些繪圖指令一併執行。
- 多數 jit.gl.sketch 所使用的訊息指令,與標準的 OpenGl API (application programming interface) 僅有些微差異。相異之處大致如下:(1) 所有的 OpenGL 指令在 jit.gl.sketch 中為小寫(例如:glColor ( ) 改為jit.gl.sketch 所使用的 glcolor 指令訊息)。(2) OpenGl 的符號常數(symbolic constants)用於 jit.gl.sketch 中時, 除了改為小寫之外,並省略其 "GL_"「字頭」,例如 GL_CLIP_PLANE1 要配合 jit.gl.sketch 使用時,需改為 clip_plane1。(p.352)
- jit.gl.sketch 瞭解許多高階繪圖指令,藉此運用物件來繪製基本圖形、或繪製向量式的圖形。jit.gl.sketch 的運作,是藉由保留一系列繪製場景時執行的 OpenGL 指令而達成。其中,多數被送至 jit.gl.sketch 的訊息指令,會變成前述一系列繪圖指令的一部份。 這些指令列可以被存在一個物件的內部記憶體中。若將 jit.gl.sketch 屬性 displaylist 設定成 1,則這些指令可以被儲存在 GPU (graphic processing unit) 上,尤其適用於大量指令時 。但若要在原本的指令列中加入新的指令,則需要一段較長的時間讀取之 。(p.354)
- jit.gl.sketch 指令說明:reset 讓 jit.gl.sketch 清除內存的指令列,以達成初始化。glcolor 讓 jit.gl.sketch 改變繪圖時的顏色,以 RGBA 順序為之,使用浮點數來表示顏色數值 (0.~1.之間)。glbegin 後面接所要使用的圖元(drawing primitive)。glvertex 則標明所要繪製圖形之 vertex (頂點) 座標。 glend 指令告訴 jit.gl.sketch 其已完成圖型的定義工作。(p.355)。
- 以 line_loop 圖元指定三個 vertex 點所繪製的圖形,為中空的三角形;若以 triangles 圖元所繪製的三角形或多邊形,則為實心的圖形(中間有填色)。(p.356)
- jit.gl.sketch 指令 glcolor 與 glvertex 相間置放,並且各有不同數值,則配合 jit.gl.sketch 的 smooth_shading 1 屬性設定,可造成這些被定義為不同顏色的 vertex 之間產生漸層顏色的效果。(p.357)。
- glpolygonmode 後面接上 front_and_back, front, back 等訊息,用來定義作用範圍,再接上 fill 或 line 可以用來設定 jit.gl.sketch 所繪製出來的多邊形,是否以填色模式、或外框線條模式呈現。(作用與一般 jit.gl 相關物件中的 poly_mode 屬性之功能相同。)
- 圖元 line_loop 可用來將所設定的 vertex 以線條相連起來 (例如指定三個點,則可以繪製三角形);lines 圖元與 line_loop 不同之處在於前者不會將第一個 vertex 與最後一個 vertex 相連線;圖元 triangles 可用來直接繪製三角形(內部為填滿的狀態);圖元 tri_strip 配合指定的四個 vertex 可用來繪製方形(藉由結合兩個三角形而成;內部是否填滿由 fill 或 line 設定之)。
- jit.gl.sketch 也可以將所繪製的圖形設定位移(translate)、改變大小 (scale)、旋轉 (rotate)等。此時需要先使用 glmatrixmode 訊息,以告訴 jit.gl.sketch 我們即將執行 modelview matrix,藉此進行3D物件的旋轉、位移、改變大小。
- glpushmatrix 訊息則是用來將現在的 modelview 矩陣複製到暫存架 (stack)上,以便於之後使用。如此可以讓我們將所繪製的複雜圖形,製造巢狀模式的位移。例如,我們可以繪製一系列的多邊形,並設定每個多邊形以相對於先前存於暫存架的多邊形之位置作旋轉。這種方法,可以用來使一系列的圖形,保留彼此之間的相對位置,又相對於其他群組的圖形作旋轉。glrotate 後面接上「角度、 x、 y 、z 的座標」,則用來設定旋轉的角度與軸心。glpopmatrix 用來使 jit.gl.sketch 回到先前的旋轉,在其後加入的新指令,會使用原本的旋轉向量為參照。(p.360)
- gltranslate 加上位移距離差值 (offset),用來產生圖形位移;glscale 加上 x y z 乘數,用來改變圖形大小。(p.363)
這個部落格是用來記錄關於現代音樂(器樂、電子音樂等)、即時影像、互動影音的相關資訊,內容包含現代音樂作曲的相關資料,Max/MSP/Jitter 互動影音程式設計的相關資源介紹。另外也包含鄭建文的音樂作品影音資料等,歡迎藝術家們提出跨領域創作之合作計畫。
2010年3月8日 星期一
Jitter Tutorial 40 Drawing in OpenGL using jit.gl.sketch 摘要
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言