2017電腦圖學 Computer Graphics 授課教師: 葉正聖 銘傳大學資訊傳播工程系 每週主題: 程式環境、點線面顏色、移動/旋轉/縮放與矩陣(Matrix)、階層性關節轉動(T-R-T)、做出機器人、打光、貼圖、glu/glut函式、鍵盤、滑鼠、計時器(timer)、讀入3D模型、粒子系統、聲音、特效、投影矩陣、攝影機與運鏡、機器人2.0、期末作品
2017年7月1日 星期六
2017年6月12日 星期一
week14 陳柏勳 課堂上課筆記╭∩╮◕ㅂ◕ ╭∩╮
1.老師展示如何在facebook上用電腦OBS做直播
2.示範myEarth.zip變背景貼圖
glBegin(GL_POLYGON);
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();
///glRotatef(90, 1,0,0);
///glRotatef(angle, 0,0,1);///自動轉很帥
///gluQuadricTexture(quad, 1);
///gluSphere(quad, 1, 30, 30);///glutSolidTeapot(0.3);
glPopMatrix();///自動轉很帥
glFlush();
2.示範myEarth.zip變背景貼圖
glBegin(GL_POLYGON);
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();
///glRotatef(90, 1,0,0);
///glRotatef(angle, 0,0,1);///自動轉很帥
///gluQuadricTexture(quad, 1);
///gluSphere(quad, 1, 30, 30);///glutSolidTeapot(0.3);
glPopMatrix();///自動轉很帥
glFlush();
3.貼好背景後,畫面很黑,隱約看得到機器人在動,但是太不清楚了,所以需要打光
4.除了為機器人打光外,背景的燈光也會影響整個畫面
2017年6月5日 星期一
week13 陳柏勳 課堂上課筆記╭∩╮◕ㅂ◕ ╭∩╮
1.開起excel,時間(0、0.1、0.2、、、1)、角度(30000~90000)

2.開啟芷萱的杯麵
(1)內差公式.韓式.加入
(2)Timer函式準備好


2.開啟芷萱的杯麵
(1)內差公式.韓式.加入
(2)Timer函式準備好

3.開起老師的茶壺機器人,按個別數字鍵後可以操控不同區塊的部位
4.寫檔案
#include <stdio.h>
FILE*fout=NULL;//檔案指標
//...在keyboard()中
if(key=='s' || key=='S')
{
if(fout==NULL) fout=fopen("file.txt","w+");
fprintf(fout,"%.3f %.3f%.3f%.3f%.3f\n",angle[0],.....
}
2017年5月22日 星期一
week12 陳柏勳 課堂上課筆記╭∩╮◕ㅂ◕ ╭∩╮
1.安裝freeglut,把自己的機器人作業下載下來,開專案調設定
2.把T-R-T部分的程式碼移到下方,並注意glPopMatrix();的位置,使機器人的部位依自己的意思轉動
3.加入timer與文字,始程式執行後會計時與顯示文字
4.試著調整rotatef使指定部位轉動
2017年5月15日 星期一
week11 陳柏勳 課堂上課筆記╭∩╮◕ㅂ◕ ╭∩╮
1.老師示範小考
glPushMatrix();//10%
glTranslatef(0.4,0.5,0);//(3)最後把會旋轉的手掛在(0.4,0.5,0)20%
glRotatef(30,0,0,1);//(2)對Z軸做旋轉angle的角度20%
glTranslatef(0.5,0.3,0);//(1)把旋轉的中心點移到畫面的中間20%
drawArm();//畫一隻手20%
glPopMatrix();//10%
2.安裝opencv-2.1.0-vs2008.exe
glPushMatrix();//10%
glTranslatef(0.4,0.5,0);//(3)最後把會旋轉的手掛在(0.4,0.5,0)20%
glRotatef(30,0,0,1);//(2)對Z軸做旋轉angle的角度20%
glTranslatef(0.5,0.3,0);//(1)把旋轉的中心點移到畫面的中間20%
drawArm();//畫一隻手20%
glPopMatrix();//10%
2.安裝opencv-2.1.0-vs2008.exe
3.試著用codeblocks讀檔,可以讀出圖片
4.開啟myEarth專案檔
2017年5月8日 星期一
week10 陳柏勳 課堂上課筆記╭∩╮◕ㅂ◕ ╭∩╮
1.下載data、windows、glut32,改eyeX、eyeY、eyeZ(攝影機)
const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };
=>紅色茶壺(可以調整攝影機)
2.開啟freeglut
3.const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };
=>紅色茶壺(可以調整攝影機)
4.試著修改center,會發現中心點改變了
5.開啟Perspective,執行後會是一個旋轉的茶壺(可以試著改視角)
6.main_pushTRTpop.cpp執行後會有上下擺動的茶壺群
glPushMatrix();
glTranslatef(xxx);掛上去
glRotatef(xxx);旋轉
glTranslatef(xxx);定旋轉中心
畫手臂{重複
glPopMatrix();
2017年5月1日 星期一
week09 陳柏勳 課堂上課筆記╭∩╮◕ㅂ◕ ╭∩╮
本周上課重點:
(1)組合出機器人
(2)做出可轉動的關節
(3)錄製動畫
(4)回家作業:機器人
1. Google:3D Expolration 並安裝 3D Exploration 1.81
(1)組合出機器人
(2)做出可轉動的關節
(3)錄製動畫
(4)回家作業:機器人
1. Google:3D Expolration 並安裝 3D Exploration 1.81
2.用3D Exploration 開啟 data.zip 的模型(足球),並匯出OpenGL APP
3.偷天換日,把main.cpp換成soccerball.cpp
4.註解調影響錯誤的程式碼,使其成功執行,會出現旋轉的足球
5.開啟dolphins,並存成dolphins 1.2.3
6.把原本的保時捷換成海豚,並修改程式碼,條找海豚大小與數量等等東西
2017年4月24日 星期一
week08 陳柏勳 課堂上課筆記╭∩╮◕ㅂ◕ ╭∩╮
2.測試遊戲還有聲音是否正常
3.在freeglut中試著加入遊戲的槍聲音效
#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);
4.在網路上找 do re mi fa so 的音效,並加入程式碼,使音樂能透過鍵盤按鍵撥放
5.準備一個MP3檔後宣告#include "CMP3_MCI.h",並且把音檔路徑輸入好,執行後
音樂就會直接撥放
2017年4月17日 星期一
week07 陳柏勳 課堂上課筆記╭∩╮◕ㅂ◕ ╭∩╮
1.到小葉老師的網站下載 glut32.dll , windows , data ,好了後組成windows資料夾。
2.開啟soccerball.mtl 、soccerball.obj
2.開啟soccerball.mtl 、soccerball.obj
3.利用maya建立模型,匯出後會變成obj檔和mlt檔2個。
4.開起老師的myGLMsample,會出現旋轉的porsche
5.研究老師的程式介紹
2017年4月10日 星期一
week06 陳柏勳 課堂上課筆記╭∩╮◕ㅂ◕ ╭∩╮
1.模擬段考內容
glPushMatrix();//備份矩陣
glTranslatef(x,y,z);//移動
glRotatef(angle,x,y,z);//旋轉
glScalef(x,y,z);//縮放
glBegin(GL_POLYGON);//開始畫
glNormal3f(nx,ny,nz);//打光的法向量
glTexCoord2f(tx,ty);//貼圖的座標
glColor3f(x,y,z);//顏色
glVertex3f(x,y,z);//頂點
glEnd();//結束
glPopMatrix();//還原矩陣
2.開啟freeglut,一樣弄出之前的茶壺,只是這次要加上打光效果(在light_position裡的數值做修改)
glPushMatrix();//備份矩陣
glTranslatef(x,y,z);//移動
glRotatef(angle,x,y,z);//旋轉
glScalef(x,y,z);//縮放
glBegin(GL_POLYGON);//開始畫
glNormal3f(nx,ny,nz);//打光的法向量
glTexCoord2f(tx,ty);//貼圖的座標
glColor3f(x,y,z);//顏色
glVertex3f(x,y,z);//頂點
glEnd();//結束
glPopMatrix();//還原矩陣
2.開啟freeglut,一樣弄出之前的茶壺,只是這次要加上打光效果(在light_position裡的數值做修改)
3.加入"glutIdleFunc(display);"可使茶壺旋轉
4.加入不同形狀的程式碼,做出各種可以旋轉的多邊形
5.加入glutWireSphere這行可以做出純線條的球形
2017年3月27日 星期一
week05 陳柏勳 課堂上課筆記╭∩╮◕ㅂ◕ ╭∩╮
1.說明期中考內容
大小寫要正確
glPushMatrix();//備份矩陣 10% (stack push)
glRotatef(angle, x, y, z);//旋轉 30%
glTranslatef(x,y,z);/移動 40%
glScalef(x,y,z);//縮放 50%
glBegin(GL_POLYGON);//開始畫 60%
glNormal3f(nx,ny,ny);//打光的法向量 90%
glTexCoord2f(tx,ty);//貼圖的座標 100%
glColor3f(r,g,b);// 顏色 70%
glVertex3f(x,y,z);//頂點 80%
glEnd();//結束畫
glPopMatrix();//還原矩陣 20% (stack pop)
2.和其幾週一樣去jsyeh/3dcg10/ 下載檔案後開啟
類似安培右手,先調好Y軸向上或向下,再調整角度,使車子同安培右手方向旋轉
3.負負得正,負的Y軸加上負的旋轉角度,車子會朝正向旋轉
4.口訣:頭往左肩靠,由下往上看,從最中間的開始畫圈框起各行。
(EX:車子---變大的車子---可以旋轉的變大的車子---移動可以旋轉的變大的車子)
大小寫要正確
glPushMatrix();//備份矩陣 10% (stack push)
glRotatef(angle, x, y, z);//旋轉 30%
glTranslatef(x,y,z);/移動 40%
glScalef(x,y,z);//縮放 50%
glBegin(GL_POLYGON);//開始畫 60%
glNormal3f(nx,ny,ny);//打光的法向量 90%
glTexCoord2f(tx,ty);//貼圖的座標 100%
glColor3f(r,g,b);// 顏色 70%
glVertex3f(x,y,z);//頂點 80%
glEnd();//結束畫
glPopMatrix();//還原矩陣 20% (stack pop)
2.和其幾週一樣去jsyeh/3dcg10/ 下載檔案後開啟
類似安培右手,先調好Y軸向上或向下,再調整角度,使車子同安培右手方向旋轉
3.負負得正,負的Y軸加上負的旋轉角度,車子會朝正向旋轉
4.口訣:頭往左肩靠,由下往上看,從最中間的開始畫圈框起各行。
(EX:車子---變大的車子---可以旋轉的變大的車子---移動可以旋轉的變大的車子)
2017年3月20日 星期一
week04 陳柏勳 課堂上課筆記╭∩╮◕ㅂ◕ ╭∩╮
1.到 jsyeh.org/3dch10 下載window,data,glut32.dll
data.zip->桌面\window\data\模型
window.zip->桌面\window\Transformation.exe
glut.32.dll->桌面\window\glut.32.dll
data.zip->桌面\window\data\模型
window.zip->桌面\window\Transformation.exe
glut.32.dll->桌面\window\glut.32.dll
2.開啟freeglut,把程式碼刪掉,打出茶壺的程式碼,加上glTranslatef(最重要的一行),使茶壺在黑窗的位置能改變
3.加入mouse等程式碼,使茶壺可以透過滑鼠按鍵移動
4.把glTranslatef(移動)改成 glScalef(變形),使茶壺能靠著滑鼠拖曳改變外型
2017年3月13日 星期一
week03 陳柏勳 課堂上課筆記╭∩╮◕ㅂ◕ ╭∩╮
1.把freeglut修改程式碼,變成上周出現過的茶壺
2.加入滑鼠相關程式,使小黑窗用滑鼠點擊可以出現數值
3.加入顏色相關程式
glColor3f(1,x/300.0,y/300.0);
glutPostRedisplay();
,使滑鼠點擊小黑窗時,改變茶壺顏色
4.加入motion等程式碼,使滑鼠點擊小黑窗時可以拖曳不放,依然可以改變顏色
5.加入GL_POLYGON等程式碼使圖形成圓形
glBegin(GL_POLYGON);
for(float angle=0;angle<3.14159*2;angle+=0.001)
{
glVertex2f(cos(angle),sin(angle));
}
glEnd();
glutSwapBuffers();
訂閱:
文章 (Atom)


















































