一、开发环境说明
- 操作系统:windows
- 开发软件:Visual Studio 2017
- 编程语言:基于控制台下的opengl
- 用到的库: glut
opengl环境配置可参照上一篇博客:控制台+OPENGL配置说明[GLUT篇]
二、运行效果演示如下
三、内容介绍
- 绘制多关节动物、人物模型
- 有光照效果
- 有动画效果,各个关节可以运动
- 要求绘制的模型逼真、形象,层次建模;
- 鼠标键盘可以交互
四、模型展示
1、蚊子
- 运行结果截图
- 主要代码如下
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//清空颜色深度缓冲
glMatrixMode(GL_MODELVIEW);//模型矩阵
glLoadIdentity();//矩阵单位化
gluLookAt(0.0, 0.0, 15.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glPushMatrix();
glTranslatef(pos[0],pos[1],0);//平移
glPushMatrix();
glTranslatef(-100,150,-600);
wenzi();//第一只蚊子
glPopMatrix();
glPushMatrix();
glTranslatef(100,0,-500);//平移
wenzi();//第二只蚊子
glPopMatrix();
glPushMatrix();
glTranslatef(-200,0,-500);//平移
wenzi();//第三只蚊子
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
2、雪宝宝
- 运行结果截图
- 主要代码如下
void drawCat(float cx, float cy, float cz)//绘制雪宝宝
{
glPushMatrix();
glTranslatef(cx, cy, cz);
glRotatef(angle, 0.0, 1.0, 0.0);
drawMain();//头
glPushMatrix();
glRotatef(leftAngle, 0.0, 1.0, 0.0);
drawLeftHand();//左手
glPopMatrix();
glPushMatrix();
glRotatef(rightAngle, 0.0, 1.0, 0.0);
drawRightHand();//右手
glPopMatrix();
glPushMatrix();
glRotatef(leftAngle2, 1.0, 0.0, 0.0);
drawLeftLeg();//左腿
glPopMatrix();
glPushMatrix();
glRotatef(rightAngle2, 1.0, 0.0, 0.0);
drawRightLeg();//右腿
glPopMatrix();
glPopMatrix();
}
3、鱼
- 运行结果截图
- 主要代码如下
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//清空缓冲
glMatrixMode(GL_MODELVIEW);//模型矩阵
glLoadIdentity();
gluLookAt(-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);//视角矩阵
glScaled(0.7, 0.7, 0.7);//缩放
glTranslatef(0, 0, lineLocation);//平移
glRotatef(theta[13], 0.0, 1.0, 0.0);//旋转
fish();//绘制鱼
glutSwapBuffers();//交互缓存
}
4、蜘蛛
- 运行结果截图
- 主要代码如下
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);//模型矩阵
glLoadIdentity();//单位矩阵
gluLookAt(-1, 1, 1, 0, 0, 0, 0.0, 1.0, 0.0);//视角矩阵
glRotatef(theta[0], 0.0, 1.0, 0.0);//旋转
spider();//绘制蜘蛛
glutSwapBuffers();//交互缓存
}
5、小鸡
- 运行结果截图
- 主要代码如下
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 1.0, 0.0);//视角矩阵
glTranslatef(m_chickenPos[0], m_chickenPos[1], -100);//平移
glRotatef(theta[0], 1.0, 0.0, 0.0);//绕X轴旋转
glRotatef(theta[1], 0.0, 1.0, 0.0);//绕Y轴旋转
glRotatef(theta[2], 0.0, 0.0, 1.0);//绕Z轴旋转
chicken();//绘制小鸡函数
glutSwapBuffers();//交互前后缓存
}
6、机器人
- 运行结果截图
- 主要代码如下
void display(){
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);//模型矩阵
glLoadIdentity();//单位化
gluLookAt(0.2, 0.2, 0.4, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0);//视角矩阵
human();//绘制人
glutSwapBuffers();//交互前后缓存
}