【题目】
opengl 3D环境开发
【内容】
绘制一个简单的三维场景,可以是室内:卧室,办公室,教室,也可以是室外:运动场,公园等,加上光照效果,透视投影,不能过于简单
可以加动画,加上鼠标和键盘交互
一、题目:
Opengl大作业
二、程序分析:
- 实现三维场景,可以游览以及可以看到模型物体的不同状态。
- 三维场景有不同的模型组合,有房子,有地球,有月球。
- 可以看到物体的自由移动,汽车在公路上自由移动。
- 可以模拟真实的光照效果,具有阴影体现,可以呈现地球的白天黑夜。
- 模拟粒子系统的,下雪效果。
- 物体旋转,地球自转和月球绕着地球转
- 房子有真实效果的模型和细节。
三、程序树形建模
四、程序函数解析
五、程序结构分层
省略
六、程序代码详细
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//清除颜色缓冲以及深度缓
glEnable(GL_TEXTURE_2D);
gluQuadricTexture(g_text, GLU_TRUE); //建立纹理坐标
gluQuadricDrawStyle(g_text, GLU_FILL); //用面填充
glPushMatrix();//2
glRotatef((GLfloat)direction, 0.0, 0.0, 1.0);
glTranslated(Ox, Oy,Oz);
glPushMatrix();//3
glPushMatrix();//4
//太阳灯
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
GLfloat light1_ambient[] = { 1,1,1,1.0 };// 材料的环境光颜色
GLfloat light1_diffuse[] = { 1,1,1,1.0 };
GLfloat light1_specular[] = { 1,1,1,1.0 };//材料的镜面反射光颜色
GLfloat light1_position[] = { Ox,Oy,Oz, 1.0 };//位置
GLfloat spot_direction[] = { 20,0,0 };
glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, spot_direction);
glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 90.0);//高光指数
glLightfv(GL_LIGHT1, GL_AMBIENT, light1_ambient);
glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_diffuse);
glLightfv(GL_LIGHT1, GL_SPECULAR, light1_specular);
glLightfv(GL_LIGHT1, GL_POSITION, light1_position);
glEnable(GL_LIGHT1);
glPopMatrix();//4
glPushMatrix();//5
glRotatef(spin, 0.0, 0.0, 1.0);
glBindTexture(GL_TEXTURE_2D, texName[4]);
gluSphere(g_text, 60, 3600, 3600);//地球
//------------月亮-------------
glPushMatrix();//6
glRotatef((GLfloat)direction, 0.0, 0.0, 1.0);
glTranslated(-100, 0, 0.0);
glBindTexture(GL_TEXTURE_2D, texName[5]);
gluSphere(g_text, 6, 200, 200);
glPopMatrix();//6
glPopMatrix();//5
//光照压栈
glPushMatrix();//7
lightinit(Ox, Oy);
glPopMatrix();//7
glPopMatrix();//4
//--------------------------汽车压栈
//前
glPushMatrix();//1
if (cargo1==1) {
car1 -=0.05;
}
else {
car1 += 0.05;
}
if (car1 <= -37) {
cargo1 = 0;
}
if (car1 >= 37) {
cargo1 = 1;
}
glTranslated(car1, 37, 2);
glRotated(90.0, 90.0, 0.0, 1.0);
glScalef(0.1, 0.1, 0.1);
drawcar();
glPopMatrix();//1
//右
glPushMatrix();//1
if (cargo2 == 1) {
car2 -= 0.05;
}
else {
car2 += 0.05;
}
if (car2 <= -37) {
cargo2 = 0;
}
if (car2 >= 37) {
cargo2 = 1;
}
glTranslated(37, car2, 2);
glRotated(90.0, 0.0, 0.0, 1.0);
glRotated(90.0, 90.0, 0.0, 1.0);
glScalef(0.1, 0.1, 0.1);
drawcar();
glPopMatrix();//1
//左
glPushMatrix();//1
if (carback1 == 1) {
car3 -= 0.05;
}
else {
car3 += 0.05;
}
if (car3 <= -37) {
carback1 = 0;
}
if (car3 >= 37) {
carback1 = 1;
}
glTranslated(-37, car3, 2);
glRotated(90.0, 0.0, 0.0, 1.0);
glRotated(90.0, 90.0, 0.0, 1.0);
glScalef(0.1, 0.1, 0.1);
drawcar();
glPopMatrix();//1
//后
glPushMatrix();
glTranslated(0,-75, 0);
glPushMatrix();//1
if (carback2 == 1) {
car4 -= 0.05;
}
else {
car4 += 0.05;
}
if (car4 <= -37) {
carback2 = 0;
}
if (car4 >= 37) {
carback2 = 1;
}
glTranslated(car4, 37, 2);
glRotated(90.0, 90.0, 0.0, 1.0);
glScalef(0.1, 0.1, 0.1);
drawcar();
glPopMatrix();//1
glPopMatrix();
//外面
glBindTexture(GL_TEXTURE_2D, texName[16]);
Up_down(20.0, 20.0, -40.0, 40.0, -40.0, 40.0, -0.001);
//地板
glBindTexture(GL_TEXTURE_2D, texName[0]);
Up_down(10.0, 10.0, -20.0, 20.0, -20.0, 20.0, 0.0);
glBindTexture(GL_TEXTURE_2D, texName[20]);
Up_down(10.0, 1.0, -40.0, 40.0, -40.0, -35, 0.0);
Up_down(10.0, 1.0, -40.0, 40.0, 35, 40, 0.0);
glPushMatrix();
glRotated(90.0, 0.0, 0.0, 1.0);
Up_down(10.0, 1.0, -40.0, 40.0, -40.0, -35, 0.0);
glPopMatrix();
glPushMatrix();
glRotated(-90.0, 0.0, 0.0, 1.0);
Up_down(10.0, 1.0, -40.0, 40.0, -40.0, -35, 0.0);
glPopMatrix();
//--------------室外墙----------------
glBindTexture(GL_TEXTURE_2D, texName[1]);
//左边墙
Left_right(3.0, 1.0, -20.0,-20.0,20.0,0.0,10.0);
//右边墙
Left_right(3.0, 1.0, 20.0, -20.0, 20.0, 0.0, 10.0);
//后边墙
Before_back(3.0, 1.0, -20.0, 20.0, -20.0, 0.0, 10.0);
//前边墙
Before_back(3.0, 1.0, -20.0, 20.0, 20.0, 0.0, 10.0);
//--------------屋顶----------------
glBindTexture(GL_TEXTURE_2D, texName[2]);
Up_down(4.0, 4.0, -20.0,20.0,-20.0,20.0,10.0);
//门
glBindTexture(GL_TEXTURE_2D, texName[11]);
Before_back(1.0, 1.0, -18.0, -15.0, 19.99, 0.0, 5.0);//大厅
Before_back(1.0, 1.0, -18.0, -15.0, 20.01, 0.0, 5.0);//
glBindTexture(GL_TEXTURE_2D, texName[11]);
Before_back(1.0, 1.0, -8.0, -5.5, 4.99, 0.0, 5.0);//卫生间
Before_back(1.0, 1.0, -8.0, -5.5, 5.01, 0.0, 5.0);//卫生间
//---------------------------------------------------------------------大厅--------------------------------------------------
//--------------电视墙----------------
glBindTexture(GL_TEXTURE_2D, texName[8]);
Left_right(1.0, 1.0, 19.9, 0.0, -20.0, 0.0, 10.0);
//--------------电视----------------
glBindTexture(GL_TEXTURE_2D, texName[6]);
Left_right(1.0, 1.0, 19.8, -6.0, -14.0, 3.0, 7.0);
//--------------电视柜子----------------
glBindTexture(GL_TEXTURE_2D, texName[7]);
//前面
Left_right(1.0, 1.0, 18.0, -6.0, -14.0, 0.0, 2.3);
//四周
glBindTexture(GL_TEXTURE_2D, texName[9]);
//左边
Before_back(1.0, 1.0, 18.0, 20.0,-6.0, 0.0, 2.3);
//右边
Before_back(1.0, 1.0, 18.0, 20.0, -14.0, 0.0, 2.3);
//上面
Up_down(1.0, 1.0, 18.0, 20.0, -6.0, -14.0, 2.3);
//沙发组合-------------------------------------
glBindTexture(GL_TEXTURE_2D, texName[19]);
Left_right(1.0, 1.0, 5.0, -7.0, -12.0, 0.0, 3.0);
Left_right(1.0, 1.0, 7.0, -7.0, -12.0, 0.0, 1.5);
Before_back(1.0, 1.0, 5.5, 7.0, -7.0, 0.0, 1.5);
Before_back(1.0, 1.0, 5.0, 5.5, -7.0, 0.0, 3);
Before_back(1.0, 1.0, 5.5, 7.0, -12.0, 0.0, 1.5);
Before_back(1.0, 1.0, 5.0, 5.5, -12.0, 0.0, 3);
glBindTexture(GL_TEXTURE_2D, texName[18]);
Up_down(1.0, 1.0, 5.0,7.0, -7.0, -12.0, 1.5);
Left_right(1.0, 1.0, 5.5, -7.0, -12.0,1.5, 3.0);
glPushMatrix();
glRotatef(90, 0.0, 0.0, 1.0);
glTranslated(-20,0, 0.0);
glBindTexture(GL_TEXTURE_2D, texName[19]);
Left_right(1.0, 1.0, 5.0, -7.0, -12.0, 0.0, 3.0);
Left_right(1.0, 1.0, 7.0, -7.0, -12.0, 0.0, 1.5);
Before_back(1.0, 1.0, 5.5, 7.0, -7.0, 0.0, 1.5);
Before_back(1.0, 1.0, 5.0, 5.5, -7.0, 0.0, 3);
Before_back(1.0, 1.0, 5.5, 7.0, -12.0, 0.0, 1.5);
Before_back(1.0, 1.0, 5.0, 5.5, -12.0, 0.0, 3);
glBindTexture(GL_TEXTURE_2D, texName[18]);
Up_down(1.0, 1.0, 5.0, 7.0, -7.0, -12.0, 1.5);
Left_right(1.0, 1.0, 5.5, -7.0, -12.0, 1.5, 3.0);
glPopMatrix();
glPushMatrix();
glRotatef(-90, 0.0, 0.0, 1.0);
glTranslated(-1, 19, 0.0);
glBindTexture(GL_TEXTURE_2D, texName[19]);
Left_right(1.0, 1.0, 5.0, -7.0, -12.0, 0.0, 3.0);
Left_right(1.0, 1.0, 7.0, -7.0, -12.0, 0.0, 1.5);
Before_back(1.0, 1.0, 5.5, 7.0, -7.0, 0.0, 1.5);
Before_back(1.0, 1.0, 5.0, 5.5, -7.0, 0.0, 3);
Before_back(1.0, 1.0, 5.5, 7.0, -12.0, 0.0, 1.5);
Before_back(1.0, 1.0, 5.0, 5.5, -12.0, 0.0, 3);
glBindTexture(GL_TEXTURE_2D, texName[18]);
Up_down(1.0, 1.0, 5.0, 7.0, -7.0, -12.0, 1.5);
Left_right(1.0, 1.0, 5.5, -7.0, -12.0, 1.5, 3.0);
glPopMatrix();
//--------------门口柜子----------------
glBindTexture(GL_TEXTURE_2D, texName[7]);
//前面
Left_right(2.0, 1.0, -12.0,20.0, 5.0, 0.0, 2.3);
Left_right(2.0, 1.0, -12.0, 20.0, 5.0, 7.7,10.0);
//四周
glBindTexture(GL_TEXTURE_2D, texName[9]);
Before_back(1.0, 1.0, -12.0, -10.0, 5.0, 0.0, 2.3);
//上面
Up_down(2.0, 1.0, -12.0, -10.0, 20.0,5.0, 2.3);
//四周
Before_back(1.0, 1.0, -12.0, -10.0, 5.0, 7.7,10.0);
//下面
Up_down(2.0, 1.0, -12.0, -10.0, 20.0, 5.0, 7.7);
//--------------左音响----------------
glBindTexture(GL_TEXTURE_2D, texName[3]);
//前面
Left_right(1.0, 1.0, 19.0, -3.5, -4.5, 0.0, 4.0);
//四周
glBindTexture(GL_TEXTURE_2D, texName[10]);
//左边
Before_back(1.0, 1.0, 19.0, 20.0, -3.5, 0.0, 4.0);
//右边
Before_back(1.0, 1.0, 19.0, 20.0, -4.5, 0.0, 4.0);
//上面
Up_down(1.0, 1.0, 19.0, 20.0, -3.5, -4.5, 4.0);
//--------------右音响---------------
glBindTexture(GL_TEXTURE_2D, texName[3]);
//前面
Left_right(1.0, 1.0, 19.0, -15.5, -16.5, 0.0, 4.0);
//四周
glBindTexture(GL_TEXTURE_2D, texName[10]);
//左边
Before_back(1.0, 1.0, 19.0, 20.0, -15.5, 0.0, 4.0);
//右边
Before_back(1.0, 1.0, 19.0, 20.0, -16.5, 0.0, 4.0);
//上面
Up_down(1.0, 1.0, 19.0, 20.0, -15.5, -16.5, 4.0);
//--------------餐桌------------------
glBindTexture(GL_TEXTURE_2D, texName[9]);
Up_down(2.0, 2.0, -15.0, -13.0, -13, -15, 2.0);
Up_down(2.0,2.0, -15.0, -13.0, -13, -15, 1.9);
Before_back(1.0, 1.0, -15.0, -13.0, -15.0, 1.9, 2.0);
Before_back(1.0, 1.0, -13.0, -13.0, -15.0, 1.9, 2.0);
Left_right(1.0, 1.0, -15.0, -13.0, -15.0, 1.9, 2.0);
Left_right(1.0, 1.0, -13.0, -13.0, -15.0, 1.9, 2.0);
//逆时针
//1
Before_back(1.0, 1.0, -14.8, -14.6, -14.8, 0.0, 2.0);
Before_back(1.0, 1.0, -14.8, -14.6, -14.6, 0.0, 2.0);
Left_right(1.0, 1.0, -14.6, -14.6, -14.8, 0.0, 2.0);
Left_right(1.0, 1.0, -14.8, -14.6, -14.8, 0.0, 2.0);
//2
Before_back(1.0, 1.0, -13.4, -13.2, -14.8, 0.0, 2.0);
Before_back(1.0, 1.0, -13.4, -13.2, -14.6, 0.0, 2.0);
Left_right(1.0, 1.0, -13.4, -14.6, -14.8, 0.0, 2.0);
Left_right(1.0, 1.0, -13.2, -14.6, -14.8, 0.0, 2.0);
//3
Before_back(1.0, 1.0, -13.4, -13.2, -13.3, 0.0, 2.0);
Before_back(1.0, 1.0, -13.4, -13.2, -13.2, 0.0, 2.0);
Left_right(1.0,1.0, -13.4, -13.4, -13.2, 0.0, 2.0);
Left_right(1.0, 1.0, -13.2, -13.4, -13.2, 0.0, 2.0);
//4
Before_back(1.0, 1.0, -14.8, -14.6, -13.3, 0.0, 2.0);
Before_back(1.0, 1.0, -14.6, -14.6, -13.2, 0.0, 2.0);
Left_right(1.0, 1.0, -14.6, -13.4, -13.2, 0.0, 2.0);
Left_right(1.0, 1.0, -14.8, -13.4, -13.2, 0.0, 2.0);
//------------------------椅子------------
Up_down(1.0, 1.0, -14.3, -13.7, -16.0, -15.4, 1.3);
Before_back(1.0, 1.0, -14.3, -13.7, -16.0, 0.0, 1.3);
Before_back(1.0, 1.0, -14.3, -13.7, -15.4, 0.0, 1.3);
Left_right(1.0, 1.0, -13.7, -16.0, -15.4, 0.0, 1.3);
Left_right(1.0, 1.0, -14.3, -16.0, -15.4, 0.0, 1.3);
Up_down(1.0, 1.0, -14.3, -13.7, -12.6, -12, 1.3);
Before_back(1.0, 1.0, -14.3, -13.7, -12.6, 0.0, 1.3);
Before_back(1.0, 1.0, -14.3, -13.7, -12, 0.0, 1.3);
Left_right(1.0, 1.0, -13.7, -12.6, -12, 0.0, 1.3);
Left_right(1.0, 1.0, -14.3, -12.6, -12, 0.0, 1.3);
Up_down(1.0, 1.0, -12.6, -12, -14.3, -13.7, 1.3);
Before_back(1.0, 1.0, -12.6, -12, -14.3, 0.0, 1.3);
Before_back(1.0, 1.0, -12.6, -12, -13.7, 0.0, 1.3);
Left_right(1.0, 1.0, -12.6, -14.3, -13.7, 0.0, 1.3);
Left_right(1.0, 1.0, -12.0, -14.3, -13.7, 0.0, 1.3);
Up_down(1.0, 1.0, -16.0, -15.4, -14.3, -13.7, 1.3);
Before_back(1.0, 1.0, -16.0, -15.4, -14.3, 0.0, 1.3);
Before_back(1.0, 1.0, -16.0, -15.4, -13.7, 0.0, 1.3);
Left_right(1.0, 1.0, -16.0, -14.3, -13.7, 0.0, 1.3);
Left_right(1.0, 1.0, -15.4, -14.3, -13.7, 0.0, 1.3);
//水族箱
Before_back(1.0, 1.0, -5.0, -3, -5, 0.0, 1.0);
Before_back(1.0, 1.0, -5.0,-3.0, -15, 0.0, 1.0);
Left_right(1.0, 1.0, -5.0, -5.0, -15.0, 0.0, 1.0);
Left_right(1.0, 1.0, -3.0, -5.0, -15.0, 0.0, 1.0);
glBindTexture(GL_TEXTURE_2D, texName[15]);
Before_back(1.0, 1.0, -5.0, -3.0, -5, 1.0, 5.0);
Before_back(1.0, 1.0, -5.0, -3.0, -15, 1.0, 5.0);
Left_right(1.0, 1.0, -5.0, -5.0, -15.0, 1.0, 5.0);
Left_right(1.0, 1.0, -3.0, -5.0, -15.0, 1.0, 5.0);
//全家福
glBindTexture(GL_TEXTURE_2D, texName[21]);
Before_back(1.0, 1.0, 3.0, 13.0, -0.01, 2.0, 8.0);//
Before_back(1.0, 1.0, 3.0, 13.0, -19.99, 2.0, 8.0);//
glBindTexture(GL_TEXTURE_2D, texName[22]);
Before_back(1.0, 1.0, 3.0, 13.0, 0.01, 2.0, 8.0);//
//-------------------------------------------------------卫生间--------------------------------------------------------
glBindTexture(GL_TEXTURE_2D, texName[1]);
Before_back(2.0, 1.0, -10.0, -3.0, 5.0, 0.0, 10.0);//卫生间墙
Left_right(2.0, 1.0, -10.0, 5.0, 20.0, 0.0, 10.0);//大门墙
glBindTexture(GL_TEXTURE_2D, texName[16]);
Up_down(1.0,1.0,-10.0,-3.0,20.0,15.0,1);//蹲坑
Before_back(1.0, 1.0, -10.0, -3.0, 15.0, 0.0, 1);//
glBindTexture(GL_TEXTURE_2D, texName[17]);
Up_down(1.0, 1.0, -8.0, -5.0, 19.0, 16.0, 1.001);//蹲坑
//----------------------------------------------------------房间-------------------------------------------------------
glBindTexture(GL_TEXTURE_2D, texName[1]);
//前边墙
Before_back(2.0, 1.0, -3.0, 20.0, 0.0, 0.0, 10.0);//
//左边墙
Left_right(2.0, 1.0, -3.0, 20.0, 0.0, 0.0, 10.0);//房门墙
//门
glBindTexture(GL_TEXTURE_2D, texName[11]);
Left_right(1.0, 1.0, -2.99, 1.0, 3.5, 0.0, 5.0);
Left_right(1.0, 1.0, -3.01, 1.0, 3.5, 0.0, 5.0);
//窗
glBindTexture(GL_TEXTURE_2D, texName[12]);
Before_back(1.0, 1.0, 0.0, 7.0, 19.99, 3.0, 7.0);
//婚纱照
glBindTexture(GL_TEXTURE_2D, texName[23]);
Before_back(1.0, 1.0, 14.0, 19.0, 19.99, 3.0, 7.0);
//-------床----------
glBindTexture(GL_TEXTURE_2D, texName[10]);
Before_back(1.0, 1.0, 13.0, 20.0, 19.3, 0.0, 2.5);
Left_right(1.0, 1.0, 13.0, 20.0, 19.3, 0.0, 2.5);
Up_down(1.0, 1.0, 13.0, 20.0, 20.0, 19.3, 2.5);
Up_down(1.0, 1.0, 13.0, 20.0, 20.0, 11.0, 1.0);
Left_right(1.0, 1.0, 13.0, 20.0,11.0, 0.0, 1.0);
Before_back(1.0, 1.0, 13.0, 20.0,11.0, 0.0, 1.0);
//被子
glBindTexture(GL_TEXTURE_2D, texName[13]);
Up_down(1.0, 1.0, 12.99, 20.0, 17.0, 11.0, 1.01);
Left_right(1.0, 1.0, 12.99,17.0, 11.0, 0.0, 1.01);
//枕头
glBindTexture(GL_TEXTURE_2D, texName[14]);
Before_back(1.0, 1.0, 17.0, 19.0, 18.0, 0.0, 1.5);
Left_right(1.0, 1.0, 17.0, 20.0, 18.0, 0.0,1.5);
Up_down(1.0, 1.0, 17.0, 19.0, 20.0, 18.0, 1.5);
Before_back(1.0, 1.0, 14.0, 16.0, 18.0, 0.0, 1.5);
Left_right(1.0, 1.0, 14.0, 20.0, 18.0, 0.0, 1.5);
Up_down(1.0, 1.0, 14.0, 16.0, 20.0, 18.0, 1.5);
//学习桌
glBindTexture(GL_TEXTURE_2D, texName[10]);
Up_down(1.0, 1.0,6.0,9.0,1.5, 0.0, 2.0);
Up_down(1.0, 1.0, 6.0, 9.0, 1.5, 0.0, 1.8);
Left_right(1.0, 1.0, 6.0, 1.5, 0.0, 0.0, 2);
Left_right(1.0, 1.0, 9.0, 1.5, 0.0, 0.0, 2);
Left_right(1.0, 1.0, 6.2, 1.5, 0.0, 0.0, 2);
Left_right(1.0, 1.0, 8.8, 1.5, 0.0, 0.0, 2);
Before_back(1.0, 1.0, 6.0, 6.2, 1.51, 0.0, 2.0);
Before_back(1.0, 1.0, 8.8, 9.0, 1.51, 0.0, 2.0);
Before_back(1.0, 1.0, 6.0, 9.0, 1.51, 1.8, 2.0);
Up_down(1.0, 1.0, 7.2, 8.3, 2.0, 2.8, 1);
Left_right(1.0, 1.0, 7.2, 2.0, 2.8, 0.0, 1);
Left_right(1.0, 1.0, 8.3, 2.0, 2.8, 0.0, 1);
Before_back(1.0, 1.0, 7.2, 8.3, 2.8, 0.0, 2.0);
Before_back(1.0, 1.0, 7.2, 8.3, 2.6, 0.0, 2.0);
Left_right(1.0, 1.0, 7.2, 2.6, 2.8, 0.0, 2);
Left_right(1.0, 1.0, 8.3, 2.6, 2.8, 0.0, 2);
Up_down(1.0, 1.0, 7.2, 8.3, 2.6, 2.8, 2);
if (snow) {
//雪花
glPushMatrix();
glRotated(90.0, 90.0, 0.0, 1.0);
drawScene();//绘制场景
glPopMatrix();//
glPushMatrix();
glTranslated(0, 20, 0);
glRotated(90.0, 90.0, 0.0, 1.0);
drawScene();//绘制场景
glPopMatrix();//
glPushMatrix();
glTranslated(0, -20, 0);
glRotated(90.0, 90.0, 0.0, 1.0);
drawScene();//绘制场景
glPopMatrix();//
glTranslated(0, 30, 0);
glRotated(90.0, 90.0, 0.0, 1.0);
drawScene();//绘制场景
glPopMatrix();//
}
glPopMatrix();//3
glPopMatrix();//2
glFlush();//用于强制刷新缓存
glutSwapBuffers();//交换双缓存
glutPostRedisplay();//标志下次刷新,没有的话,程序打开后不会刷新界面
}
七、程序运行结果
地月系
汽车移动:
大厅
餐桌
电视墙:
沙发:
水族箱
卫生间:
房间:
雪花:
八、课程心得体会
本次大作业运用了光照,粒子系统,模型等综合项目,模型中运用了大量的纹理贴图来充实这个场景的细节,在模型运动和视角转换的过程中运用了矩阵的转换来实现,具体了解了世界视角和视觉视角的矩阵转换,投影模型过程,对纹理和光照各个属性的设置来呈现不同的效果。此程序是基于地月系,然后房子各个细节的呈现,是综合性的小程序。通过本次大作业,能更好的运用opengl的函数绘制场景,更能了解到图形在计算机的程序的原理与运用,宏观的接触了图形学的领域。
九、特别部分
完整的工程包、资源包和论文报告将有偿提供,支持问题回答和配置电脑让工程跑起来,需要者可点击头部导航栏联系我
Zitao Cheng
2020-06-29 14:01:42
完整工程包怎么卖啊
庚哥哥
2020-06-29 14:25:07
qq321772514
xiaozidu
2020-08-20 09:22:56
联系qq怎么没有回复啊
xxx
2021-01-07 19:09:50
请问工程包怎么卖呀
geng
2021-05-16 13:57:35
qq458809674
庚哥哥
2021-05-18 13:26:30
首页有联系方式