2014年5月8日 星期四

01160306_呂季樺_第十二周

今天的目標: 做出會動的木頭人偶

1. 今天先用一個 T-R-T 對特定軸轉動的小考, 來讓同學複習這個關鍵技術
1.1. 洩題: 用 LINE 饅頭人, 來進行考試
1.2. 最後答案:
glPushMatrix();
  glTranslatef( -0.5, 0.5, 0 ); //Step 3
  glRotatef( -30,  0, 0, 1);// Step 2 (有陷阱哦!)
  glTranslatef( -0.4, 0, 0);// Step 1
  drawHand();
glPopMatrix();

2. 我們開始用木頭人的圖, 進行示範
2.1. 上網找出一張木頭人, 開始裁出 n 張圖

3. 寫出程式的內容 (可以剪貼哦!)
3.1. 安裝 glut 及 opencv 的 DevPak 讓 Dev C++ 可以寫有貼圖的程式
3.2. 在 blog 裡面找一下程式來剪貼啦 (ex. tag: 000葉正聖老師, 然後找裡面的 texture 及上週的程式碼)
3.3. 請注意, 要把排版 TAB 設定好
3.4. link error 時, 要把 Alt-P (Project-Option設定) 裡面的 Link 設定好, 加入咒語 -lcv -lcxcore -lhighgui
(要小心要用空格與後面的格開哦!)
3.5. 執行時出現 dll 檔的錯誤時, 請把 c:\dev-cpp\bin\opencv\ 目錄裡面所有的 .dll 檔案, 都放到 c:\windows\system32 裡面

#include <GL/glut.h>
#include <opencv/highgui.h>
#include <opencv/cv.h>
IplImage *img1, *img2 ,*img3, *img4, *img5;
GLuint id1, id2, id3, id4, id5;
float angleX=0;

void myTexture()
{
img1=cvLoadImage("man.jpg");
img2=cvLoadImage("L-hand.jpg");
img3=cvLoadImage("R-hand.jpg");
img4=cvLoadImage("L-foot.jpg");
img5=cvLoadImage("R-foot.jpg");

cvCvtColor(img1, img1, CV_BGR2RGB);
cvCvtColor(img2, img2, CV_BGR2RGB);
cvCvtColor(img3, img3, CV_BGR2RGB);
cvCvtColor(img4, img4, CV_BGR2RGB);
cvCvtColor(img5, img5, CV_BGR2RGB);
glEnable(GL_TEXTURE_2D);
glGenTextures(1, &id1);
glGenTextures(1, &id2);
glGenTextures(1, &id3);
glGenTextures(1, &id4);
glGenTextures(1, &id5);

glBindTexture(GL_TEXTURE_2D, id1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img1->width, img1->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img1->imageData);

glBindTexture(GL_TEXTURE_2D, id2);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img2->width, img2->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img2->imageData);

glBindTexture(GL_TEXTURE_2D, id3);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img3->width, img3->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img3->imageData);

glBindTexture(GL_TEXTURE_2D, id4);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img4->width, img4->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img4->imageData);

glBindTexture(GL_TEXTURE_2D, id5);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img5->width, img5->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img5->imageData);

}

沒有留言:

張貼留言