這天是我們的期末成果展示,心裡十分期待,希望自己的作品可以得到期許的成績,也看到了很多人的用心成果,其中印象最深的是最後一位同學的鋼鐵人,我真的佩服他的毅力耐心, 也順理成章拿到第一名。
這是我成功的Youtube網址:https://youtu.be/xb5aSIh0eTQ
十分感謝小葉老師在這學期的用心教導,我們都能感受到老師的辛勤奉獻,再次感激小葉老師的用心。
2017電腦圖學 Computer Graphics 授課教師: 葉正聖 銘傳大學資訊傳播工程系 每週主題: 程式環境、點線面顏色、移動/旋轉/縮放與矩陣(Matrix)、階層性關節轉動(T-R-T)、做出機器人、打光、貼圖、glu/glut函式、鍵盤、滑鼠、計時器(timer)、讀入3D模型、粒子系統、聲音、特效、投影矩陣、攝影機與運鏡、機器人2.0、期末作品
2017年7月1日 星期六
2017年5月8日 星期一
Week11 浩丁洲街的上課筆記
Hw 1
到小葉老師的網址,下載 data.zip、windows.zip、glut32.dll
打開Projection, 試著移動gluLookAt裡面的數值
建立一個新的GLUT專案,把main.cpp兌換成老師的main.cpp(偷天換日)
到小葉老師的網址,下載 data.zip、windows.zip、glut32.dll
打開Projection, 試著移動gluLookAt裡面的數值
建立一個新的GLUT專案,把main.cpp兌換成老師的main.cpp(偷天換日)
2017年5月1日 星期一
Week10 浩丁洲街的上課筆記
HW1
3D Exploration v1.81 下載, 接著到小葉老師的網址 , 下載 Data.zip。
安裝 3D Exploration 後,打開data裡面的 足球soccerball 儲存(save as) ,
存檔類行為cpp open GL code,
Export type 選擇 sample APP,取名叫1.cpp。
接著打開codeblocks,新建一個專案OpenGL,接著我們要偷天換日,
將儲存的專案裡面的main.cpp以1.cpp取代。
2017年4月24日 星期一
Week09 浩丁洲街的上課筆記
Hw1
開始老師讓我們玩了一個很久以前的遊戲,Google NEHe Lesson 32,下載最下面visual C++, 這是我的分數
Hw2
我們要加點聲音進去(用滑鼠鍵點就可發出聲音),新增GLUT專案, 加入Multimedia System表頭檔 #include <mmsystem.h>,在主函式前面加入Mouse函式,
void mouse(int button, int state , int x, int y)
{
PlaySound("C:\\Users\\user\\Downloads\\Lesson32\\Data/Shot.wav", NULL, SND_ASYNC); ///Copy this line 聲音檔案的路徑
}
開始老師讓我們玩了一個很久以前的遊戲,Google NEHe Lesson 32,下載最下面visual C++, 這是我的分數
Hw2
我們要加點聲音進去(用滑鼠鍵點就可發出聲音),新增GLUT專案, 加入Multimedia System表頭檔 #include <mmsystem.h>,在主函式前面加入Mouse函式,
void mouse(int button, int state , int x, int y)
{
PlaySound("C:\\Users\\user\\Downloads\\Lesson32\\Data/Shot.wav", NULL, SND_ASYNC); ///Copy this line 聲音檔案的路徑
}
2017年4月10日 星期一
Week06 浩丁洲街的上課筆記
考試的內容 非常重要!

glPushMatrix(); ///備份矩陣
glTranslatef(x, y, z);///移動
glRotatef(angle, x, y,z)///旋轉
glScalef(x,y,z);//縮放大小
glBegin(GL_POLYGON);///開始畫
glColor3f(r, g, b);///顏色
glNormal3f(nx, ny, nz);///打光法向量
glTexCoord2f(tx, ty);///貼圖座標
glVertex3f(x, y ,z);///頂點
glEnd();///結束畫
glPopMatrix();///還原矩陣
用刪除的方式寫出打光的程式碼








接著是加入不同形狀的東西

glPushMatrix(); ///備份矩陣
glTranslatef(x, y, z);///移動
glRotatef(angle, x, y,z)///旋轉
glScalef(x,y,z);//縮放大小
glBegin(GL_POLYGON);///開始畫
glColor3f(r, g, b);///顏色
glNormal3f(nx, ny, nz);///打光法向量
glTexCoord2f(tx, ty);///貼圖座標
glVertex3f(x, y ,z);///頂點
glEnd();///結束畫
glPopMatrix();///還原矩陣
用刪除的方式寫出打光的程式碼








接著是加入不同形狀的東西
2017年3月27日 星期一
Week05 浩丁洲街的上課筆記
期中考題介紹:
(1). 練習10題 100%

(2). 網址: jsyeh.org/3dcg10 裡面載<1>. data.zip <2>. windows.zip <3>. glut32.dll
放入windows 文件夾裡面,打開Transformation.exe
嘗試著用右手來看車子的旋轉(右手安培定則)

(3). 負負得正 若glRotatef(-90.0, 0.00, -1.00, 0.00)時,會與glRotatef(90.0, 0.00, 1.00, 0.00)一模一
樣。
(4). 口訣: 左耳碰左肩, 從下往上讀, 畫圈圈
glPushMatrix(); //備份矩陣
glTranslatef(x, y, z); //移動
glRotatef(角度, x, y, z); //旋轉
glScalef(x, y, z); //縮放
glBegin(GL_POLYON); //開始
glcolor3f(r, g, b); //顏色
glNormal3f(nx, ny, nz); //法向量
glTexcoord3f(tx, ty); //貼圖座標
glVertex3f(x, y ,z); //頂點
glEnd(); //結束畫
glPopMatrix(); //還原Matrix
(1). 練習10題 100%

(2). 網址: jsyeh.org/3dcg10 裡面載<1>. data.zip <2>. windows.zip <3>. glut32.dll
放入windows 文件夾裡面,打開Transformation.exe
嘗試著用右手來看車子的旋轉(右手安培定則)
(3). 負負得正 若glRotatef(-90.0, 0.00, -1.00, 0.00)時,會與glRotatef(90.0, 0.00, 1.00, 0.00)一模一
樣。
(4). 口訣: 左耳碰左肩, 從下往上讀, 畫圈圈
glPushMatrix(); //備份矩陣
glTranslatef(x, y, z); //移動
glRotatef(角度, x, y, z); //旋轉
glScalef(x, y, z); //縮放
glBegin(GL_POLYON); //開始
glcolor3f(r, g, b); //顏色
glNormal3f(nx, ny, nz); //法向量
glTexcoord3f(tx, ty); //貼圖座標
glVertex3f(x, y ,z); //頂點
glEnd(); //結束畫
glPopMatrix(); //還原Matrix
2017年3月20日 星期一
Week03 浩丁洲街的上課筆記(補)
HW1. 複習上一周畫茶壺
像之前一樣,打開GLUT專案,修改裡面的程式碼以簡潔並劃出一個茶壺。
程式碼:
#include <GL/glut.h>
static void display (void)
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("I am number 1!!!");
glutDisplayFunc(display);
glutMainLoop();
}
HW2. 加入MouseFunc,抓滑鼠點下去的數據並可改變茶壺顏色
在主函式中加入glutMouseFunc(mouse);
並且在上方加入mouse 函式 static void mouse (int button, int state, int x , int y )
並且加入 #include <stdio.h> ,讓我們可以用到 printf。 可以將mouse的4個數據列印出來。完成後如下圖:
接下來希望再點不同地方的時候茶壺可以更改顏色,在printf()函式下加入這兩行程式碼:
glColor3f(1,x/300.0,y/300.0);
glutPostRedisplay(); //呼叫此函式來重新顯示(整理)螢幕
*note 在main主函示中可該便是窗的大小(預設是300X300)
只要加入 glutInitWindowSize(500,
500); 可改變為500X500的視窗大小哦。
接著是要邊移動滑鼠邊改變顏色了,在主函式中加入glutMotionFunc(motion); 並在上方加入motion函式:
static
void motion (int x, int y )
{
printf("%d %d\n", x, y);
}
把 glColor3f(
1, x/300.0, y/300.0);
glutPostRedisplay();加入motion函式中
即為:
static
void motion (int x, int y )
{
printf("%d %d\n", x, y);
glColor3f( 1, x/300.0, y/300.0);
glutPostRedisplay();
}
Week04 浩丁洲街的上課筆記
電腦圖學
(1) 主題:旋轉Rotate
(2)主題: 移動Translate
(3)主題: 縮放 Scale
先畫一個茶壺, 這裡不多介紹。接著更改一些程式可以移動茶壺
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(0.5,0, 0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void motion (int x, int y)
{
mouseX = (x-150)/ 150.0 ;
mouseY = -(y-150)/ 150.0;
glutPostRedisplay();
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("04162646 GGGGGGGGGGG");
glutDisplayFunc(display);
///glutMouseFunc(mouse);
///glutMotionFunc(motion);
glutMainLoop();
}
接著宣告mouseX mouseY 的值在glTranslatef作更改,把mouseX mouseY加入裡面, 加入motion函式,程式碼為
void motion (int x, int y)
{
mouseX = (x-150)/ 150.0 ;
mouseY = -(y-150)/ 150.0;
glutPostRedisplay();
}
圖片支援
這樣就可以移動茶壺了
若將glTranslatef();更改為glScalef(); 茶壺就可以放大縮小了。
後面的f為float的表示。
(1) 主題:旋轉Rotate
(2)主題: 移動Translate
(3)主題: 縮放 Scale
先畫一個茶壺, 這裡不多介紹。接著更改一些程式可以移動茶壺
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(0.5,0, 0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void motion (int x, int y)
{
mouseX = (x-150)/ 150.0 ;
mouseY = -(y-150)/ 150.0;
glutPostRedisplay();
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("04162646 GGGGGGGGGGG");
glutDisplayFunc(display);
///glutMouseFunc(mouse);
///glutMotionFunc(motion);
glutMainLoop();
}
void motion (int x, int y)
{
mouseX = (x-150)/ 150.0 ;
mouseY = -(y-150)/ 150.0;
glutPostRedisplay();
}
圖片支援
這樣就可以移動茶壺了
若將glTranslatef();更改為glScalef(); 茶壺就可以放大縮小了。
後面的f為float的表示。
2017年3月6日 星期一
Week02 浩丁洲街的上課筆記
一、第一周作業複習
1.OpenGL專案
2.GLUT專案
1).在Codeblocks中,File-New-Project. 選OpenGL專案。

2).在Codeblocks中,File-New-Project,選GLUT專案。

二、GLUT篩檢程式碼
1.把glut專案刪減成10行。將老師發過來的截圖對照的刪除。
#include <GL/glut.h>
static void display (void)
{
glutSolidTeapot(0.9); ///畫茶壺
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("I am Spiderman");
glutDisplayFunc(display);
glutMainLoop();
}

2.將茶壺改色。
話茶壺之前,在static void display (void)裡面加上一行,glColor3f(R,G,B);
(若超過1的數字要在後面除255.0)

3. 實作點線面:三角形
打開檔案Shapes,右鍵找出TRAIANGLES,改變數據,可調整顏色、位置。

1.OpenGL專案
2.GLUT專案
1).在Codeblocks中,File-New-Project. 選OpenGL專案。

2).在Codeblocks中,File-New-Project,選GLUT專案。

二、GLUT篩檢程式碼
1.把glut專案刪減成10行。將老師發過來的截圖對照的刪除。
#include <GL/glut.h>
static void display (void)
{
glutSolidTeapot(0.9); ///畫茶壺
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("I am Spiderman");
glutDisplayFunc(display);
glutMainLoop();
}

2.將茶壺改色。
話茶壺之前,在static void display (void)裡面加上一行,glColor3f(R,G,B);
(若超過1的數字要在後面除255.0)
3. 實作點線面:三角形
打開檔案Shapes,右鍵找出TRAIANGLES,改變數據,可調整顏色、位置。
2017年2月20日 星期一
Week01 浩丁洲街的上課筆記
HW_2
1. 打開codeblocks, 點開File,裡面的New,點選Project。

2. 往下拖曳,點選OpenGL,next之後打上學號,儲存在桌面。

3. codeblocks左邊點開專案,點選main.c,出現一堆以前人類打出來的程式碼。

4. 按上方的執行(F9),跑出小黑窗,裡面有個旋轉的三角形。

HW_3
1. codeblocks,點開File,裡面的New,點選Project。

2. 點選GLUT,名稱及儲存路徑完成後下一步,將老師傳給我們的freeglut檔案的路徑複製起來,貼在GLUT的location。
3. 點開左邊新的專案裡面的main.cpp,按下執行按鈕(F9),即可跑出圖像。
訂閱:
文章 (Atom)






