2024電腦圖學 Computer Graphics
人智二甲
授課教師: 葉正聖 銘傳大學人工智慧應用學系
每週主題: 程式環境、點線面顏色、移動/旋轉/縮放與矩陣(Matrix)、階層性關節轉動(T-R-T)、做出機器人、打光、貼圖、glu/glut函式、鍵盤、滑鼠、計時器(timer)、讀入3D模型、粒子系統、聲音、特效、投影矩陣、攝影機與運鏡、機器人2.0、期末作品
2024年6月19日 星期三
2024年6月13日 星期四
week12
##week12-1_glm_gundam_handA_handB
0.安裝freeglut,把lib\libfreeglut.a複製成libglut32.a
1.File-New-Project,GLUT專案week12-1_glm_gundam_handA_handB
week11
##week11-1_TRT_again
先設定環境
0.安裝freeglut,把lib\libfreeglut.a複製成libglut32.a
1.File-New-Project,GLUT專案week11-1_TRT_again
貼上10-12的程式碼再加上
glTranslatef(0.3,0.2,0);
glRotatef(angle++,0,0,1);
glTranslatef(0.15,0,0);
田糾集跟你說你好
1.下禮拜(18周就是期末作品繳交了)
2.老師教了用茶壺程式碼找定位
有錄影
大致上就是從零開始打
///T
///R
///T
訣竅就是建立一個圓球找軸心
用茶壺程式碼找座標
偷座標
先做末梢
再drawbody()
電腦圖學 Week17
# Week16
#week16-0_sample
先設定好開發環境
freeglut
OpenCV 2.1 (小心 Add PATH)
Settings Compiler Settings 三個設定
- C:\OpenCV2.1\include
- C:\OpenCV2.1\lib
- cv210 cxcore210 highgui210
Lwy_week17
##week17
1.opencv三個設定
2.設定codeblocks
- C:\OpenCV2.1\include
- C:\OpenCV2.1\lib
- cv210 cxcore210 highgui210
罐頭's 電腦圖學日記 Week17
week17
##week17-0
2024年6月12日 星期三
week01
1.今天加入blog
2.設定目標
3.標籤寫學號姓名週數
4.可以放圖片
6.實際在WebGL Water操作3D的球 (https://madebyevan.com/webgl-water/)
7.開啟CodeBlocks>file > new>project
>點選OpenGL > go>將檔案存到桌面>檔名為Week01_OpenGL
>點選第三個齒輪+箭頭
2024graphicsa
graphics 是圖學的意思
week01_GLUT_10_lines
week01_GLUT
C:\Users\Administrator\Desktop\freeglut
libglut32.a 124KB
week02
2.windows.zip ,解壓縮到下載\windows\
1. 左遵設成「多一點顏色」toogle colors at vertices
2. 左邊切換成TRIANGLES
3. 每個頂點,都可以有自己的色彩## 今天的第一個程式:week02_glut_color_teapot 1. 上週的「10行」程式,直接用
## 今天的第二個程式用小畫家幫忙找出頂點座標1.打開小畫家,把一張圖片放進來。建議400x400,中心點在(200,200)2.口訣:減一半,除一半,Y軸加負號(小畫家Y軸朝下)3. glVertex2f((位置-200)/200.0, -(位置-200)/200.0)3. glVertex2f((位置-200)/200.0, -(位置-200)/200.0)3. glVertex2f((位置-200)/200.0, -(位置-200)/200.0)3. glVertex2f((位置-200)/200.0, -(位置-200)/200.0)3. glVertex2f((位置-200)/200.0, -(位置-200)/200.0)
week03
week03_mouse
安裝freeglut
1.hello mouse(最初版)
2.完成版
3.用滑鼠協助畫畫(確定位置點)
4.做第二周第一份作業
會用到/*
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//46行
glPushMatrix();//49
glPopMatrix();
*/
4.1解決移動問題
glTranslatef(teapotX, teapotY,0);
4.2解決轉動問題
右手比讚,(拇指,手指,前後)
可以用3.去理解
5.w可以移動e可以轉動
2024年6月11日 星期二
Week16
#week16-0_sample
準備上課環境
0. freeglut
1. OpenCV
2. 設定 CodeBlocks
- include 目錄:C:\OpenCV2.1\include
- lib 目錄:C:\OpenCV2.1\lib
- link 3個設定:cv210 cxcore210 highgui210
3. File-New-Project week16-0_sample
課本範例
1. https://jsyeh.org/3dcg10/ -下載 data win32
2. 解壓縮 window.zip data.zip
3. 把 data 資料夾整個丟到 window 資料夾
week16-1_sample_gluLookAt
1. File-New-Project week16-1_sample_gluLookAt
2.要改 resize () 函式 ,在最下面增加 gluLookAt(0,0,0, -2.4,1.2,-6, 0,1,0)
#week16-2_glutReshapeFunc_glutPerspective_glutLookAt
將寫一個程式,11行 + 8行,做出透視投影
1. File-New-Project week16-2_glutReshapeFunc_glutPerspective_glutLookAt
2. 貼上11行簡單程式碼
3. 在 int main () 裡加入 glutReshapeFunc ( reshape )
4. 寫自己的 void reshape ( int w,int h ) {......}
week16-3_myTexture_id1_id2_glBindTexture
若想要有兩張貼圖 ( 一張背景、一張給模型 )
1. File-New-Project week16-3_myTexture_id1_id2_glBindTexture
2. 偷用 week05 的程式碼,因為沒有圖檔,所以會出錯!
3. 找一張背景圖
電腦圖學week16
week16-0_Sample
先設定好環境
下載freeglut檔名libglut32OpenCV下載codeblock打開setting-compiler打開search directories 的 compilerC:\OpenCV2.1\includesearch directories 的 linkerC:\OpenCV2.1\libLinker setting 加 cv210 cxcore210 highgui210
下載範例
Git 指令
cd desktop
git clone https://github.com/mickey1132/2024-graphicsA
cd 2024-graphicsA
git status
git add .
git status
git config --global user.email mickylin1132@gmail.com
git config --global user.name mickey1132
git commit -m WeekXX
git push
Week15
#week15-1_PlaySound
0. 安裝 freeglut
1. File-New-Project
'''cpp
#include<windows.h>
'''
'''cpp
int main(...)
{///把 mybeat.wav 放在 C:\裡,就可以用 C:/mykbeat.wav PlaySound ("檔名.wav",NULL,SND_ASYNC) ;
PlaySound ("檔名.wav",NULL,SND_ASYNC) ;
}
'''
# week15-2_PlaySound_empty
1. File-New-Project,GLUT專案 week15-2_PlaySound_empty
2. 把程式碼全刪
'''cpp
#include <windows.h>
int main()
{
PlaySound("C:/Do.wav",NULL,SND_SYNC);
}
'''
現在要把工作執行目錄 Project-Properties 的第2分頁 Execution working dir 改成小數點
再把 桌面/freeglut/bin/freeglut.dll 和音樂 都複製到檔案目錄
# week15-3_CMP3_MCI
1. File-New-Project, GLUT專案 week15-3_CMP3_MCI
2. 請把 CMP3 MCI.h 和 song.mp3 和 freeglut.dll 都放到專案目錄裡
3. 把工作執行目錄設成小數點
```cpp
#include "CMP3_MCI.h" ///雙引號,很像之前 glm.h
CMP3_MCI myMP3; ///宣告一個物件變數
```
在main()裡
```cpp
int main(...)
{
myMP3.Load("song.mp3");
myMP3.Play();
}
```
# week15-4_mouse_motion_translate_rotate
1. File-New-Project, GLUT專案 week15-4_mouse_motion_translate_rotate
2. 貼上 11行的 GLUT 程式碼
3. 目標先能 移動、旋轉、陣列
Week05
#OpenCV安裝
1. 下載 OpenCV-2.1.0-win32-vs2008.exe
小心1:Add OpenCV to . . . PATH
小心2:要安裝在 C:\OpenCV2.1 目錄裡
2. 安裝完後,要重開 CodeBlocks
3.設定 Setting-Compiler 要加入3個設定
search 目錄 Compiler 的 include 目錄裡 - C:\OpenCV2.1\include
search 目錄 Linker 的 lib 目錄 - C:\OpenCV\lib
加入 Linker 的 3個檔名 - cv210 cxcore210 highgui210
## week05-1_opencv.cpp
0. 找一張圖片,放在 C:\image.jpg
1. File-New-Empty File 空白檔案 week05-1_opencv.cpp
#include <opencv/highgui.h>
int main()
{///Intel performence library
IplImage * img = cvLoadImage("c:/image.jpg");
cvShowImage("week05", img);
cvWaitKey(0);
}
(家裡的電腦不知道為什麼沒辦法存到C槽)
Week10
#week10
先設定環境
0.安裝freeglut,把lib\libfreeglut.a複製成libglut32.a
1.File-New-Project,GLUT專案week10-1_glutWireCube_myBody_myArm
2.貼上week09-3_glutWireTeapot_glutWireCube_glutWireSphere的程式碼
3.要把void display()改寫,呼叫myBody(),myArm()
##week10-1_glutWireCube_myBody_myArm
void myBody() { ///我的身體
glPushMatrix();
glColor3f(1,0,0);///紅色的
glutWireCube(0.6);///myBody();
glPopMatrix();
}
void myArm() { ///我的手臂
glPushMatrix();
glColor3f(0,1,0);///綠色的
glScalef(1,0.4,0.4);///myArm();
glutWireCube(0.3);
glPopMatrix();
}
1.File-New-Project,GLUT專案week10-2_rotate_myArm
2.貼上10-1的程式
3.加上float angle=0;///旋轉的角度
4.在main() 加上glutIdleFunc(display);///有空就旋轉
5.在display()裡,myArm()的前後,加上glPushMatrix()
和glRotatef(angle++,0,0,1);
Week02
#點線面色彩
1.下載課本範例
https://jsyeh.org/3dcg10/
2.下載 win32 data
解壓縮(data直接拖到window資料夾裡)
3.點Shapes.exe
#week02_glut_color_teapot
0.安裝freeglut並把lib\libfreeglut.a複製成libglut32.a
1.File-New-Project,GLUT專案week02_glut_color_teapot
2.上周的10行程式拿來用
3.再加1行
4.做兩個茶壺
#week02_color_triangle
把week02_glut_color_teapot貼上修改
#week02_glut_glvertex2f_mspaint
用小畫家,找到頂點座標
1. File-New-Project,,Glut專案 week02_glut_glvertex2f_mspaint
2. 開小畫家,放一張圖進來,建議400*400
a. mouse所在的點畫面左下角會有座標
3. 口訣: 減一半、除一半、Y加負號
#week02_glut_cos_sin_circle
畫圓
1. cos=x sin=y
2. cos sin 前面乘一個數決定圓形的大小
2. cos sin 後面加一個數決定圓形的位子
Week09
##week09-0_sample
0.安裝freeglut,再把lib\libfreeglut.a複製成libglut32.a
1.File-New-Project,GLUT專案 week09-0_sample
##複習上週的week08-3_glm_gundam_opencv_texture_lighting
要把環境設好:OpenCV
1.桌面有葉正聖老師上課軟體 OpenCV-2.1.0
2.小心:Add PATH
3.小心:目錄不要改
4.要重開CodeBlocks
CodeBlocks:Setting-Compiler 裡,要設3個地方
1.C:\OpenCV2.1\include
2.C:\OpenCV2.1\lib
3.cv210 cxcore210 highgui210
要把上週的GitHub倉庫複製下來
0.安裝Git,開啟Git Bash小黑
1.cd desktop
2.git clone http://github.com/帳號/2024graphicsa
3.cd 2024graphicsa
4.start .
把上週的week08-3_glm_gundam_opencv_texture_lighting開起來
1.File-Open,到那個目錄,點開.cbp (CodeBlocks Project檔)
2.Build&Run就可以
##把剛剛的專案,變成weel09-1_glm_gundam_opencv_texture_lighting
0.把剛剛的專案先關起來 Close Project (這樣才不會被鎖)
1.目錄:把整個week08-3_glm_gundam_opencv_texture_lighting複製到桌面的
weel09-1_glm_gundam_opencv_texture_lighting
2.檔案:把新目錄裡的專案檔week08-3_glm_gundam_opencv_texture_lighting.cbp改檔名變成
weel09-1_glm_gundam_opencv_texture_lighting
3.CodeBlocks File-Open開啟weel09-1_glm_gundam_opencv_texture_lighting.cbp
4.再把專案的Title改成weel09-1_glm_gundam_opencv_texture_lighting
就是用Notepad++ 開啟weel09-1_glm_gundam_opencv_texture_lighting.cbp檔,把裡面的week08-3都改成week09-1就酐了,記得存檔
5.再用CodeBlocks File-Open開它
##week9-2_glutSolidTeatop_glutWireCube_glutSolidSphere
1.File-New-Project,GLUT專案
week9-2_glutSolidTeatop_glutWireCube_glutSolidSphere
2.貼上GLUT程式11行
3.換畫另外三個,左上、上、右上,使用期中考教的程式碼
##week09-3_glutWireTeatop_glutWireCube_glutWireSphere
1.File-New-Project,GLUT專案
week09-3_glutWireTeatop_glutWireCube_glutWireSphere
2.貼上week09-2的程式
3.把3段,再複製到下面,並把下面y座標改成負的
-
1.今天加入一個Blogger 2.創立一個自己的品牌 3.每周一篇,標籤(學號姓名,WeekXX) 4.第二節學到如何放圖片 5.老師教我們許多截圖法 6.實際在WebGL Water操作3D的球 (https://madebyevan.com/webgl-wate...
-
week16-1_sample_gluLookAt 在resize()函式 加入gluLookAt() 2想再按按鍵時看不同位置 if(key=='?') week16-2_glut_glutReshapeFunc_gluPerspective_gluLookAt...
-
1. week16-0_sample (1)安裝freeglut (2)安裝opencv,重開CodeBlocks --> 詳細去看 魚鱗電腦圖學Week05-1 (3) 打開新專案,命名為: week1 6-0_sample 2. 下載課本範例☆゚.*・。 (1)進...























