2017電腦圖學 Computer Graphics 授課教師: 葉正聖 銘傳大學資訊傳播工程系 每週主題: 程式環境、點線面顏色、移動/旋轉/縮放與矩陣(Matrix)、階層性關節轉動(T-R-T)、做出機器人、打光、貼圖、glu/glut函式、鍵盤、滑鼠、計時器(timer)、讀入3D模型、粒子系統、聲音、特效、投影矩陣、攝影機與運鏡、機器人2.0、期末作品
2017年7月2日 星期日
2017年6月12日 星期一
week17 Una Der 圖學筆記
2017年6月5日 星期一
Week16 Una Der 圖學筆記
今日目標
(1)內差公式
(2)存檔/讀檔
(3)利用Timer自動內插
(4)鍵盤加滑鼠
1.
用Excel
公式是: alpha* new+(1-alpha)*old



2.讀黨和存檔
首先是讀檔的部分
#include <stdio.h>//一定要有寫這行
FILE * fout=NULL;//開一個空空的檔案
if(key=='s' || key=='S')//如果按下S就會執行到存檔的動作
{
if(fout==NULL){// 如果是空的,第一次寫檔
fout=fopen("file.txt", "w+");
}
fprintf(fout, "%.3f %.3f %.3f %.3f %.3f\n", angle[0],angle[1],angle[2],angle[3],angle[4]);
printf("%.3f %.3f %.3f %.3f %.3f\n",angle[0],angle[1],angle[2],angle[3],angle[4]);
}


在跑的時候

跟後來出現的file會紀錄擬調整的角度在裡面
///////
這邊是寫檔的部分
if(key=='r' || key=='R'){
if(fin==NULL){///read讀檔案的第2行
fin=fopen("file.txt", "r");///read讀檔案的第3行
}
fscanf(fin, "%f %f %f %f %f", &angle[0], &angle[1], &angle[2], &angle[3], &angle[4]);///read讀檔案的第4行
glutPostRedisplay();///read讀檔案後, 要重畫畫面
}
只要有按下R就會出現擬之前跑好的角度
4.鍵盤加滑鼠
void keyboard(unsigned char key, int x, int y)///今天簡化修改
{
printf("%c\n", key);
if(key=='0') now=0;
if(key=='1') now=1;
if(key=='2') now=2;
if(key=='3') now=3;
if(key=='4') now=4;
if(key=='5') now=5;}
這是鍵盤的部分
按下的數字代表你的關節位置
void mouse(int button, int state, int x, int y)
{
oldX=x;///今天簡化修改
oldY=y;///今天簡化修改
}
void motion(int x, int y)
{
angle[now] += x-oldX;
oldX=x;
glutPostRedisplay();
}
這邊是控制滑鼠位移關節角度
然後都要記得在下面加上func();
才會執行喔!

(1)內差公式
(2)存檔/讀檔
(3)利用Timer自動內插
(4)鍵盤加滑鼠
1.
用Excel
公式是: alpha* new+(1-alpha)*old



2.讀黨和存檔
首先是讀檔的部分
#include <stdio.h>//一定要有寫這行
FILE * fout=NULL;//開一個空空的檔案
if(key=='s' || key=='S')//如果按下S就會執行到存檔的動作
{
if(fout==NULL){// 如果是空的,第一次寫檔
fout=fopen("file.txt", "w+");
}
fprintf(fout, "%.3f %.3f %.3f %.3f %.3f\n", angle[0],angle[1],angle[2],angle[3],angle[4]);
printf("%.3f %.3f %.3f %.3f %.3f\n",angle[0],angle[1],angle[2],angle[3],angle[4]);
}


在跑的時候

跟後來出現的file會紀錄擬調整的角度在裡面
///////
這邊是寫檔的部分
if(key=='r' || key=='R'){
if(fin==NULL){///read讀檔案的第2行
fin=fopen("file.txt", "r");///read讀檔案的第3行
}
fscanf(fin, "%f %f %f %f %f", &angle[0], &angle[1], &angle[2], &angle[3], &angle[4]);///read讀檔案的第4行
glutPostRedisplay();///read讀檔案後, 要重畫畫面
}
只要有按下R就會出現擬之前跑好的角度
4.鍵盤加滑鼠
void keyboard(unsigned char key, int x, int y)///今天簡化修改
{
printf("%c\n", key);
if(key=='0') now=0;
if(key=='1') now=1;
if(key=='2') now=2;
if(key=='3') now=3;
if(key=='4') now=4;
if(key=='5') now=5;}
這是鍵盤的部分
按下的數字代表你的關節位置
void mouse(int button, int state, int x, int y)
{
oldX=x;///今天簡化修改
oldY=y;///今天簡化修改
}
void motion(int x, int y)
{
angle[now] += x-oldX;
oldX=x;
glutPostRedisplay();
}
這邊是控制滑鼠位移關節角度
然後都要記得在下面加上func();
才會執行喔!

2017年5月22日 星期一
Week14 Una Der 圖學筆記
2017年5月15日 星期一
Week13 Una Der 圖學筆記
今日目標"
1.小考TRT
2.上周範例
3.讀圖檔
4.設定貼圖
5.會動的機器人
6.回家作業:機器人
今日小考示範:
glPushMatrix();
glTranslatef( 要定的位置的X軸, Y.軸,0);
glRotatef(angle, 0,0,1);
glTranslatef( 將正副相反的x軸與y 軸, 0);
要轉的位置的名子();
glPopMatrix();
/////////////
我們要使用openCV讀入圖檔












畫一個png 教img然後存在C槽

圖檔GET
///////////////
(1)freeglut解家縮到桌面
(2)MyEarth開起來{img圖/freeglut.dll/專案cbp/程式cpp}{include/lib/bin}
(3)開起來




是茶壺地球

1.小考TRT
2.上周範例
3.讀圖檔
4.設定貼圖
5.會動的機器人
6.回家作業:機器人
今日小考示範:
glPushMatrix();
glTranslatef( 要定的位置的X軸, Y.軸,0);
glRotatef(angle, 0,0,1);
glTranslatef( 將正副相反的x軸與y 軸, 0);
要轉的位置的名子();
glPopMatrix();
/////////////
我們要使用openCV讀入圖檔












畫一個png 教img然後存在C槽

圖檔GET
///////////////
(1)freeglut解家縮到桌面
(2)MyEarth開起來{img圖/freeglut.dll/專案cbp/程式cpp}{include/lib/bin}
(3)開起來




是茶壺地球

2017年5月8日 星期一
Week12 Una Der 圖學筆記
今日課程目標
(1)3D TRT轉動
(2)矩陣 投影矩陣
(3)攝影機運鏡
(4)會動的機器人
ToDo:http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
下載
data.zip>desk>windows>data>obj
windows>desk>windows>projection.exe>執行
glut>desk>windows>dlut32.dll

ToDo2:
glutLookAt(eyeX,eyeY,eyeZ <<<攝影機
centerX,centerY,centerZ
UpX,upY,upZ)


改這兒
然後第三個是改center
第四個是改拍攝角度
翹起食指拿相機的感覺
然後手指的方向跟手指的是鏡像


然後這四行很重要~!!!!!
Perspective(fov視野,1,near ,far)
如果沒有這行會很破碎
這是有:

是完整的
這是沒有:

會很可怕!!!!!
*fov>>>field of view



這幾張會讓你出現手臂萬花筒XDDDD
TRT就是
glTranslatef( )掛上去
glRotatef( )旋轉
glTranslatef( )固定軸心


就會很像是健身的感覺XD
這邊的原理是
當角度到一定程度時
就會開始剪角度
而當角度歸零時就會加角度
下禮拜考TRT
(1)3D TRT轉動
(2)矩陣 投影矩陣
(3)攝影機運鏡
(4)會動的機器人
ToDo:http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
下載
data.zip>desk>windows>data>obj
windows>desk>windows>projection.exe>執行
glut>desk>windows>dlut32.dll

ToDo2:
glutLookAt(eyeX,eyeY,eyeZ <<<攝影機
centerX,centerY,centerZ
UpX,upY,upZ)


改這兒
然後第三個是改center
第四個是改拍攝角度
翹起食指拿相機的感覺
然後手指的方向跟手指的是鏡像


然後這四行很重要~!!!!!
Perspective(fov視野,1,near ,far)
如果沒有這行會很破碎
這是有:

是完整的
這是沒有:

會很可怕!!!!!
*fov>>>field of view



這幾張會讓你出現手臂萬花筒XDDDD
TRT就是
glTranslatef( )掛上去
glRotatef( )旋轉
glTranslatef( )固定軸心


就會很像是健身的感覺XD
這邊的原理是
當角度到一定程度時
就會開始剪角度
而當角度歸零時就會加角度
下禮拜考TRT
2017年5月1日 星期一
Week11 Una Der 圖學筆記
to do list
(1)組合出機器人
(2)做出可無轉動的關節
(3)錄製動作
1.首先呢要先搜尋"3D Exploration"
尋找到8.181板本
執行
我們這是試用版
因為他的公司已經被買走了QQ
些下來去jsyeh.org/3dcg10
下載DATA模型檔
在3D Exploration中開啟檔案
接下來匯出Open GL Sample App
>File>Save as 選Cpp Open GL
***記得勾選Export Dialog出現選取框框
選Sample App
用NotePad++開檔
記得是open GL
然後新增一個檔
將裡面的Main函式替換成剛剛匯出的Cpp檔案
接下來因為用3D Exploration的匯出程師碼比較老舊
執行時會出現沒辦法解讀的程式碼
只要槓掉舊歐給了~
接下來要試試看存個別的部位
訂閱:
文章 (Atom)

























