【L51】计算机图形学:OpenGL 三维空间 三维房间、家具、房屋

2022-01-13 17:19:08      索炜达电子      614     

文件编号:L51

文件大小:7.1M

代码行数:2036行(主程序)

开发环境:VS2019、OpenGL

猿创承诺:该源码均通过亲自测试可正常运行

简要概述:计算机图形学实验,用OpenGL实现三维空间,绘制三维房间、家具、房屋建筑等。OpenGL实现三维空间、方向转换、按键交互、含源代码、执行文件。

实现图形场景等包括:房屋、草坪、小路、天空、教学楼、树木、围墙、灯光、纹理;包括多种交互场景。室内绘制丰富。

用到的OpenGL 函数

 glColor3f(blue); //设置颜色

 glutSolidCube(size);//绘制正方体

 glVertex3f(x, y, z);//设置点坐标

 glLightfv(a,b,c);  //设置光源      

 glTranslatef(x, y, z`)`;//平移函数

 glScalef(x, y, z); //放大/缩小函数

 glRotatef(angle, x, y, z);//绕轴旋转函数

 glutSolidSphere(radius, slices, stacks);//绘制球体

glBegin(图形类型) 与 glEnd(void)

在glBegin(arg)的参数部分选择要绘制的图形类型; 在glBegin()与glEnd()之间添加坐标点。比如绘制三角形,就选择glBegin()的参数为GL_TRIANGLES, glVertex3f(x, y, z)添加三角形三个顶点的坐标,末尾加上glEnd().这种代码绘制的图形一般是一个三维空间中的平面图形。

   glBegin(GL_TRIANGLES);

   glVertex3f(x1, y1, z1);

   glVertex3f(x2, y2, z2);

   glVertex3f(x3, y3, z3);

   glEnd();

glPushMatrix() 与 glPopMatrix()

在glPushMatrix() 与 glPopMatrix() 之间添加绘制基本平面图形,通过组合、平移、放大缩小就能轻易的实现复杂三维视图。

比如: 用glutSolidCube(1);绘制一个边长为一个单位的立方体,这个立方体的中心坐标为(t0, 0, 0);

进行平移、放大:

glPushMatrix();

glTranslatef(1, 2, 3)

glScalef(1,1,3);

glPopMatrix();

这样立方体的中心位置的坐标变成了(1,2,3),而且长宽高分别变成了1,1,3个单位长度。

按键交互:

1/2/3    灯光

4   书本

5/6    茶壶

7   老鼠

8   电视

9   机器人

0   椅子

o   开/关门

b   回到房间

a   左转

b   右转

方向键   前后左右移动

w   上移动

s   下移动

运行效果:

【L51】计算机图形学:OpenGL 三维空间 三维房间、家具、房屋

文件列表:

目录│文件列表:

 ├ 演示视频

 │  └ 演示视频.mp4

 └ 项目源码

    │ glut32.dll

    │ opengl.CPP

    │ OPENGL1.exe

    └ README.txt

TAG三维空间
  • 4 次
  • 400 分