Week12模型的關節轉動
week12-1_glm_gundam_opencv_texture_lighting
1. 安裝freeglut,複製libfreeglut.a改成libglut32.a
2. 新增GLUT專案取名成week11-0_sample
3. 下載OpenCV選第2或3選項別選第1個
4. 安裝在預設的目錄,重開CodeBlocks(讓編譯器讀到檔案)
4.0 去設定 Settings->Compiler 要加3個設定
4.1 search目錄 Compiler的 include目錄 加C:\OpenCV2.1\include
4.2 search目錄 Linker 的 lib目錄 加C:\OpenCV2.1\lib
改成week12-1_glm_gundam_handA_handB
6. 把紅色身體註解,並新增一個圓當關節,並移動手
glutSolidSphere(0.1, 30, 30);
glTranslatef(0, -0.3, 0);///(1)把旋轉軸放正中心
week12-2_glm_gundam_upper_lower
用Maya切割出上下手臂(左手)、匯出OBJ檔
3. 加程式碼
GLMmodel * upperA = NULL;
GLMmodel * lowerA = NULL;
void drawUpperA(void)
{
if (!upperA) {
upperA = glmReadOBJ("data/upperA.obj");
if (!upperA) exit(0);
glmUnitize(upperA);
glmFacetNormals(upperA);
glmVertexNormals(upperA, 90.0);
}
glmDraw(upperA, GLM_SMOOTH | GLM_TEXTURE);
}
void drawLowerA(void)
{
if (!lowerA) {
lowerA = glmReadOBJ("data/lowerA.obj");
if (!lowerA) exit(0);
glmUnitize(lowerA);
glmFacetNormals(lowerA);
glmVertexNormals(lowerA, 90.0);
}
glmDraw(lowerA, GLM_SMOOTH | GLM_TEXTURE);
}
4. 將下手臂裝到上手臂並以X軸轉
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();
glPushMatrix(); ///
glTranslatef(-0.02, -0.09, 0);///(3)掛到上手臂上
glRotatef(angle, 1, 0, 0);///(2)x軸轉
glTranslatef(0, -0.21, 0);///(1)
drawLowerA();///
glPopMatrix(); ///
glutSwapBuffers();
}
week12-3_glm_gundam
_keyboard_angleID_mouse_motion_angle
用Maya切割出上下手臂(左手)、匯出OBJ檔
3. 新增一層來控制上手臂的關節
glPushMatrix();
///glTranslatef(0, -0.07, 0);掛在肩上
glRotatef(angle, 0, 0, 1);
glTranslatef(0, -0.07, 0);
drawUpperA();
glPushMatrix();
glTranslatef(-0.02, -0.09, 0);///(3)掛到上手臂上
///glRotatef(angle, 1, 0, 0);///(2)x軸轉
glTranslatef(0, -0.21, 0);///(1)
drawLowerA();///
glPopMatrix(); ///
glPopMatrix(); ///
沒有留言:
張貼留言