2017電腦圖學 Computer Graphics 授課教師: 葉正聖 銘傳大學資訊傳播工程系 每週主題: 程式環境、點線面顏色、移動/旋轉/縮放與矩陣(Matrix)、階層性關節轉動(T-R-T)、做出機器人、打光、貼圖、glu/glut函式、鍵盤、滑鼠、計時器(timer)、讀入3D模型、粒子系統、聲音、特效、投影矩陣、攝影機與運鏡、機器人2.0、期末作品
2017年6月30日 星期五
2017年6月12日 星期一
Week1 藍振瑋 電腦圖學上課筆記
(0)介紹今天的內容,直播
(1)示範:myEarth.zip變背景貼圖
freeglut裝桌面\freeglut\include\lib\bin
OpenCV2.1裝C:\OpenCV2.1\include\lib\bin
把display裡///畫地球
程式:
glBegin(GL_POLYGON);///開始要畫背景
///前面是貼圖座標,後面是3D頂點
glTexCoord2f(0,0);glVertex3f(-1,+1,0);
glTexCoord2f(1,0);glVertex3f(+1,+1,0);
glTexCoord2f(1,1);glVertex3f(+1,-1,0);
glTexCoord2f(0,1);glVertex3f(-1,-1,0);
glEnd();
(1)示範:myEarth.zip變背景貼圖
freeglut裝桌面\freeglut\include\lib\bin
OpenCV2.1裝C:\OpenCV2.1\include\lib\bin
把display裡///畫地球
程式:
glBegin(GL_POLYGON);///開始要畫背景
///前面是貼圖座標,後面是3D頂點
glTexCoord2f(0,0);glVertex3f(-1,+1,0);
glTexCoord2f(1,0);glVertex3f(+1,+1,0);
glTexCoord2f(1,1);glVertex3f(+1,-1,0);
glTexCoord2f(0,1);glVertex3f(-1,-1,0);
glEnd();
2017年6月5日 星期一
Week13 藍振瑋 電腦圖學上課筆記
1.使用Excel實作內差公式
薪水=角度
公式:Alpha*NewAngle+(1-Alpha)*OldAngle
2.解壓縮老師選擇的專案,以及freeglut的壓縮檔案到桌面,並且開啟專案,加入內插公式
3.加入timer,讓機器人跟著轉動
4.寫檔案
#include<stdio.h>
FILE*font=NULL;//檔案指標
.
.
.
if(key=='s' || key='S')
{
if(fout==NULL)
fout=fopen("file.txt", "w+");
}
薪水=角度
公式:Alpha*NewAngle+(1-Alpha)*OldAngle
2.解壓縮老師選擇的專案,以及freeglut的壓縮檔案到桌面,並且開啟專案,加入內插公式
3.加入timer,讓機器人跟著轉動
4.寫檔案
#include<stdio.h>
FILE*font=NULL;//檔案指標
.
.
.
if(key=='s' || key='S')
{
if(fout==NULL)
fout=fopen("file.txt", "w+");
}
2017年5月22日 星期一
Week12 藍振瑋 電腦圖學上課筆記
TODO:在S302,把freeglut裝好,把moodle的作業下載解開專案調整設定
TODO;做出手隨著身體轉
TODO:複習小考T-R-T概念
一、做出手、全部身體、自己想要的部分,可以旋轉
上面先設float angle=0;
float++;
glPushMatrix();///以身體body為主,是大括號
glRotatef(angle, 0,1,0);
中間為自己想要旋轉的身體部分
glPopMatrix();///結尾的大括號
二、做出搭配(計時器)的轉動
#include <stdio.h>
void timer(int t)///計時器叫的時候, 要做什麼呢?
{
glutTimerFunc(100, timer, t+1);///先撥下一個鬧鐘
angle++;///做了要做的事
printf("現在時間是 %d, 我起床了, 等一下鬧鐘會再叫一下哦 ", t);
glutPostRedisplay();///提醒電腦,有空要畫一下畫面哦
printf("... 然後我就又睡了....\n");
}///再度沈睡
glutTimerFunc(0(等多久), timer(叫誰), 0(參數));///(1) 第一次呼叫timer計時器
2017年5月15日 星期一
Week11 藍振瑋 電腦圖學上課筆記
1.TODO:老師示範小考
glPushMatrix();10%
↑ glTranslatef(0.4 , 0.5 , 0);///(3)20%,再把會旋轉的手腕,放在(0.4 , 0.5 , 0)
↑ glRotatef(30 , 0 , 0.1);///(2)20%,對Z軸作angle旋轉角度
↑ glTranslatef(0.5 , 0.3 , 0);///(1)20%,把旋轉中心點,放到畫面的中間
↑
↑ drawArm();20%///畫一個手腕
glPopMatrix();10%
2.TODO:讀取圖檔,用OpenCV2.1
(1)安裝opencv-2.1.0-vs2008.exe
(2)確認c:\OpenCV2.1\include\opcncv\很多.h檔
\lib\很多lib檔
\bin\很多dll檔
(3)新增貝殼專案,File-New-Project,右上角Console App
3.TODO:myEarth.zip解壓縮
(1)freeglut到c:\users\user\Desktop\freeglut{include、lib、bin}
(2)myEarth專案檔,開起來
(3)F9執行{image.jpg圖、freeglut.dll、需要安裝OpenCV2.1、可開圖、專案cbp、程式cpp}
glPushMatrix();10%
↑ glTranslatef(0.4 , 0.5 , 0);///(3)20%,再把會旋轉的手腕,放在(0.4 , 0.5 , 0)
↑ glRotatef(30 , 0 , 0.1);///(2)20%,對Z軸作angle旋轉角度
↑ glTranslatef(0.5 , 0.3 , 0);///(1)20%,把旋轉中心點,放到畫面的中間
↑
↑ drawArm();20%///畫一個手腕
glPopMatrix();10%
2.TODO:讀取圖檔,用OpenCV2.1
(1)安裝opencv-2.1.0-vs2008.exe
(2)確認c:\OpenCV2.1\include\opcncv\很多.h檔
\lib\很多lib檔
\bin\很多dll檔
(3)新增貝殼專案,File-New-Project,右上角Console App
3.TODO:myEarth.zip解壓縮
(1)freeglut到c:\users\user\Desktop\freeglut{include、lib、bin}
(2)myEarth專案檔,開起來
(3)F9執行{image.jpg圖、freeglut.dll、需要安裝OpenCV2.1、可開圖、專案cbp、程式cpp}
2017年5月8日 星期一
Week10 藍振瑋 電腦圖學上課筆記
本周上課內容:
(1)3DTRT轉動
(2)矩陣、投影矩陣
(3)攝影機運鏡
(4)會動的機器人
1.http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/下載
data.zip→桌面→windows\data\模型.obj
windows.zip→桌面\windows\Projection.exe(執行)
glut32.dll→桌面\windows\glut32.dll
2.TODO:gluLookAt(eyeX,eyeY,eyeZ(修改、攝影機),centerX,centerY,centerZ,upX,upY,upZ);
eye-表示攝影機視角的x、y、z座標
center-表示中央位置的x、y、z座標
up-表示俯視視角的x、y、z座標
3.將04160011_hw1_projection.zip解壓縮,並且用codeblocks開啟
改glutLookAt(..................),改eyeX、eyeY、eyeZ
4.改2.中,程式碼的center、up
5.將04160011_hw2_gluPerspective.zip解壓縮,並且用codeblocks開啟
修改gluPerspective(fovy(視野角度),1(xy比例),Near,Far)
6.示範main_pushTRTpop.cpp:
將04160011_hw2_gluPerspective.zip解壓縮,並將老師的main_pushTRTpop.cpp複製,了解關於組合的程式碼
glPushMatrix();
glTranlatef();掛上去
glRotatef();旋轉
glTranslatef();定旋轉中心
畫手臂-重複
glPopMatrix();
(1)3DTRT轉動
(2)矩陣、投影矩陣
(3)攝影機運鏡
(4)會動的機器人
1.http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/下載
data.zip→桌面→windows\data\模型.obj
windows.zip→桌面\windows\Projection.exe(執行)
glut32.dll→桌面\windows\glut32.dll
2.TODO:gluLookAt(eyeX,eyeY,eyeZ(修改、攝影機),centerX,centerY,centerZ,upX,upY,upZ);
eye-表示攝影機視角的x、y、z座標
center-表示中央位置的x、y、z座標
up-表示俯視視角的x、y、z座標
3.將04160011_hw1_projection.zip解壓縮,並且用codeblocks開啟
改glutLookAt(..................),改eyeX、eyeY、eyeZ
4.改2.中,程式碼的center、up
5.將04160011_hw2_gluPerspective.zip解壓縮,並且用codeblocks開啟
修改gluPerspective(fovy(視野角度),1(xy比例),Near,Far)
6.示範main_pushTRTpop.cpp:
將04160011_hw2_gluPerspective.zip解壓縮,並將老師的main_pushTRTpop.cpp複製,了解關於組合的程式碼
glPushMatrix();
glTranlatef();掛上去
glRotatef();旋轉
glTranslatef();定旋轉中心
畫手臂-重複
glPopMatrix();
2017年5月1日 星期一
Week09 藍振瑋 電腦圖學上課筆記
本周上課要點:
(1)組合出機器人
(2)做出可轉動的關節
(3)錄製動作
(4)回家作業:機器人
1.上網搜尋google:3D Exploration(3D的檔案總管)
2.3D Exploration 1.81(橘色、免費試用版本),在S302安裝
3.去http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/,有data.zip下載,有3D模型可以使用
4.接著用3D Exploration開啟,將其另存為cpp檔案,File-Save As,選Cpp Open GL...,在某目錄(桌面)下來,勾匯出Export Dialog,出現框框,選Sample App
5.看儲存完的cpp檔案(使用noppad++觀看)
6.CodeBlocks,File-New-Project,OpenGL專案偷天換日(把main.c移除,換soccerball.cpp)-有2行刪掉
7.使用老師給予的data.zip、source.zip、freeglut.zip、myGLMsample.zip,全部解壓縮,使用CodeBlock開啟myGLMsample資料夾的cpb檔案,進行程式碼的修改印出2隻調整過位置跟大小的海豚。
先用3D Exploration將海豚分開儲存成3隻obj、mlt檔案,放入myGLMsample資料夾裡面的data資料夾,其他2隻海豚依此類推
2017年4月24日 星期一
Week08 藍振瑋 電腦圖學上課筆記
1.試玩遊戲、射擊
Google:NeHe Lesson32
下載Lesson32最下面
Visual c++的範例
解壓縮桌面\Lesson32\lesson32.exe
操作:Esc-退出遊戲,聲音右下角(喇叭)右鍵-播放裝置
2.在Lesson32.cpp中用PlaySound(...)
同樣使用在(GLUT)專案裡面
加入程式碼:
#include <mmsystem.h>//多媒體系統
void mouse(int button, int state, int x, int y)
{
PlaySound("C:\\Users\\user\\Desktop\\lesson32/Data/shot.wav",NULL,SND_ASYNC);
}
glutMouseFunc(mouse);
3.加入keyboard可以使用鍵盤彈奏鋼琴or聲音,播放wav檔案
程式碼:
void keyboard(unsigned char key, int x, int y)
{
if(key=='1') PlaySound("MachineGun.wav",NULL,SND_ASYNC);
if(key=='2') PlaySound("xm1014-1.wav",NULL,SND_ASYNC);
if(key=='3') PlaySound("UZI",NULL,SND_ASYNC);
}
範例為槍聲,實際也可使用Do Ra Mi的wav檔案
glutKeyboardFunc(keyboard);修改成設定的keyboard
*下載的wav檔案,需要放到freeglut資料夾裡面的bin才行
4.使用GLUT專案播放mp3音樂
FB下載老師提供的CMP3_MCI.h檔案,放入至codeblocks專案裡
程式碼:
#include <mmsystem.h>
#include "CMP3_MCI.h"
CMP3_MCI myMP3;
myMP3.Load("C:\\Users\\user\\Desktop\\yukai.mp3"); /// "C:/dropbox/yukai.mp3"
myMP3.Play();
程式碼裡面的\,表示要用\\,才能順利完成,播放的mp3目錄要自己修正
Google:NeHe Lesson32
下載Lesson32最下面
Visual c++的範例
解壓縮桌面\Lesson32\lesson32.exe
操作:Esc-退出遊戲,聲音右下角(喇叭)右鍵-播放裝置
2.在Lesson32.cpp中用PlaySound(...)
同樣使用在(GLUT)專案裡面
加入程式碼:
#include <mmsystem.h>//多媒體系統
void mouse(int button, int state, int x, int y)
{
PlaySound("C:\\Users\\user\\Desktop\\lesson32/Data/shot.wav",NULL,SND_ASYNC);
}
glutMouseFunc(mouse);
3.加入keyboard可以使用鍵盤彈奏鋼琴or聲音,播放wav檔案
程式碼:
void keyboard(unsigned char key, int x, int y)
{
if(key=='1') PlaySound("MachineGun.wav",NULL,SND_ASYNC);
if(key=='2') PlaySound("xm1014-1.wav",NULL,SND_ASYNC);
if(key=='3') PlaySound("UZI",NULL,SND_ASYNC);
}
範例為槍聲,實際也可使用Do Ra Mi的wav檔案
glutKeyboardFunc(keyboard);修改成設定的keyboard
*下載的wav檔案,需要放到freeglut資料夾裡面的bin才行
4.使用GLUT專案播放mp3音樂
FB下載老師提供的CMP3_MCI.h檔案,放入至codeblocks專案裡
程式碼:
#include <mmsystem.h>
#include "CMP3_MCI.h"
CMP3_MCI myMP3;
myMP3.Load("C:\\Users\\user\\Desktop\\yukai.mp3"); /// "C:/dropbox/yukai.mp3"
myMP3.Play();
程式碼裡面的\,表示要用\\,才能順利完成,播放的mp3目錄要自己修正
2017年4月17日 星期一
Week07 藍振瑋 電腦圖學上課筆記
1.讀入3D模型測試
一、先去http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/ 下載檔案
source.zip(glm.h,glm.cpp)
windows.zip
data.zip
glut32.dll
將data、source,2個壓縮檔案解壓到windows裡面,glut32.dll也放進去
(1)切換模型
(2)開啟soccerball.obj(mlt)---Notepad++開啟
v開頭→vertex
vn開頭→vertex normal
vt開頭→vertex texture coordinate
f開頭→face 臉、面
一、先去http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/ 下載檔案
source.zip(glm.h,glm.cpp)
windows.zip
data.zip
glut32.dll
將data、source,2個壓縮檔案解壓到windows裡面,glut32.dll也放進去
(1)切換模型
(2)開啟soccerball.obj(mlt)---Notepad++開啟
v開頭→vertex
vn開頭→vertex normal
vt開頭→vertex texture coordinate
f開頭→face 臉、面
二、練習利用Maya建立模型,然後匯出後為obj跟mlt檔案
Google:obj mtl youtube(教學)
三、將老師的myGLMsample.zip解壓縮,並且用codeblock執行,跑出能夠旋轉的跑車
freeglut.zip→桌面\freeglut\imclude\lib\bin重建置
四、解壓老師給的檔案,實際測試
訂閱:
文章 (Atom)




















































