2008年12月28日 星期日

3D場景


這次的作業算是整合上課學過的所有功能
包括光源,攝影機移動
我做出來的成品有光源的移動及xz平面的攝影機平移
目前希望能夠寫出以攝影機為中心旋轉xyz三個方向的360度功能
不過因為要使用sin&cos
數學方面我不是很強所以還在計算中

以下是部分code

gluLookAt(eye_x, eye_y, eye_z,at_x, at_y, at_z,0,1,0 );
case 'd': // 攝影機左平移
eye_x += 0.01;
at_x += 0.01;
glutPostRedisplay();
break;
這是攝影機平移功能的部分code

GLfloat LightAmbient[]= { 0.4f, 0.4f, 0.35f, 1.0f };
GLfloat LightDiffuse[]= { 8.8f, 8.8f, 8.8f, 1.0f };
GLfloat LightSpecular[]= { 0.5f, 0.5f, 0.5f, 0.5f };
GLfloat LightPosition[]= { 5.0f, 0.0f, 7.0f, 1.0f };

glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); // Setup The Ambient Light
glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); // Setup The Diffuse Light
glLightfv(GL_LIGHT1, GL_SPECULAR,LightSpecular); // Setup The Specular Light
glLightfv(GL_LIGHT1, GL_POSITION,LightPosition); // Position The Light
glEnable(GL_LIGHT1); // Enable Light One
這是光源的部分code

GLMmodel *glm_model;

glm_model= glmReadOBJ( "object/area.obj" );
glmUnitize( glm_model );
glmScale( glm_model, .1 );
glmFacetNormals( glm_model );
glmVertexNormals( glm_model, 90 );
list_id = glmList( glm_model, GLM_MATERIAL | GLM_SMOOTH );
glmDelete( glm_model );
這是嵌入obj的部分code

沒有留言: