2. 設定執行目錄、include/lib目錄、link lib檔
加入glut.cpp檔, 修改main程式, 留下打光和外框
**外框函式**
**打光**
**讀入立體模型**
**外框函式**
設定執行目錄
3. 讀入彩色3D立體模型
if(pmodelA==NULL){
pmodelA=glmReadOBJ("Al.obj"); //執行目錄裡, 有個 Al.obj 檔+ Al.mtl檔
glmUnitize(pmodelA); //設成單位大小
glmFacetNormals(pmodelA); //重算(面)法向量
glmVertexNormals(pmodelA, 90); //重算(點)法向量
} //讀完obj, 且設好
4.設定手臂關節
//身體, Al.obj
//手臂, porsche.obj
將身體存成一個函式在display裡呼叫執行
glRotatef(180, 0 ,1 ,0); //對Y轉180度,向正面
畫手臂的函式
glRotatef(90, 0 ,1 ,0); //對Y轉90度
glScalef(0.5, 0.5, 0.5); //改大小
display函式
glTranslatef(0,0,0); //第3個T
glRotatef(angle, 0, 0,1); //第2個R
glTranslatef(0.25, 0, 0); //第1個T 設手臂移動點
5.用滑鼠控制旋轉
**滑鼠和動作的函式**
!!!!!!<關節控制>!!!!!!!
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
///glutSolidSphere(0.1, 30,30); //原點、圓心
drawBody();
glPushMatrix(); //右手臂
glTranslatef(0.5, 0.4, 0); //第3個T
glRotatef(angle, 0, 0, 1); //第2個R
glTranslatef(0.3, 0, 0); //第1個T
drawArm(); //右上手臂
glPushMatrix();
glTranslatef(0.25, 0, 0); //第3個T
glRotatef(angle, 0,0,1);///第2個R
glTranslatef(0.3, 0, 0);///第1個T
drawArm();///右下手臂
glPopMatrix();
glPopMatrix();
glPushMatrix();///左手臂
glTranslatef(-0.5, 0.4, 0);///第3個T
glRotatef(angle, 0,0,1);///第2個R
glTranslatef(-0.3, 0, 0);///第1個T
drawArm();///左上手臂
glPushMatrix();
glTranslatef(-0.25, 0, 0);///第3個T
glRotatef(angle, 0,0,1);///第2個R
glTranslatef(-0.3, 0, 0);///第1個T
drawArm();///左下手臂
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}










沒有留言:
張貼留言