2024年5月9日 星期四

week12

 #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();
}
```





沒有留言:

張貼留言