#week12
## week12-1_glm_gundam_handA_handB
1.建立專案
2.上週011-2
把環境設好: download opencv
小心:add PATH
小心:目錄不要改
小心:重開codeblocks
codeblocks: setting-compiler
Search directories的Compiler: C:\OpenCV2.1\include
Search directories的Linker: C:\OpenCV2.1\lib
Linker setting: cv210 cxcore210 highgui210
再把 Github 的程式下載(兩種下載法 Git指令 or Download ZIP)
再把week11-2改成week12-1
用右鍵Notepad++開 .cbp 檔,改Titlle
```cpp
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glDisable(GL_TEXTURE_2D);
myBody();
glutSolidSphere(0.1,30,30);///加一個圓球體代替旋轉中心
glEnable(GL_TEXTURE_2D);
glColor3f(1,1,1);
glPushMatrix(); ///加這行, 讓它轉動
glTranslatef(0.3,0.3,0);
glRotatef(angle++,0,0,1);
glTranslatef(0,-0.3,0);
drawHandB(); //glutSolidTeapot( 0.3 );
glPopMatrix();
glPushMatrix(); ///加這行, 讓它轉動
glTranslatef(-0.3,0.3,0);
glRotatef(angle++,0,0,1);
glTranslatef(0,-0.3,0);
drawHandA(); //glutSolidTeapot( 0.3 );
glPopMatrix();
glutSwapBuffers();
}
```
## week12-2_glm_gundan_upper_lower
1.建立專案
2.拿week12-1程式全部拿來用
要把上手、下手臂切好、讀入
Maya開起來,把handA.obj 讀入、切割出upper.obj和lower.obj
加程式碼
```cpp
GLMmodel * upperA= NULL;
GLMmodel * lowerA= NULL;
```
再把void drawHandA() 複製修改成 void drawUpperA() 和 void drawUpperB()
加程式碼
```cpp
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glDisable(GL_TEXTURE_2D);
///myBody();
glutSolidSphere(0.1,30,30);///加一個圓球體代替旋轉中心
glEnable(GL_TEXTURE_2D);
glColor3f(1,1,1);
drawupperA();
glPushMatrix();
glTranslatef(-0.05,-0.1,0);
glRotatef(angle++,0,0,1);///旋轉軸可自己改
glTranslatef(0,-0.2,0);
drawlowerA();
glPopMatrix();
glutSwapBuffers();
}
```
```cpp
float angle = 0, da = 1;///加這行, 讓它轉動
void display()
{
angle+=da;
if(angle>90) da=-1;
if(angle<0) da=+1;
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glDisable(GL_TEXTURE_2D);
///myBody();
angle++改成angle
```
## week12-3_glm_gundan_keyboard_angleID_mouse_motion_angle
1.建立專案
2.拿week12-2程式全部拿來用
3.利用 mouse motion 來改成 angle
```cpp
float angle = 0;,da=1;
void motion(int x,int y) {
angle = y;
}
void display()
{
///angle+=da;
///if(angle>90) da=-1;
///if(angle<0) da=+1;
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
}
```
在int main() 裡,加入glutMotionFunc(motion);
```cpp
void display()
{
///angle+=da;
///if(angle>90) da=-1;
///if(angle<0) da=+1;
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glDisable(GL_TEXTURE_2D);
///myBody();
glutSolidSphere(0.1,30,30);///加一個圓球體代替旋轉中心
glEnable(GL_TEXTURE_2D);
glColor3f(1,1,1);
glPushMatrix();
///glTranslatef();下禮拜繼續
glRotatef(angle,0,0,1);
glTranslatef(0,-0.07,0);
drawupperA();
glPushMatrix();
glTranslatef(-0.02,-0.09,0);
///glRotatef(angle,1,0,0);
glTranslatef(0,-0.21,0);
drawlowerA();
glPopMatrix();
glutSwapBuffers();
}
```
沒有留言:
張貼留言