计算机动画课程设计文档格式.docx
- 文档编号:18229367
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:13
- 大小:156.46KB
计算机动画课程设计文档格式.docx
《计算机动画课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《计算机动画课程设计文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
图形的真实感绘制首先需要设置光源.如果在现在生活中没有光源,则将一片漆黑;
如果在OpenGL编程中没有加上光源,则不会产生立体的图形效果,物体的绘制效果还同物体本事的颜色和材料属性密切相关。
OpenGL为了计算物体表面的颜色需要物体表面各个点的法向量。
另外,OpenGL还需要判断物体之间以及物体自身的遮挡关系,从而显示物体的可见部分。
三、环境搭建
开发环境:
VC++或VS2005
OpenGL添加:
OpenGL32.Lib;
GIU32.Lib;
GIAux.Lib
功能描述:
核心库:
工具库:
辅助库:
四、编译过程
4.1项目创建
项目名称:
二十面体的实体模型
4.2关键引用
#include"
gl/gl.h"
gl/glu.h"
gl/glaux.h"
4.3详细代码
//123View.cpp:
implementationoftheCMy123Viewclass
//
stdafx.h"
123.h"
123Doc.h"
123View.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CMy123View
IMPLEMENT_DYNCREATE(CMy123View,CView)
BEGIN_MESSAGE_MAP(CMy123View,CView)
//{{AFX_MSG_MAP(CMy123View)
ON_WM_DESTROY()
ON_WM_CREATE()
ON_WM_SIZE()
//}}AFX_MSG_MAP
//Standardprintingcommands
ON_COMMAND(ID_FILE_PRINT,CView:
:
OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT,CView:
ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView:
OnFilePrintPreview)
END_MESSAGE_MAP()
//CMy123Viewconstruction/destruction
CMy123View:
CMy123View()
{
//TODO:
addconstructioncodehere
}
~CMy123View()
BOOLCMy123View:
PreCreateWindow(CREATESTRUCT&
cs)
ModifytheWindowclassorstylesherebymodifying
//theCREATESTRUCTcs
returnCView:
PreCreateWindow(cs);
//CMy123Viewdrawing
voidCMy123View:
OnDraw(CDC*pDC)
CMy123Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
if(!
pDoc)
return;
adddrawcodefornativedatahere
wglMakeCurrent(pDC->
m_hDC,m_hRC);
glClearColor(1.0f,1.0f,1.0f,1.0f);
glClearDepth(1.0);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_AUTO_NORMAL);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
GLfloatlight_position[]={1.0f,1.0f,1.0f,0.0f};
GLfloatlight_ambient[]={0.2f,0.2f,0.2f,0.2f};
GLfloatlight_diffuse[]={0.5f,0.5f,0.5f,0.2f};
GLfloatlight_specular[]={0.5f,0.5f,0.5f,0.2f};
glLightfv(GL_LIGHT0,GL_POSITION,light_position);
glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient);
glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);
glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular);
GLfloatmaterial_ambient[]={0.2f,0.2f,0.2f,0.2f};
GLfloatmaterial_diffuse[]={0.2f,0.8f,0.4f,0.8f};
GLfloatmaterial_specular[]={0.2f,0.8f,0.4f,0.8f};
GLfloatmaterial_emission[]={0.2f,0.2f,0.2f,1.0f};
GLfloatmaterial_shininess[]={10.0f};
glMaterialfv(GL_FRONT,GL_AMBIENT,material_ambient);
glMaterialfv(GL_FRONT,GL_DIFFUSE,material_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,material_specular);
glMaterialfv(GL_FRONT,GL_EMISSION,material_emission);
glMaterialfv(GL_FRONT,GL_SHININESS,material_shininess);
glRotated(45.0,1.0,0.0,0.0);
glColor3f(20.0f,0.5f,0.8f);
auxSolidIcosahedron(4.0);
SwapBuffers(pDC->
m_hDC);
wglMakeCurrent(NULL,NULL);
//CMy123Viewprinting
OnPreparePrinting(CPrintInfo*pInfo)
//defaultpreparation
returnDoPreparePrinting(pInfo);
OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
addextrainitializationbeforeprinting
OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
addcleanupafterprinting
//CMy123Viewdiagnostics
AssertValid()const
CView:
AssertValid();
Dump(CDumpContext&
dc)const
Dump(dc);
CMy123Doc*CMy123View:
GetDocument()//non-debugversionisinline
ASSERT(m_pDocument->
IsKindOf(RUNTIME_CLASS(CMy123Doc)));
return(CMy123Doc*)m_pDocument;
#endif//_DEBUG
//CMy123Viewmessagehandlers
OnDestroy()
OnDestroy();
Addyourmessagehandlercodehere
wglMakeCurrent(NULL,NULL);
wglDeleteContext(m_hRC);
m_hRC=NULL;
intCMy123View:
OnCreate(LPCREATESTRUCTlpCreateStruct)
if(CView:
OnCreate(lpCreateStruct)==-1)
return-1;
Addyourspecializedcreationcodehere
CClientDCdc(this);
PIXELFORMATDESCRIPTORpfd;
memset(&
pfd,0,sizeof(PIXELFORMATDESCRIPTOR));
pfd.nSize=sizeof(PIXELFORMATDESCRIPTOR);
pfd.nVersion=1;
pfd.dwFlags=PFD_DRAW_TO_WINDOW|
PFD_SUPPORT_OPENGL|
PFD_DOUBLEBUFFER;
pfd.iPixelType=PFD_TYPE_RGBA;
pfd.cColorBits=24;
pfd.cDepthBits=32;
intpixelFormat=ChoosePixelFormat(dc.m_hDC,&
pfd);
SetPixelFormat(dc.m_hDC,pixelFormat,&
m_hRC=wglCreateContext(dc.m_hDC);
return0;
OnSize(UINTnType,intcx,intcy)
OnSize(nType,cx,cy);
wglMakeCurrent(dc.m_hDC,m_hRC);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
doubled=10;
doublen=100;
glOrtho(-cx/n,cx/n,-cy/n,cy/n,-d,d);
glMatrixMode(GL_MODELVIEW);
glViewport(0,0,cx,cy);
wglMakeCurrent(NULL,NULL);
五、调试结果
编译后调试,结果如下所示
5.1编译的颜色
程序代码为:
调整参数:
glColor3f(1.0f,0.5f,0.8f);
调整后运行结果如图所示:
5.1旋转的角度
glRotated(45.0,0.5,1.5,0.0);
5.3实体线路或者图形的设置
实体模型代码:
线框模型代码:
auxWireIcosahedron(4.0);
5.4其他模型代码
如圆环的线框模型:
auxWireTorus(1.0,3.0);
运行结果为:
六、心得与体会:
在还没有接触这一门课以前对计算机动画的认识还只是肤浅的认识,认为动画都是由一些软件制作而成的,学了后才知道动画是可以通过一些算法来完成的。
在这门课中可以说是受益匪浅,尤其在动手制作的时候遇到了很多的困难和问题,因为以前并没有解除太多的算法,现在做起来必然有些吃力。
但是在逐渐的学习后发现OpenGL应用程序的开对初学计算动画算法与编程基础的我们来说,还是比较容易掌握的。
OpenGL应用博大精深,图形实体的参数配置较难,许多参数对于初学的我们还不是太了解,在反复调整运行后,大概能掌握一些。
在整个过程中,我发现问题,和同学交流,同时也发现同学的补足,各自发现不足,取长补短,使各自在学习中进步,我相信以后会学的更好。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 动画 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)