2024年5月9日 星期四

電腦圖學week12

##week12-1_glm_gundam_handA_handB

先設定好環境

0. freeglut 安裝(拉到桌面),再把 lib的 libfreeglut.a 複製成 libglut32.a

1.安裝OpenCV

2.重開CodeBlocks,Setting-Compiler 要改3個地方

(1)C:\OpenCV2.1\include


(2)C:\OpenCV2.1\lib


(3)cv210 cxcore210 highgui210

接下來再把 GitHub的程式倉庫下載下來,

week11-2_obj_gundam_opencv_texture_lighting 拿來改

1.week11-2複製目錄,改目錄名為week12-1_glm_gundam_handA_handB

2.把.cbp檔,改檔名為week12-1_glm_gundam_handA_handB

3.用Notepad++開.cbp檔,改Title為week12-1_glm_gundam_handA_handB,並把對應目錄改好

4.CodeBlocks File-Open week12-1_glm_gundam_handA_handB


要修改的程式:把今天考試的T-R-T設定正確

技巧1:把擋住的,註解掉

技巧2:把用來對照的座標原點,用glutSolidSphere(0.1,30,30);


3.glTranslatef(0.3,0.3,0);

2.glRotatef(angle++,0,0,1)///(2)對z轉

1.glTranslatef(0,-0.3,0);









##week12-2_glm_gundam_upper_lower

要把上手臂、下手臂 切好、讀入

Maya開起來,把handA.obj讀入,切割出upperA.obj和lowerA.obj

再把week12-1_glm_gundam_handA_handB複製成week12-2_glm_gundam_upper_lower

裡面的.cbp改檔名成week12-2_glm_gundam_upper_lower

再用Notepad++開.cbp檔,改Title為week12-2_glm_gundam_upper_lower,並把對應目錄改好


最後把 upperA.obj upperA.mtl upperB.obj upperB.mtl 放到

week12-2_glm_gundam_upper_lower的目錄裡


加程式

```cpp

GLMmodel *upperA = NULL;

GLMmodel *lowerA = NULL;


再把 void drawHandA()複製修改成 void drawUpperA()和void drawUpperB()



更改程式讓手臂前後擺動

```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();先註解掉身體

    ///glutSolidSphere(0.1,30,30);

    glEnable(GL_TEXTURE_2D);

    glColor3f(1,1,1);


    ///先全刪

    drawUpperA();///(3)上手臂放好

    glPushMatrix(); ///加這行, 讓它轉動

        glTranslatef(-0.02,-0.09,0);///(3)再掛到上手臂的位置

        glRotatef(angle,1,0,0);///(2)z軸轉

        glTranslatef(0,-0.21,0);///(1)

        drawLowerA();

    glPopMatrix(); ///加這行, 讓它轉動


    glutSwapBuffers();

}



##week12-3_glm_gundam_keyboard_angleID_mouse_motion_angle

1.把week12-2_glm_gundam_upper_lower複製成

week12-3_glm_gundam_keyboard_angleID_mouse_motion_angle

2.利用mouse motion來改變angle

```cpp

float angle = 0, da=1; ///剛剛的舊程式碼

void motion(int x,int y){//加入mouse motion對應函式

    angle=y;//當我們的mouse motion時,y座標 對應角度

}

void display()

{

    angle+=da;//不要自己動,要用mouse motion來動

    if(angle>90)    da=-1;

    if(angle<0)    da=+1;

```

再int main()裡,加入 glutMotionFunc(motion);

用滑鼠控制轉動



沒有留言:

張貼留言