计算机图形学与三维建模实验报告

合集下载

计算机图形学实验报告4

计算机图形学实验报告4

计算机图形学实验报告4一、实验目的本次计算机图形学实验旨在深入了解和掌握计算机图形学中的一些关键概念和技术,通过实际操作和编程实现,提高对图形生成、变换、渲染等方面的理解和应用能力。

二、实验环境本次实验使用的软件环境为_____,编程语言为_____,硬件环境为_____。

三、实验内容1、二维图形的绘制使用基本的绘图函数,如直线、矩形、圆形等,绘制简单的二维图形。

通过设置线条颜色、填充颜色等属性,增强图形的表现力。

2、图形的几何变换实现图形的平移、旋转和缩放操作。

观察不同变换参数对图形的影响。

3、三维图形的生成构建简单的三维模型,如立方体、球体等。

应用光照和材质效果,使三维图形更加逼真。

四、实验步骤1、二维图形的绘制首先,在编程环境中导入所需的图形库和相关模块。

然后,定义绘图窗口的大小和坐标范围。

接下来,使用绘图函数按照指定的坐标和参数绘制直线、矩形和圆形。

最后,设置图形的颜色和填充属性,使图形更加美观。

2、图形的几何变换对于平移操作,通过修改图形顶点的坐标值来实现水平和垂直方向的移动。

对于旋转操作,根据旋转角度计算新的顶点坐标,实现图形的绕中心点旋转。

对于缩放操作,将图形的顶点坐标乘以缩放因子,达到放大或缩小图形的效果。

3、三维图形的生成首先,定义三维模型的顶点坐标和三角形面的连接关系。

然后,设置光照的位置、颜色和强度等参数。

接着,为模型添加材质属性,如颜色、反射率等。

最后,使用渲染函数将三维模型显示在屏幕上。

五、实验结果与分析1、二维图形的绘制成功绘制出了各种简单的二维图形,并且通过颜色和填充的设置,使图形具有了更好的视觉效果。

例如,绘制的矩形和圆形边缘清晰,颜色鲜艳,填充均匀。

2、图形的几何变换平移、旋转和缩放操作都能够准确地实现,并且变换效果符合预期。

在旋转操作中,发现旋转角度的正负会影响旋转的方向,而缩放因子的大小直接决定了图形的缩放程度。

3、三维图形的生成生成的三维模型具有一定的立体感和真实感。

三维建模毕业实习报告

三维建模毕业实习报告

一、实习背景随着计算机技术的飞速发展,三维建模技术已经成为现代设计、影视制作、游戏开发等领域的重要工具。

为了提升自己的专业素养,增强实践能力,我选择了三维建模作为毕业实习的主题。

本次实习旨在通过实际操作,熟练掌握三维建模软件的使用方法,提高自己的设计水平和创新能力。

二、实习目的1. 掌握三维建模软件的基本操作,熟悉软件界面和功能。

2. 学会创建和修改三维模型,掌握建模技巧和技巧。

3. 了解三维场景搭建、材质贴图、灯光渲染等基本流程。

4. 培养自己的设计思维和创新能力,提高自己的审美水平。

三、实习内容1. 软件学习本次实习主要使用的是Autodesk 3ds Max软件,它是目前国际上最流行的三维建模和渲染软件之一。

在实习过程中,我学习了以下内容:(1)软件界面及功能:熟悉了3ds Max的界面布局、工具栏、菜单栏等基本元素,了解了软件的各项功能。

(2)基本建模技巧:学会了使用Box、Cylinder、Sphere等基本几何体创建模型,掌握了布尔运算、切割、放样等建模技巧。

(3)高级建模技巧:学习了NURBS曲面建模、多边形建模等高级建模技巧,提高了建模的灵活性和精确度。

2. 场景搭建在实习过程中,我搭建了以下场景:(1)室内场景:包括客厅、卧室、卫生间等,对家具、装饰品、灯光等进行了合理布局。

(2)室外场景:包括公园、街道、广场等,对植被、建筑物、道路等进行了真实还原。

3. 材质贴图为了使场景更加真实,我学习了材质贴图的使用方法,为场景中的物体添加了合适的材质和贴图,包括:(1)常用材质类型:学习并掌握了常用材质类型,如标准材质、混合材质、贴图材质等。

(2)贴图制作:学会了使用Photoshop等软件制作材质贴图,提高了材质的真实感。

4. 灯光渲染灯光是渲染场景的关键因素,我学习了以下内容:(1)灯光类型:了解了常用灯光类型,如点光源、聚光灯、泛光灯等。

(2)灯光设置:学会了设置灯光的位置、强度、颜色等参数,使场景的光照效果更加真实。

计算机图形学实验报告

计算机图形学实验报告

计算机图形学实验报告实验一 3D模型的加载、渲染与三维操作学院:专业班级:指导老师:学号:姓名:完成日期:目录一、实验目的 (3)二、使用的工具软件及环境 (3)三、实验内容 (3)四、实验步骤 (3)五、思考 (12)一、实验目的1、掌握在Microsoft Visual Studio环境中使用OpenGL、GLUT 和GLUI;2、了解计算机图形学固定流水线;3、了解OpenGL编程基础;4、掌握三维观察的数学表达和程序实现;5、掌握多边形网格的绘制;二、使用的工具软件及环境Microsoft Visual Studio 2010、OpenGL、Glut、Glui三、实验内容1、在VS 2010中配置OpenGL环境;2、编译简单的GLUT程序;3、编译GLUI源代码,并在调试模式下执行6个示例程序;4、在给定的工程中添加绘制简单几何体的代码;5、在给定的工程中添加读取、绘制三维模型的代码;6、在给定的工程中添加旋转、平移和缩放的控制代码;四、实验步骤1、安装Microsoft Visual Studio软件版本选择:Microsoft Visual Studio 2010以上版本2、VS2010中配置GLUT1)下载GLUT。

Windows环境下的GLUT下载地址:/resources/libraries/glut/glutdlls37be ta.zip2)将下载的压缩包解开,将得到5个文件:glut.h、glut.lib、glut32.lib、glut.dll、glut32.dll。

3)将glut.h放到"%WinDir%\ProgramFiles(x86)\Microsoft SDKs\Windows\v7.0A\Include\gl\"文件夹中。

4)将glut.lib和glut32.lib放到"%WinDir%\ProgramFiles(x86)\Microsoft Visual Studio 10.0\VC\lib\"文件夹中。

三维建模实习总结报告

三维建模实习总结报告

一、实习背景随着计算机技术的飞速发展,三维建模技术在各个领域中的应用越来越广泛。

为了提高自己的专业技能,培养实际操作能力,我于XX年XX月参加了三维建模实习。

本次实习旨在通过实践操作,掌握三维建模软件的基本使用方法,提高自己的三维建模能力。

二、实习目的1. 熟练掌握三维建模软件(如3ds Max、Maya等)的基本操作;2. 了解三维建模的基本流程,包括建模、材质贴图、灯光设置、渲染等;3. 培养创新思维,提高解决实际问题的能力;4. 提升团队协作能力,学会与他人共同完成项目。

三、实习内容1. 三维建模软件的学习:在实习过程中,我学习了3ds Max和Maya两种三维建模软件的基本操作。

通过自学和老师指导,掌握了软件界面、工具栏、菜单栏等基本功能,并能够独立完成简单的三维建模任务。

2. 建模实践:实习期间,我参与了多个建模项目,包括室内外景观、工业产品、角色动画等。

通过实践,我了解了建模的基本流程,掌握了建模技巧,提高了自己的建模能力。

3. 材质贴图与灯光设置:在建模的基础上,我学习了如何为模型添加材质和贴图,以及如何设置灯光和摄像机。

通过这些操作,可以使模型更加真实、美观。

4. 渲染与后期处理:实习期间,我学习了渲染的基本知识,并尝试了多种渲染设置。

此外,我还学习了后期处理技巧,如色彩校正、图像合成等,使作品更具艺术效果。

四、实习收获1. 技术能力提升:通过实习,我掌握了三维建模软件的基本操作,提高了自己的建模、材质贴图、灯光设置、渲染等技能。

2. 创新思维培养:在实习过程中,我遇到了许多实际问题,通过不断尝试和解决,培养了创新思维,提高了解决问题的能力。

3. 团队协作能力:实习期间,我与团队成员共同完成了多个项目,学会了与他人沟通、协作,提高了自己的团队协作能力。

4. 实践经验积累:实习让我将所学知识运用到实际工作中,积累了宝贵的实践经验,为今后的工作打下了坚实基础。

五、实习体会1. 学习的重要性:实习让我深刻认识到学习的重要性,只有不断学习,才能跟上时代的发展。

计算机图形学实习报告

计算机图形学实习报告

实习报告实习名称:计算机图形学实习班级:学号:姓名:实习地点:实习指导教师:实习时间:年月日至月日一、实习目的与意义本次计算机图形学的实习分两部分,一部分是利用AutoCAD进行二维和三维模型的制作,另一部分是利用VC6.0进行编程实现对图形的简单操作。

通过对AutoCAD的实习,熟悉该软件的基本功能及操作特点,掌握二维及三维图形的基本制作过程。

通过对VC6.0的编程实习,理解图形的生成、图形的变换、图形的显示以及二维裁剪的基本思想,熟练掌握计算机图形学的基本原理和方法;熟练掌握计算机图形学算法的实现算法;学习和掌握图形系统的设计;学习用VC++编写计算机图形学程序;建立面向对象编程的基本概念。

二、实习主要内容1、AutoCAD软件操作(1)简单图形绘制(2)图形的基本编辑命令操作(3)标注文字及填充(4)三维图形绘制2.基于VC6.0下的计算机图形学程序编写(1)图形的生成:画直线、画圆、画曲线、画字符(2)图形的变换:平移、旋转、缩放、对称变换(3)图形的显示:扫描线填充、边缘填充、种子填充(4)图形的二维裁剪:CS裁剪、多边形裁剪、梁友栋裁剪、圆裁剪、中点分割法三、实习的主要过程第一部分 AutoCAD软件操作AutoCAD软件可以处理很多问题,在机械制图,土木建筑等方面有着广泛的应用,我们在机房打开AutoCAD软件对其进行系统配置,然后进行具体操作。

通过配置可以实现工具栏之类的快捷运用。

(1)简单图形绘制实习开始的第一天,在老师的讲解以及演示下,我们了解了AutoCAD软件的基本使用方法,与此同时,我们跟着老师的操作也逐渐熟悉了该软件的一些基本操作方法。

从设置基本绘图环境开始,按照指导书上的指示,采用边完成简单图形边学习各种命令的方式,逐渐熟练掌握了AutoCAD的使用,熟练掌握了其基本绘图功能,如掌握了绘图命令POINT、LINE、CIRCLE、ARC、DONUT、RECTANGLE、POLYLINE的功能及操作;掌握了实体绘图命令键盘输入的方法;掌握了缩放命令(ZOOM)的使用方法等。

图形学实验报告三维图形

图形学实验报告三维图形

图形学课程设计题目:三维真实感图形设计与绘制专业:计算机科学与技术学号姓名:一.一)课程设计目的与要求图形学课程设计的主要目的是让同学们通过图形学的实际问题应用,进一步增强计算机图形学理论的理解、算法应用、图形数据结构设计与图形程序设计等,从而提高图形学实际应用与软件开发能力。

二)课程设计题目三维真实感图形设计与绘制三)问题的提出与需求分析(1)题目内容说明:本题目要求应用OpenGL的光照技术和纹理技术实现一个简单的三维真实感图形的程序设计。

具体要求实现功能:1)通过对话方式实现交互式设计光照模型功能。

2)实现三维模型纹理映射功能。

3)用鼠标跟踪球方法实现三维模型的空间旋转。

(2)技术要点说明1)三维模型显示场景树:将三维可视化模型场景内容分解用一种树或表数据结构描述。

2)实现一个读Targa文件的程序:Targa是一种常见的图像格式文件,该文件通常以未压缩的格式存储图像。

3)实现鼠标跟踪球方法程序。

二.设计思路要设计一个良好的场景和优秀的交互方式,现在虚拟现实场景十分繁多,各种交互方式也五花八门,我们要选择特定的场景,场景要保证两点:一是其新鲜性,让人耳目一新,否则会让人有过于老套的感觉;另外就是其真实度,这是本次课题的着重关注点;在选取选定的场景后,我们要定义各交互方式,在从现有可得到的交互方式案例中提取和创新,以保证开发出来的交互方式可以最大程度的提高人机交互的效率。

场景的规模是必须考虑的,因为设计的时间和人员有限,必须限制场景规模,没有时间和人力去开发过大的场景规模,但是如果场景规模过小,演示系统就无法给人带来非常强烈的真实感冲击,而且过小规模的场景也会限制交互方式的设计和开发;所以定义适当的场景规模,对于课题的成败十分重要。

通过对计算机图形学和三维人机交互方式等相关书籍和文献的阅读和学习,了解和掌握建立真实图形显示系统的过程和三维虚拟场景中人机交互的方式。

三维图形及动画场景的显示,就是把所建立的三维空间模型,经过计算机的复杂处理,最终在计算机二维屏幕上显示的过程,并且在显示的过程要保证其真实感。

计算机图形学实验报告

计算机图形学实验报告

计算机图形学实验报告
在计算机图形学课程中,实验是不可或缺的一部分。

通过实验,我们可以更好地理解课程中所学的知识,并且在实践中掌握这些
知识。

在本次实验中,我学习了如何使用OpenGL绘制三维图形,并了解了一些基本的图形变换和视图变换。

首先,我们需要通过OpenGL的基本命令来绘制基本图形,例
如线段、矩形、圆等。

这些基本的绘制命令需要首先设置OpenGL 的状态,例如绘制颜色、线段宽度等,才能正确地绘制出所需的
图形。

然后,在实验中我们学习了图形的变换。

变换是指通过一定的
规则将图形的形状、位置、大小等进行改变。

我们可以通过平移、旋转、缩放等变换来改变图形。

变换需要按照一定的顺序进行,
例如先进行旋转再进行平移等。

在OpenGL中,我们可以通过设
置变换矩阵来完成图形的变换。

变换矩阵包含了平移、旋转、缩
放等信息,通过矩阵乘法可以完成图形的复合变换。

最后,视图变换是指将三维场景中的图形投影到二维平面上,
成为我们所见到的图形。

在实验中,我们学习了透视投影和正交
投影两种方式。

透视投影是指将场景中的图形按照视点不同而产
生不同的远近缩放,使得图形呈现出三维感。

而正交投影则是简单地将场景中的图形按照平行投影的方式呈现在屏幕上。

在OpenGL中,我们可以通过设置视图矩阵和投影矩阵来完成视图变换。

通过本次实验,我对于计算机图形学有了更深入的了解,并掌握了一些基本的图形绘制和变换知识。

在今后的学习中,我将继续学习更高级的图形绘制技术,并应用于实际的项目中。

计算机图形学与三维建模实验报告

计算机图形学与三维建模实验报告

计算机图形学与三维建模实验报告计算机图形学实验报告openGL的基本使用1.项目代码:// 2321321.cpp : 定义控制台应用程序的入口点。

#include"stdafx.h"#include<iostream>#include<stdio.h>#include<gl/glut.h>#include<gl/glu.h>#include<gl/gl.h>using namespace std;//#include"vgl.h" opengl4.3 编程宝典第8版库函数//#include"loadshaders.h"GLfloat x=0.0,y=0.0,z=0.0;//用于平移的变量GLfloat i=1.0,j=1.0,k=1.0;//用于缩放的变量int d=1;//用于是否判断旋转的开关GLfloat angle=0.0f;//旋转角度的变量void myDisplay(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// 创建透视效果视图glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(90.0f, 1.0f, 1.0f, 20.0f);glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt(0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// 定义4光源,从4个方向入射,第一个是白光,其他为红绿蓝{GLfloat sun_light_position[] = { -5.0f, 5.0f, 0.0f, 1.0f };GLfloat sun_light_position1[] = { 5.0f, 5.0f, 0.0f, 1.0f };GLfloat sun_light_position2[] = { -5.0f, -5.0f, 0.0f, 1.0f };GLfloat sun_light_position3[] = { 5.0f, -5.0f, 0.0f, 1.0f };GLfloat sun_light_ambient[] = { 0.0f, 0.0f, 0.0f,1.0f };GLfloat sun_light_diffuse[] = { 1.0f, 1.0f, 1.0f,1.0f };GLfloat sun_light_diffuse1[] = { 1.0f, 0.0f, 0.0f, 1.0f };GLfloat sun_light_diffuse2[] = { 0.0f, 1.0f, 0.0f, 1.0f };GLfloat sun_light_diffuse3[] = { 0.0f, 0.0f, 1.0f, 1.0f };GLfloat sun_light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };glLightfv(GL_LIGHT0, GL_POSITION,sun_light_position);glLightfv(GL_LIGHT0, GL_AMBIENT, sun_light_ambient);glLightfv(GL_LIGHT0, GL_DIFFUSE, sun_light_diffuse);glLightfv(GL_LIGHT0, GL_SPECULAR,sun_light_specular);glLightfv(GL_LIGHT1, GL_POSITION,sun_light_position1);glLightfv(GL_LIGHT1, GL_AMBIENT, sun_light_ambient);glLightfv(GL_LIGHT1, GL_DIFFUSE, sun_light_diffuse1);glLightfv(GL_LIGHT1, GL_SPECULAR,sun_light_specular);glLightfv(GL_LIGHT2, GL_POSITION, sun_light_position2);glLightfv(GL_LIGHT2, GL_AMBIENT, sun_light_ambient);glLightfv(GL_LIGHT2, GL_DIFFUSE, sun_light_diffuse2);glLightfv(GL_LIGHT2, GL_SPECULAR,sun_light_specular);glLightfv(GL_LIGHT3, GL_POSITION, sun_light_position3);glLightfv(GL_LIGHT3, GL_AMBIENT, sun_light_ambient);glLightfv(GL_LIGHT3, GL_DIFFUSE, sun_light_diffuse3);glLightfv(GL_LIGHT3, GL_SPECULAR,sun_light_specular);glEnable(GL_LIGHT0);glEnable(GL_LIGHT1);glEnable(GL_LIGHT2);glEnable(GL_LIGHT3);glEnable(GL_LIGHTING);glEnable(GL_DEPTH_TEST);}//绘制坐标轴{glBegin(GL_LINE);//x轴红色glColor3f(1,0,0);glVertex3f(10,0,0);glVertex3f(-10,0,0);//y轴绿色glColor3f(0,1,0);glVertex3f(0,10,0);glVertex3f(0,-10,0);//z轴蓝色glColor3f(0,0,1);glVertex3f(0,0,10);glVertex3f(0,0,-10);glEnd();}// 定义球体的材质并绘制{GLfloat ambient[] = { 0.2f, 0.2f, 0.2f, 1.0f };//环境颜色GLfloat diffuse[] = { 0.7f, 0.7f, 0.7f, 1.0f };//散射GLfloat specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };//镜面反射GLfloat emission[] = { 0.0f, 0.0f, 0.0f, 0.5f };//发射光颜色GLfloat hininess = 50.0f; //反射指数glMaterialfv(GL_FRONT, GL_AMBIENT, ambient);glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse);glMaterialfv(GL_FRONT, GL_SPECULAR, specular);glMaterialfv(GL_FRONT, GL_EMISSION, emission);glMaterialf(GL_FRONT, GL_SHININESS, shininess);glTranslatef(x,y,z);glScalef(i,j,k);if(d==1){glRotatef(angle,0.0f,0.0f,4.0f);glTranslatef(2.5f,2.5f,0.0f);}glutSolidSphere(2.0, 60.0, 60.0);}glutSwapBuffers();}void ChangeSize(GLsizei W,GLsizei H)//当视口改变时改变裁剪部分保证图形观察时不形变{GLfloat aspectRatio;if(H==0)H=1;glViewport(0,0,W,H);//视口设置glMatrixMode(GL_PROJECTION);//重置坐标系统glLoadIdentity();aspectRatio=(GLfloat)W/(GLfloat)H;if(aspectRatio<=1)//裁剪部分设置glOrtho(-2.5,2.5,-2.5/aspectRatio,2.5/aspectRatio,2.5,-2.5);elseglOrtho(-2.5*aspectRatio,2.5*aspectRatio,-2.5,2.5,2.5,-2.5);glMatrixMode(GL_MODELVIEW);glLoadIdentity();}void ProcessKeys(unsigned char ch,int a,int b){if(ch==119)//w{y+=0.1;glutPostRedisplay();}else if(ch==115)//s{y-=0.1;glutPostRedisplay();}else if(ch==97)//a{x-=0.1;glutPostRedisplay();}else if(ch==100)//d{x+=0.1;glutPostRedisplay();}else if(ch==120)//x{z-=0.1;}else if(ch==122)//z{z+=0.1;glutPostRedisplay();}else if(ch==43)//+{i+=0.1;j+=0.1;k+=0.1;glutPostRedisplay(); }else if(ch==45)//-{i-=0.1;j-=0.1;k-=0.1;}else if(ch==32)//空格键{if(d==0)d=1;else d=0;cout<<d<<endl;}//按空格开关旋转}void IdleFunc(){if(d==1){angle+=1.0f;if(angle==360.0f){angle=0.0f;}cout<<angle<<endl;myDisplay();}}int _tmain(int argc, char* argv[]){glutInit(&argc, (char**) argv);glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); glutInitWindowPosition(100,100);glutInitWindowSize(500,500);glutCreateWindow("Hello OpenGL");glutDisplayFunc(myDisplay);glutReshapeFunc(ChangeSize);glutIdleFunc(IdleFunc);glutKeyboardFunc(ProcessKeys);glutReshapeFunc(ChangeSize);glutMainLoop();return 0;}二.系统总体布局系统流程图:本系统是常规的openGL系统,初始化后先设置视角、投影、光照、材质等因素,绘制基本的图形,再通过函数判断键盘输入进行重复绘制,完成基本的平移,缩放,旋转等操作三.系统设计思路在系统设计最初,本来想直接使用默认视角后直接设置光照和平移旋转等功能,但是发现在默认视角下对物体,特别是正方体的三维效果无法很好地观察,因此采用侧视视角然后在对材质的定义上,由于立方体设置比较麻烦,最后决定画一个球体,然后在平移旋转缩放等功能的演示上,直接演示过于简单,就是一个函数的执行,因此决定采取利用键盘控制移动和缩放及旋转的方式。

计算机图形学实验报告

计算机图形学实验报告

计算机图形学实验报告
实验目的:通过本次实验,深入了解并掌握计算机图形学的基本原理和相关技术,培养对图形处理的理解和能力。

实验内容:
1. 图像的基本属性
- 图像的本质及表示方法
- 像素和分辨率的概念
- 灰度图像和彩色图像的区别
2. 图像的处理技术
- 图像的采集和处理
- 图像的变换和增强
- 图像的压缩和存储
3. 计算机图形学的应用
- 图像处理在生活中的应用
- 计算机辅助设计中的图形学应用
- 三维建模和渲染技术
实验步骤和结果:
1. 在计算机图形学实验平台上加载一张测试图像,分析其像素构成
和基本属性。

2. 运用图像处理技术,对测试图像进行模糊、锐化、色彩调整等操作,观察处理后的效果并记录。

3. 学习并掌握计算机图形学中常用的处理算法,如卷积、滤波等,
尝试应用到测试图像上并进行实验验证。

4. 探讨计算机图形学在数字媒体制作、虚拟现实、计算机辅助设计
等领域的应用案例,并总结其在实践中的重要性和价值。

结论:
通过本次实验,我对计算机图形学有了更深入的了解,掌握了图像
处理技术的基本原理和应用方法。

计算机图形学作为一门重要的学科,对多个领域有着广泛的应用前景,有助于提高数字媒体技术、虚拟现
实技术等领域的发展水平。

希望在未来的学习和工作中能进一步深化
对计算机图形学理论和实践的研究,不断提升自己在这一领域的专业
能力和创新意识。

三维设计实习报告(3篇)

三维设计实习报告(3篇)

三维设计实习报告(3篇)三维设计实习报告(通用3篇)三维设计实习报告篇1一、实习目的:由于计算机技术的高速发展,三维建模与三维动画制作在广告设计与制作等领域的作用的影响越来越大。

《三维动画制作》课程是网络技术专业的一门扩展能力的课程。

该课程的实习,应该强调动手能力和实战能力。

因此,本次实习将从实战入手,让学生深入掌握三维动画制作软件3D MA_的三维建模、设置材质与贴图、设置灯光与摄像机以及三维动画设计等方法与技术。

二、实习内容:1、三维建模部分(1)室内效果设计(2)甜美三维生日蛋糕3DsMA_制作的生日蛋糕场景中,蛋糕盘上放置着甜美的蛋糕,蛋糕体上插放着摇曳的烛光和可爱的小樱桃。

2、三维动画设计(1)转动的地球仪美丽的地球在支撑杆的怀抱中匀速的转动。

(2)影视片头字幕浮出海面的金属立体字特效。

三、实习过程:1、室内效果设计从房间的顶部开始建造,即建造天花板―― 主墙体的创建―― 门窗的设置―― 地面的制作―― 各种边角的修饰―― 室内物品的建造―― 室内布局。

2、制作地球仪先创建地球仪模型,即创建地球――圆环造型――地球仪的旋转轴和底座――支座――设置材质;最后制作动画。

3、制作生日蛋糕创建蛋糕模型――制作蛋糕的材质――创建蜡烛。

4、制作影视片头字幕场景为白云朵朵的蓝天和波浪涌动的海面,海面使用了光线跟踪贴图材质,具备镜面反射功能;波浪用波浪命令制作,通过修改相位值实现涌动的效果。

四、实习总结:通过本次实习,我发现自己的动手操作能力有很大的提高。

我明白我们这些技术性很强的专业更应该把理论用到实践这来,才能使自己学到真实的技术,才能使理论于实践更趋于完美化。

正是这次实习,我发现自己还有很多缺陷,例如:对于灯光的设置和地球的旋转,没有做出良好的效果。

当然,我每做出一部自己满意的作品,心里的自豪不言而喻。

我最终明白了,学习是一个相互交流的过程。

五、对实习的建议:为了实习的顺利进行,老师们的功劳不言而喻,同学之间的关怀铭记于心。

三维建模技术实习报告

三维建模技术实习报告

实习报告一、实习目的与背景随着科技的飞速发展,三维建模技术在各个领域中的应用越来越广泛,如游戏制作、电影特效、建筑设计等。

为了提高自己的实践能力和理论知识的应用能力,我选择了三维建模技术实习,希望通过实习深入了解并掌握三维建模技术的基本原理和实际操作方法。

二、实习内容本次实习主要涉及以下内容:1. 三维建模基础:学习三维建模软件(如3ds Max、Maya等)的基本操作,包括创建和编辑几何体、设置材质和贴图、布置灯光和摄像机等。

2. 模型制作:通过实践项目,学习制作不同类型的三维模型,如人物、动物、场景等,并掌握模型的拓扑结构和细节处理。

3. 动画制作:学习制作简单的关键帧动画和动力学动画,了解动画的基本原理和制作流程。

4. 光照与渲染:学习调整场景的光照效果,掌握渲染的基本设置和技巧,提高模型的真实感。

5. 后期处理:学习使用后期软件(如Photoshop、After Effects等)对渲染图像进行调整和处理,提高作品的质量。

三、实习过程1. 学习阶段:在实习初期,我主要通过观看教程视频、阅读教材和参加培训课程来学习三维建模的基本知识和操作技巧。

在这个过程中,我初步了解了三维建模软件的功能和应用领域。

2. 实践阶段:在掌握了一定的理论基础后,我开始参与实践项目。

通过实际操作,我发现理论知识与实践操作之间存在一定的差距,但在不断尝试和解决问题的过程中,我逐渐提高了自己的实际操作能力。

3. 项目阶段:在实习的最后阶段,我参与了一个小组项目,与团队成员共同完成一个复杂的三维建模作品。

在这个过程中,我学会了与他人协作、沟通和分工合作,提高了自己的团队协作能力。

四、实习收获通过本次实习,我收获颇丰。

首先,我掌握了三维建模软件的基本操作,能够独立完成一些简单的三维模型制作和动画制作。

其次,我了解了三维建模技术在各个领域的应用,为以后的学习和职业发展奠定了基础。

最后,我学会了与他人协作,提高了自己的团队协作能力和沟通技巧。

计算机图形学实验报告

计算机图形学实验报告

实验结果与结论
• 在本次实验中,我们成功地实现了复杂场景的渲染,得到了具有较高真实感和视觉效果的图像。通过对比 实验前后的效果,我们发现光线追踪和着色器的运用对于提高渲染质量和效率具有重要作用。同时,我们 也发现场景图的构建和渲染脚本的编写对于实现复杂场景的渲染至关重要。此次实验不仅提高了我们对计 算机图形学原理的理解和实践能力,也为我们后续深入研究渲染引擎的实现提供了宝贵经验。
2. 通过属性设置和变换操作,实现了对图形的定 制和调整,加深了对图形属性的理解。
4. 实验的不足之处:由于时间限制,实验只涉及 了基本图形的绘制和变换,未涉及更复杂的图形 处理算法和技术,如光照、纹理映射等。需要在 后续实验中进一步学习和探索。
02
实验二:实现动画效果
实验目的
掌握动画的基本原 理和实现方法
04
实验四:渲染复杂场景
实验目的
掌握渲染复杂场景的基本流程和方法 理解光线追踪和着色器在渲染过程中的作用
熟悉渲染引擎的实现原理和技巧 提高解决实际问题的能力
实验步骤
• 准备场景文件 • 使用3D建模软件(如Blender)创建或导入场景模型,导出为常用的3D格式(如.obj或.fbx)。 • 导入场景文件 • 在渲染引擎(如Unity或Unreal Engine)中导入准备好的场景文件。 • 构建场景图 • 根据场景的层次结构和光照需求,构建场景图(Scene Graph)。 • 设置光照和材质属性 • 为场景中的物体设置光照和材质属性(如漫反射、镜面反射、透明度等)。 • 编写渲染脚本 • 使用编程语言(如C或JavaScript)编写渲染脚本,控制场景中物体的渲染顺序和逻辑。 • 运行渲染程序 • 运行渲染程序,观察渲染结果。根据效果调整光照、材质和渲染逻辑。 • 导出渲染图像 • 将渲染结果导出为图像文件(如JPEG或PNG),进行后续分析和展示。

三维建模实习报告结果

三维建模实习报告结果

实习报告:三维建模实习总结一、实习目的与背景随着现代科技的发展,三维建模技术在各个领域中得到了广泛的应用。

为了让学生更好地将理论知识与实际操作相结合,提高实际工作能力,我参加了三维建模实习。

本次实习的主要目的是通过实际操作,深入了解三维建模的基本原理和方法,掌握三维建模软件的操作技巧,培养创新思维和实际解决问题的能力。

二、实习内容与过程1. 实习内容(1)三维建模基础:学习三维建模的基本概念、原理和操作方法,熟练使用三维建模软件。

(2)三维模型构建:通过实际项目,练习三维模型的构建,包括几何体的创建、编辑和组合。

(3)材质与贴图:学习三维模型的材质设置、纹理贴图,提高模型的真实感。

(4)灯光与摄像机:掌握灯光的设置方法,学会使用摄像机捕捉最佳视角。

(5)动画设计:学习三维动画的设计原理,练习制作简单的动画效果。

2. 实习过程(1)三维建模基础学习:在实习初期,我们学习了三维建模的基本概念、原理和操作方法,掌握了三维建模软件的操作界面和工具栏。

(2)三维模型构建:在实习过程中,我们参与了实际项目,通过练习几何体的创建、编辑和组合,提高了三维建模能力。

(3)材质与贴图:学习了三维模型的材质设置、纹理贴图的方法,使模型具有更真实的效果。

(4)灯光与摄像机:掌握了灯光的设置技巧,学会了使用摄像机捕捉最佳视角,使场景更具视觉效果。

(5)动画设计:学习了三维动画的设计原理,练习制作简单的动画效果,如旋转、缩放等。

三、实习成果与收获通过本次实习,我取得了以下成果和收获:1. 掌握了三维建模软件的操作方法和技巧,能够熟练地构建三维模型。

2. 学会了材质设置、纹理贴图,使模型具有更真实的效果。

3. 掌握了灯光的设置方法,能够使用摄像机捕捉最佳视角。

4. 学习了三维动画的设计原理,能够制作简单的动画效果。

5. 培养了创新思维和实际解决问题的能力,为以后从事相关工作打下了基础。

四、实习总结通过本次三维建模实习,我对三维建模技术有了更深入的了解,提高了实际操作能力。

3dmax建模实验报告

3dmax建模实验报告

3dmax建模实验报告3D Max建模实验报告引言在当今科技发展迅猛的时代,计算机图形学和三维建模技术已经成为了不可或缺的一部分。

而3D Max作为一种强大的三维建模软件,广泛应用于电影、游戏、建筑设计等领域。

本文将通过实验报告的形式,介绍3D Max建模的基本原理和实践操作,以及实验过程中的一些心得体会。

一、实验目的本次实验的主要目的是通过使用3D Max软件进行建模实践,掌握基本的建模技巧和操作方法,以及了解建模过程中的一些注意事项。

二、实验过程1. 熟悉软件界面在开始实验之前,首先需要熟悉3D Max软件的界面和基本操作。

了解软件的各个面板和工具栏的功能,以及快捷键的使用方法,对于后续的实验操作非常重要。

2. 创建基本几何体在3D Max中,我们可以通过创建基本几何体来构建模型。

在实验过程中,我选择了创建一个简单的立方体作为实践对象。

通过选择合适的工具,我成功地创建了一个立方体,并对其进行了一些基本的编辑和变换,如缩放、旋转等。

3. 使用修改器3D Max提供了丰富的修改器,可以对模型进行更加复杂的编辑和变换。

在实验中,我尝试了使用修改器来对立方体进行一些特殊效果的添加。

例如,我使用了“布尔”修改器来给立方体添加一个窗户的洞口,并使用“扭曲”修改器来对立方体进行形变。

4. 材质和纹理的应用为了使模型更加真实和具有质感,我们需要为其添加材质和纹理。

在实验中,我学习了如何在3D Max中应用材质和纹理,并尝试了一些基本的效果。

通过选择合适的材质和纹理,并调整其属性和参数,我成功地给立方体添加了一些颜色和纹理效果。

5. 光照和渲染光照和渲染是模型呈现真实感的重要因素。

在实验中,我学习了如何在3D Max 中设置光源,并进行渲染。

通过调整光源的位置、强度和颜色等参数,我成功地为模型添加了适当的光照效果,并进行了渲染输出。

三、实验结果与讨论通过以上的实验操作,我成功地创建了一个简单的立方体模型,并对其进行了编辑、变换、材质和纹理的应用,以及光照和渲染的设置。

计算机图形学实验报告

计算机图形学实验报告

计算机图形学实验报告计算机图形学实验报告引言计算机图形学是研究计算机生成和处理图像的学科,它在现代科技和娱乐产业中扮演着重要的角色。

本实验报告旨在总结和分享我在计算机图形学实验中的经验和收获。

一、实验背景计算机图形学实验是计算机科学与技术专业的一门重要课程,通过实践操作和编程,学生可以深入了解图形学的基本原理和算法。

本次实验主要涉及三维图形的建模、渲染和动画。

二、实验内容1. 三维图形建模在实验中,我们学习了三维图形的表示和建模方法。

通过使用OpenGL或其他图形库,我们可以创建基本的几何体,如立方体、球体和圆柱体,并进行变换操作,如平移、旋转和缩放。

这些基本操作为后续的图形处理和渲染打下了基础。

2. 光照和着色光照和着色是图形学中重要的概念。

我们学习了不同的光照模型,如环境光、漫反射和镜面反射,并了解了如何在三维场景中模拟光照效果。

通过设置材质属性和光源参数,我们可以实现逼真的光照效果,使物体看起来更加真实。

3. 纹理映射纹理映射是一种将二维图像映射到三维物体表面的技术。

通过将纹理图像与物体的顶点坐标相对应,我们可以实现更加细致的渲染效果。

在实验中,我们学习了纹理坐标的计算和纹理映射的应用,使物体表面呈现出具有纹理和细节的效果。

4. 动画和交互动画和交互是计算机图形学的重要应用领域。

在实验中,我们学习了基本的动画原理和算法,如关键帧动画和插值技术。

通过设置动画参数和交互控制,我们可以实现物体的平滑移动和变形效果,提升用户体验。

三、实验过程在实验过程中,我们首先熟悉了图形库的使用和基本的编程技巧。

然后,我们按照实验指导书的要求,逐步完成了三维图形建模、光照和着色、纹理映射以及动画和交互等任务。

在实验过程中,我们遇到了许多挑战和问题,但通过不断的尝试和调试,最终成功实现了预期的效果。

四、实验结果通过实验,我们成功实现了三维图形的建模、渲染和动画效果。

我们可以通过键盘和鼠标控制物体的移动和变形,同时观察到真实的光照效果和纹理映射效果。

三维建模实训报告范文

三维建模实训报告范文

三维建模实训报告范文一、实训背景三维建模是计算机图形学中的一种技术,通过计算机将现实世界的物体或场景构建成为虚拟的三维模型。

三维建模技术广泛应用于游戏开发、影视制作、工业设计等领域,因此掌握三维建模技术对于计算机专业学生来说非常重要。

本次实训安排了一系列的三维建模任务,旨在帮助学生熟悉三维建模软件的使用方法,并提高其三维建模技能。

二、实训过程1. 学习基础知识在开始实训之前,我们首先学习了三维建模的基本概念和常用工具。

这些知识包括三维坐标系、模型、纹理、贴图等。

同时,我们也学习了三维建模软件的基本操作,包括选择工具、移动工具、拉伸工具等。

2. 完成三维模型在学习了基础知识之后,我们开始实际操作,完成了一系列的三维模型任务。

这些任务包括制作一个简单的房子、一个汽车、一个人物等。

在完成这些任务的过程中,我们不断地提高了自己的三维建模技能,并且学习了如何使用不同的工具来创造不同的效果。

例如,我们使用剪切工具和移动工具来制作房子的窗户和门,使用圆锥体和圆柱体工具来制作汽车的车轮等。

3. 优化三维模型在完成了三维模型之后,我们进行了优化,包括调整模型的大小、旋转、缩放、材质等。

通过这些调整,我们让模型更加逼真、更加符合实际。

4. 渲染三维模型最后,我们使用三维建模软件的渲染功能,将我们的三维模型渲染成为真实的图像。

通过调整光源、材质、纹理等参数,我们让模型看起来更加逼真、更加生动。

三、实训效果通过本次实训,我掌握了三维建模的基本知识和技能。

我学会了如何使用三维建模软件,如何制作三维模型、优化三维模型和渲染三维模型。

这些技能对于我未来的学习和工作都具有很大的帮助。

此外,通过本次实训,我也更加深入地了解了计算机图形学和计算机动画等方面的知识,对于我未来的学习和研究都具有积极的推动作用。

总之,本次三维建模实训让我受益匪浅,我将继续努力,提高自己的三维建模技能。

三维建模实习报告

三维建模实习报告

一、实习背景随着计算机技术的飞速发展,三维建模技术在各个领域中的应用越来越广泛。

为了更好地了解三维建模技术,提高自己的实际操作能力,我参加了为期一个月的三维建模实习。

本次实习旨在通过实际操作,深入学习三维建模软件的基本功能和使用方法,并尝试运用所学知识完成一些实际项目。

二、实习目的1. 掌握三维建模软件的基本操作,包括建模、材质、灯光、渲染等。

2. 学习并掌握三维建模的基本理论,了解不同建模方法的特点和应用场景。

3. 通过实际项目锻炼自己的三维建模能力,提高自己的创意思维和设计水平。

4. 培养团队协作精神,学会与他人共同完成复杂项目。

三、实习内容1. 软件学习实习期间,我主要学习了3ds Max软件。

3ds Max是一款功能强大的三维建模、动画、渲染软件,广泛应用于影视动画、建筑设计、游戏开发等领域。

通过学习,我掌握了以下内容:- 建模工具:掌握基本建模工具的使用,如长方体、圆柱体、球体等,并能够运用放样、布尔运算等高级建模技巧。

- 材质与贴图:了解不同材质的类型和特点,掌握贴图的应用方法,为模型添加真实感。

- 灯光与摄像机:学习灯光类型、强度、衰减等参数的设置,以及摄像机类型的选用和参数调整。

- 渲染:了解渲染的基本原理,掌握渲染参数的设置,渲染出高质量的画面。

2. 项目实践在实习过程中,我参与了以下项目:- 室内效果设计:根据提供的平面图,利用3ds Max软件进行三维建模,并添加材质、灯光、摄像机等,最终渲染出室内效果图。

- 室外场景设计:根据提供的地形图,利用3ds Max软件进行三维建模,包括建筑、道路、植被等,并添加材质、灯光、摄像机等,最终渲染出室外效果图。

- 动画制作:利用3ds Max软件制作一段简单的动画,包括角色动画、摄像机动画等,并添加音乐和特效。

3. 团队协作在实习过程中,我与其他实习生一起完成了一个复杂的项目。

我们分工合作,共同完成建模、材质、灯光、渲染等工作,最终完成了项目目标。

三维模型实习报告

三维模型实习报告

一、实习背景随着计算机技术的飞速发展,三维建模技术已经成为当今社会的重要应用之一。

为了提高自己的专业能力,我选择了参加三维建模实习,希望通过实践操作,深入掌握三维建模的基本原理、技巧和应用。

二、实习目的1. 熟悉三维建模软件的基本操作和功能;2. 掌握三维建模的基本流程和方法;3. 学会运用三维建模技术进行创意设计;4. 提高自己的审美观和设计能力。

三、实习内容1. 三维建模软件的学习在实习过程中,我主要学习了三维建模软件3ds Max的基本操作和功能。

通过自学和请教老师,我掌握了以下内容:(1)场景搭建:包括创建几何体、修改几何体参数、布尔运算等;(2)材质与贴图:包括创建材质、设置材质属性、应用贴图等;(3)灯光与摄像机:包括创建灯光、调整灯光参数、设置摄像机等;(4)动画制作:包括关键帧动画、路径动画、粒子动画等。

2. 三维建模实战在掌握软件基本操作的基础上,我进行了以下实战练习:(1)室内效果设计:以一套住宅为例,从房间的顶部开始搭建,包括天花板、主墙体、门窗、地面、各种边角修饰以及室内物品的建造;(2)甜美三维生日蛋糕:利用3ds Max制作了一个生日蛋糕场景,蛋糕盘上放置着甜美的蛋糕,蛋糕体上插放着摇曳的烛光和可爱的小樱桃;(3)转动的地球仪:创建地球仪模型,设置材质,并使地球在支撑杆的怀抱中匀速转动;(4)影视片头字幕:制作了一个浮出海面的金属立体字特效。

3. 创意设计在实习过程中,我充分发挥自己的想象力,进行了一些创意设计:(1)未来城市:利用3ds Max和V-Ray渲染器,设计了一个充满科技感的未来城市;(2)太空探索:制作了一个太空场景,包括飞船、星球、陨石等元素。

四、实习过程1. 自学阶段:通过查阅资料、观看教程视频,初步了解三维建模软件的基本操作和功能;2. 实践阶段:在老师的指导下,进行实战练习,逐步提高自己的三维建模技能;3. 创意设计阶段:发挥自己的想象力,进行创意设计,提升自己的审美观和设计能力。

计算机图形学实验报告三

计算机图形学实验报告三

《计算机图形学》实验报告glClear(GL_COLOR_BUFFER_BIT);//glEnable(GL_SCISSOR_TEST);//glScissor(0.0f,0.0f,500,300);glutWireTeapot(0.4);glFlush();}//窗口调整子程序void myReshape(int w, int h){glViewport(500, -300, (GLsizei)w, (GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();if (w <= h)glOrtho(-1, 1, -(float)h / w, (float)h / w, -1, 1);elseglOrtho(-(float)w / h, (float)w / h, -1, 1, -1, 0.5);}2,使用opengl函数写一个图形程序,要求分别使用三个光源从一个茶壶的前右上方(偏红色),正左侧(偏绿色)和前左下方(偏蓝色)对于其进行照射,完成程序并观察效果。

}//绘图子程序void display(void){glColor3f(1.0, 1.0, 0.0);glClear(GL_COLOR_BUFFER_BIT);//glMatrixMode(GL_MODELVIEW);//glLoadIdentity();//设置光源的属性1GLfloat LightAmbient1[] = { 1.0f, 0.0f, 0.0f, 1.0f }; //环境光参数 ( 新增 )GLfloat LightDiffuse1[] = { 1.0f, 0.0f, 0.0f, 1.0f }; // 漫射光参数 ( 新增 )GLfloat Lightspecular1[] = { 1.0f, 0.0f, 0.0f, 1.0f }; // 镜面反射GLfloat LightPosition1[] = { 500.0f, 500.0f, 500.0f, 1.0f }; // 光源位置 ( 新增 ) glLightfv(GL_LIGHT0, GL_POSITION, LightPosition1);glViewport(0, 0, (GLsizei)w, (GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();3,使用opengl函数完成一个图形动画程序,显示一个球沿正弦曲线运动的过程,同时显示一个立方体沿抛物线运动过程。

计算机图形学实验报告

计算机图形学实验报告

计算机图形学实验报告一、实验目的本次计算机图形学实验旨在深入了解和掌握计算机图形学的基本原理、算法和技术,通过实际操作和编程实现,提高对图形生成、处理和显示的能力,培养解决实际图形问题的思维和实践能力。

二、实验环境本次实验使用的编程语言为 Python,借助了相关的图形库如Pygame 或 matplotlib 等。

开发环境为 PyCharm 或 Jupyter Notebook。

三、实验内容(一)二维图形的绘制1、直线的绘制使用 DDA(Digital Differential Analyzer)算法或 Bresenham 算法实现直线的绘制。

通过给定直线的起点和终点坐标,在屏幕或图像上绘制出直线。

比较两种算法的效率和准确性,分析其优缺点。

2、圆的绘制采用中点画圆算法或 Bresenham 画圆算法绘制圆。

给定圆心坐标和半径,生成圆的图形。

研究不同半径大小对绘制效果和计算复杂度的影响。

(二)图形的填充1、多边形填充实现扫描线填充算法,对任意多边形进行填充。

处理多边形的顶点排序、交点计算和填充颜色的设置。

测试不同形状和复杂度的多边形填充效果。

2、图案填充设计自定义的填充图案,如纹理、条纹等,并将其应用于图形填充。

探索如何通过改变填充图案的参数来实现不同的视觉效果。

(三)图形的变换1、平移、旋转和缩放对已绘制的图形(如矩形、三角形等)进行平移、旋转和缩放操作。

通过矩阵运算实现这些变换。

观察变换前后图形的位置、形状和方向的变化。

2、组合变换将多个变换组合应用于图形,如先旋转再平移,或先缩放再旋转等。

分析组合变换的顺序对最终图形效果的影响。

(四)三维图形的表示与绘制1、三维坐标变换学习三维空间中的平移、旋转和缩放变换矩阵,并将其应用于三维点的坐标变换。

理解如何将三维坐标映射到二维屏幕上显示。

2、简单三维图形绘制尝试绘制简单的三维图形,如立方体、球体等,使用线框模型或表面模型。

探讨不同的绘制方法和视角对三维图形显示的影响。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机图形学实验报告openGL的基本使用1.项目代码:// : 定义控制台应用程序的入口点。

#include""#include<iostream>#include<>#include<gl/>#include<gl/>#include<gl/>using namespace std;//#include"" 编程宝典第8版库函数//#include""GLfloat x=,y=,z=;//用于平移的变量GLfloat i=,j=,k=;//用于缩放的变量int d=1;//用于是否判断旋转的开关GLfloat angle=;//旋转角度的变量void myDisplay(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// 创建透视效果视图glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective, , , ;glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt, , , , , , , , ;glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// 定义4光源,从4个方向入射,第一个是白光,其他为红绿蓝{GLfloat sun_light_position[] = { , , , };GLfloat sun_light_position1[] = { , , , };GLfloat sun_light_position2[] = { , , , };GLfloat sun_light_position3[] = { , , , };GLfloat sun_light_ambient[] = { , , , };GLfloat sun_light_diffuse[] = { , , , };GLfloat sun_light_diffuse1[] = { , , , };GLfloat sun_light_diffuse2[] = { , , , };GLfloat sun_light_diffuse3[] = { , , , };GLfloat sun_light_specular[] = { , , , };glLightfv(GL_LIGHT0, GL_POSITION, sun_light_position);glLightfv(GL_LIGHT0, GL_AMBIENT, sun_light_ambient);glLightfv(GL_LIGHT0, GL_DIFFUSE, sun_light_diffuse);glLightfv(GL_LIGHT0, GL_SPECULAR, sun_light_specular);glLightfv(GL_LIGHT1, GL_POSITION, sun_light_position1);glLightfv(GL_LIGHT1, GL_AMBIENT, sun_light_ambient);glLightfv(GL_LIGHT1, GL_DIFFUSE, sun_light_diffuse1);glLightfv(GL_LIGHT1, GL_SPECULAR, sun_light_specular);glLightfv(GL_LIGHT2, GL_POSITION, sun_light_position2);glLightfv(GL_LIGHT2, GL_AMBIENT, sun_light_ambient);glLightfv(GL_LIGHT2, GL_DIFFUSE, sun_light_diffuse2);glLightfv(GL_LIGHT2, GL_SPECULAR, sun_light_specular);glLightfv(GL_LIGHT3, GL_POSITION, sun_light_position3);glLightfv(GL_LIGHT3, GL_AMBIENT, sun_light_ambient);glLightfv(GL_LIGHT3, GL_DIFFUSE, sun_light_diffuse3);glLightfv(GL_LIGHT3, GL_SPECULAR, sun_light_specular);glEnable(GL_LIGHT0);glEnable(GL_LIGHT1);glEnable(GL_LIGHT2);glEnable(GL_LIGHT3);glEnable(GL_LIGHTING);glEnable(GL_DEPTH_TEST);}//绘制坐标轴{glBegin(GL_LINE);//x轴红色glColor3f(1,0,0);glVertex3f(10,0,0);glVertex3f(-10,0,0);//y轴绿色glColor3f(0,1,0);glVertex3f(0,10,0);glVertex3f(0,-10,0);//z轴蓝色glColor3f(0,0,1);glVertex3f(0,0,10);glVertex3f(0,0,-10);glEnd();}// 定义球体的材质并绘制{GLfloat ambient[] = { , , , };//环境颜色GLfloat diffuse[] = { , , , };//散射颜色GLfloat specular[] = { , , , };//镜面反射GLfloat emission[] = { , , , };//发射光颜色GLfloat hininess = ; //反射指数glMaterialfv(GL_FRONT, GL_AMBIENT, ambient);glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse);glMaterialfv(GL_FRONT, GL_SPECULAR, specular);glMaterialfv(GL_FRONT, GL_EMISSION, emission);glMaterialf(GL_FRONT, GL_SHININESS, shininess);glTranslatef(x,y,z);glScalef(i,j,k);if(d==1){glRotatef(angle,,,;glTranslatef,,;}glutSolidSphere, , ;}glutSwapBuffers();}void ChangeSize(GLsizei W,GLsizei H)//当视口改变时改变裁剪部分保证图形观察时不形变{GLfloat aspectRatio;if(H==0)H=1;glViewport(0,0,W,H);//视口设置glMatrixMode(GL_PROJECTION);//重置坐标系统glLoadIdentity();aspectRatio=(GLfloat)W/(GLfloat)H;if(aspectRatio<=1)//裁剪部分设置glOrtho,,aspectRatio,aspectRatio,,;elseglOrtho*aspectRatio,*aspectRatio,,,,;glMatrixMode(GL_MODELVIEW);glLoadIdentity();}void ProcessKeys(unsigned char ch,int a,int b) {if(ch==119)//w{y+=;glutPostRedisplay();}else if(ch==115)//s{y-=;glutPostRedisplay();else if(ch==97)//a{x-=;glutPostRedisplay(); }else if(ch==100)//d{x+=;glutPostRedisplay(); }else if(ch==120)//x{z-=;glutPostRedisplay(); }else if(ch==122)//z{z+=;glutPostRedisplay(); }else if(ch==43)//+i+=;j+=;k+=;glutPostRedisplay();}else if(ch==45)//-{i-=;j-=;k-=;glutPostRedisplay();}else if(ch==32)//空格键{if(d==0)d=1;else d=0;cout<<d<<endl;}//按空格开关旋转}void IdleFunc(){if(d==1){angle+=;if(angle=={angle=;}cout<<angle<<endl;myDisplay();}}int _tmain(int argc, char* argv[]){glutInit(&argc, (char**) argv);glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); glutInitWindowPosition(100,100);glutInitWindowSize(500,500);glutCreateWindow("Hello OpenGL");glutDisplayFunc(myDisplay);glutReshapeFunc(ChangeSize);glutIdleFunc(IdleFunc);glutKeyboardFunc(ProcessKeys);glutReshapeFunc(ChangeSize);glutMainLoop();return 0;}二.系统总体布局系统流程图:本系统是常规的openGL系统,初始化后先设置视角、投影、光照、材质等因素,绘制基本的图形,再通过函数判断键盘输入进行重复绘制,完成基本的平移,缩放,旋转等操作三.系统设计思路在系统设计最初,本来想直接使用默认视角后直接设置光照和平移旋转等功能,但是发现在默认视角下对物体,特别是正方体的三维效果无法很好地观察,因此采用侧视视角然后在对材质的定义上,由于立方体设置比较麻烦,最后决定画一个球体,然后在平移旋转缩放等功能的演示上,直接演示过于简单,就是一个函数的执行,因此决定采取利用键盘控制移动和缩放及旋转的方式。

具体操作方法为wsadzx分别控制前后左右上下,space控制开始/停止旋转四.感想和心得在本次实验中,对我来说最大的问题是正确地理解视点,投影等概念;在默认状态下视角从Z轴正方向看向负方向,对于很多规则物体不旋转的话无法清楚地看到其三维特征,在调整视角的过程中遇到一些问题。

相关文档
最新文档