電腦圖學期末作品
影片網址:https://youtu.be/Qge8sifNffs
作品簡介:使用TWICE-Dance the night away作為本次作業的歌曲,透過按鍵w開始進行動作的記憶儲存,並且在關掉視窗後重新開啟按按鍵r即可啟動做出剛剛所用的動作。
學習心得:這次的問題其實遇到蠻多的,但是透過詢問老師也獲得改善,不過要讓機器人跟著音樂節奏跳舞我覺得蠻困難的,所以上次老師給我們看的示範影片做的
非常厲害我十分佩服,這學習利用程式碼學到很多。
2019電腦圖學 Computer Graphics 授課教師: 葉正聖 銘傳大學資訊傳播工程系 每週主題: 程式環境、點線面顏色、移動/旋轉/縮放與矩陣(Matrix)、階層性關節轉動(T-R-T)、做出機器人、打光、貼圖、glu/glut函式、鍵盤、滑鼠、計時器(timer)、讀入3D模型、粒子系統、聲音、特效、投影矩陣、攝影機與運鏡、機器人2.0、期末作品
2019年6月29日 星期六
2019年6月6日 星期四
06160061_W16
(1)作業Q&A
(2)複習:貼圖
(3)複習:打光
(4)複習:模型
GLUT程式
1.網頁搜尋freeglut window->下載freeglut 3.0.0 MinGW Package
2.將壓縮檔拉至桌面
3.把資料夾開啟->lib資料夾開啟->將libfreeglut.a檔案負制病原地貼上->把複製檔重新命名為libglut32.a


下載執行Open.CV
加入OpenCV/include 資料夾
加入OpenCV/lib 資料夾
加入以下三個
加上貼圖的程式碼
複習打光讀入模型結合貼圖
#include <GL/glut.h>
#include <opencv/highgui.h> ///OpenCV High GUI讀圖 ///貼圖需要它
#include <opencv/cv.h> ///OpenCV cvCvtColor() to convert color///貼圖需要它
///程式碼是對的, 但是沒有設定好include, lib, bin
GLuint id1, id2, id3;///NOW2 ///貼圖需要它
float a=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBindTexture(GL_TEXTURE_2D, id1);///id1 for background ///貼圖需要它
glBegin(GL_POLYGON); ///貼圖需要它
glTexCoord2f(0, 0); glVertex3f(-1, +1, 0); ///貼圖需要它
glTexCoord2f(0, 1); glVertex3f(-1, -1, 0); ///貼圖需要它
glTexCoord2f(1, 1); glVertex3f(+1, -1, 0); ///貼圖需要它
glTexCoord2f(1, 0); glVertex3f(+1, +1, 0); ///貼圖需要它
glEnd();///貼圖需要它
glBindTexture(GL_TEXTURE_2D, id3);///id3 for rotating square
glPushMatrix();
glTranslatef(0.5, 0.5, 0);
glRotatef(a++, 0, 0, 1);
glScalef(0.3, 0.3, 0.3);
glBegin(GL_POLYGON);
glTexCoord2f(0, 0); glVertex3f(-1, +1, 0);
glTexCoord2f(0, 1); glVertex3f(-1, -1, 0);
glTexCoord2f(1, 1); glVertex3f(+1, -1, 0);
glTexCoord2f(1, 0); glVertex3f(+1, +1, 0);
glEnd();
glPopMatrix();
glBindTexture(GL_TEXTURE_2D, id2);///id2 for teapot
glutSolidTeapot( 0.3 );
glutSwapBuffers();
}
///void myInit()
GLuint myTexture(char * filename) ///貼圖需要它
{
IplImage * img = cvLoadImage(filename); ///NOW OpenCV ///貼圖需要它
cvCvtColor(img, img, CV_BGR2RGB);///convert color ///NOW OpenCV ///貼圖需要它
GLuint id; ///貼圖需要它
glEnable(GL_TEXTURE_2D); ///貼圖需要它
glGenTextures(1, &id ); ///貼圖需要它
glBindTexture(GL_TEXTURE_2D, id); ///貼圖需要它
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); ///貼圖需要它
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); ///貼圖需要它
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); ///貼圖需要它
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); ///貼圖需要它
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img->imageData); ///貼圖需要它
return id;///貼圖需要它
}
int main(int argc, char **argv)
{
///IplImage * img = cvLoadImage("marvel.jpg");
///cvShowImage("opencv", img);
///cvWaitKey(0);///等你按按鍵
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
glutCreateWindow("GLUT");///之後
///建好GLUT視窗,可以開始準備 3D 貼圖 (要在create...MainLoop才能建貼圖)
id1 = myTexture("lin.jpg"); ///myInit();///我們的貼圖在這裡 ///貼圖需要它
id2 = myTexture("s.jpg");
id3 = myTexture("s.jpg");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();///之前
}
2019年5月30日 星期四
06160061_W15
電腦圖學
(1)主題:攝影機、運鏡
(2)主題:投影、矩陣
(3)複習:位置移動 VS.轉動
(4)複習:背景貼圖
(5)期末作品
到http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/下載
將[data][win32]解壓縮
把[data]的資料夾放入window內 將glut32.dllu也放入window
拉近
拉遠
glutLookAt(eyeX,eyeY,eyeZ
centerX,centerY,centerZ,
upX,upY,upZ)
GLUT程式
1.網頁搜尋freeglut window->下載freeglut 3.0.0 MinGW Package
2.將壓縮檔拉至桌面
3.把資料夾開啟->lib資料夾開啟->將libfreeglut.a檔案負制病原地貼上->把複製檔重新命名為libglut32.a
4.進入code block


下載source
將window內的data放入freeglut的bin資料夾
將glm.cpp加入code blocks
將projection的程式碼貼上code blocks
成果
加上打光
模型旋轉
正常模型旋轉
大鼻子小眼睛
(1)主題:攝影機、運鏡
(2)主題:投影、矩陣
(3)複習:位置移動 VS.轉動
(4)複習:背景貼圖
(5)期末作品
到http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/下載
將[data][win32]解壓縮
把[data]的資料夾放入window內 將glut32.dllu也放入window
拉近
拉遠
glutLookAt(eyeX,eyeY,eyeZ
centerX,centerY,centerZ,
upX,upY,upZ)
GLUT程式
1.網頁搜尋freeglut window->下載freeglut 3.0.0 MinGW Package
2.將壓縮檔拉至桌面
3.把資料夾開啟->lib資料夾開啟->將libfreeglut.a檔案負制病原地貼上->把複製檔重新命名為libglut32.a


下載source
將window內的data放入freeglut的bin資料夾
將glm.cpp加入code blocks
將projection的程式碼貼上code blocks
成果
加上打光
模型旋轉
正常模型旋轉
大鼻子小眼睛
2019年5月23日 星期四
06160061_W14
2019年5月16日 星期四
06160061_W13
電腦圖學
(1)主題:檔案
(2)主題:關節.擺動作
(3)主題:複習
(4)作業:機器人擺動作
開啟新的project
選concole application
打上程式碼
(檔案的程式碼)
可以讀到關節並且印出來
GLUT程式
1.網頁搜尋freeglut window->下載freeglut 3.0.0 MinGW Package
2.將壓縮檔拉至桌面
3.把資料夾開啟->lib資料夾開啟->將libfreeglut.a檔案負制病原地貼上->把複製檔重新命名為libglut32.a
4.進入code block


打上茶壺,並且透過滑鼠控制轉動
透過鍵盤控制個別關節
按R鍵可以紀錄你的動作
(1)主題:檔案
(2)主題:關節.擺動作
(3)主題:複習
(4)作業:機器人擺動作
開啟新的project
選concole application
打上程式碼
(檔案的程式碼)
可以讀到關節並且印出來
GLUT程式
1.網頁搜尋freeglut window->下載freeglut 3.0.0 MinGW Package
2.將壓縮檔拉至桌面
3.把資料夾開啟->lib資料夾開啟->將libfreeglut.a檔案負制病原地貼上->把複製檔重新命名為libglut32.a


打上茶壺,並且透過滑鼠控制轉動
透過鍵盤控制個別關節
按R鍵可以紀錄你的動作
訂閱:
文章 (Atom)

































