2010年6月7日 星期一

HW4-元智3D導覽


1.程式設計與寫作方法:


這次作業的場景我主要是用 3d max 來做的,3d max 在做模組的方面比較方便,裡面可以用各種形狀組成各館的型狀。


2.心得與討論
運用這次剛開始不知道有3d max那麼方便的軟體,後來發現真是好用,運用3D MAX來創建模組,直接讀取模組,讓程式看起來可以更加逼真。

2010年5月10日 星期一

HW3_舞動人偶

一.程式設計與寫作方法

這次作業 是要用之前的3D機器人,加上一些場景和打光

打光的部分可以在init() 裡面用到

glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); //環繞光源
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); //擴散光源
glLightfv(L_LIGHT0, GL_SPECULAR, specular); //反射色彩
glLightfv(GL_LIGHT0, GL_POSITION, position);//光位置

glLightfv(GL_LIGHT0, GL_POSITION, position);

這些函式讓機器人看起來更立體。


之後我利用查到的LoadGLTextures()和LoadBMP兩個function可以貼圖

有了上面兩個function後就可以在display裡面使用

glBindTexture(GL_TEXTURE_2D, texture[select]);來貼圖


二.心得與討論

這次的作業打光比較容易,打光之後3D機器人要用glMaterialfv這

function來上色,相較之下貼圖部分就花了很久的時間研究,貼圖後

圖片呈現有些角度看起來很模糊不理想,希望後來可以利用更多功能

讓我們的場景看起來更真實。





2010年4月11日 星期日

作業二 3D立體木偶機器人


我的機器人:


一.程式設計與寫作方法

這次作業是要繪製3D機器人,這機器人每部分都是使用

glutSolidCube 和 glutSolidSphere 兩種函式完成


剛開始的機器人:

看起來很不立體,後來想到要打光,於是在init()加入光的一些參數:

GLfloat position[] = { 1.0, 1.0, 1.0, 0.0 }; //光源位置

glLightfv(GL_LIGHT0, GL_POSITION, position);

glShadeModel (GL_SMOOTH);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);


之後可以讓機器人有立體感:

糟糕的情況出現了...機器人變成黑白的! 這裡花了我很久的時間研究,

後來發現可以利用:

glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);

這些材質的函式去調每個部分的色彩。


完成機器人架構後開始替他增加功能,全部的部分我都利用:

glPushMatrix();
glTranslatef (oX, oY, oZ); //以這裡為轉動中心點
glRotatef ( rO, 1.0, 0.0, 0.0); //轉動
glTranslatef (rX, rY, rZ); // 離轉動中心多遠
glScalef (sX, sY, sZ);
glutSolidCube (1.0);
glPopMatrix();

利用平移和轉動可以讓機器人做各種動作!

路(按w):

彎腰(按s):

二.心得與討論

這次的作業很有趣,最花時間的部分大概就是

調整轉動中心和讓機器人看起來更有立體感。

這次感覺對opengl更瞭解了,例如這次我設計機器人

他每個身體的架構只差在位置和大小,就可以自己宣告

//drawCube(ownRotateX,ownRotateY,ownRotateZ,RotateObject,revolutionX,

revolutionY,revolutionZ,scaleX,scaleY,scaleZ, r, g, b);


void drawSphere(GLfloat oX,GLfloat oY,GLfloat oZ, GLfloat r, GLfloat g, GLfloat b, GLfloat radius, GLfloat rO);

這樣就讓程式碼大幅縮減。

2010年3月21日 星期日

3D程式設計--卡通圖案





1.程式設計與寫作方法、執行結果呈現:
這次作業用到我是畫哈姆太郎,用到很多大小不同的圓
其中圓要旋轉我是加上一個變數,不過這樣要調整很久...
後來才知道有glRotatef這方法。

這張圖是最剛開始的樣子,本來想這樣再把顏色調一下,
大概就能了,不過看到別人作品後決定要把它進化..


2心得與討論
這次作業其實不難,不過找座標花了我很多時間,不過因為我是目前
是在用dev-c++,不知道怎麼只有圖案的視窗,座標也輸出不了,所以
找座標花了好久,而且發現用電腦畫2D實在效率不好,用手畫又快可
能畫的又比較好,之後因該能學到3D的繪畫概念。