2022年计算机动画课程设计方案宋青云 .pdf
个人资料整理仅限学习使用计算机动画课程设计制作报告学院:明德学院专业:计算机科学与技术班级:计科091 学生姓名:宋青云学号: 092003111142 指导教师:班兴建2018 年 12 月 1 日精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 12 页个人资料整理仅限学习使用计算机动画制作报告一、 计算机动画概述随着计算机越来越广泛的应用于各行各业,计算机动画也深入了我们的各个领域,计算机动画是借助于计算机生成一系列的图像并且可以动态播放的计算机技术。在这里的设计报告中我主要运用了OpenGL BEGIN_MESSAGE_MAP(CMy123View, CView /AFX_MSG_MAP(CMy123View ON_WM_DESTROY( ON_WM_CREATE( ON_WM_SIZE( /AFX_MSG_MAP / Standard printing commands ON_COMMAND(ID_FILE_PRINT, CView:OnFilePrint ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:OnFilePrintON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreviewEND_MESSAGE_MAP( / CMy123View construction/destruction CMy123View:CMy123View( / TODO: add construction code here CMy123View:CMy123View( BOOL CMy123View:PreCreateWindow(CREATESTRUCT& cs / TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT cs return CView:PreCreateWindow(cs。 / CMy123View drawing void CMy123View:OnDraw(CDC* pDC CMy123Doc* pDoc = GetDocument( 。ASSERT_VALID(pDoc 。if (!pDoc 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 12 页个人资料整理仅限学习使用return 。/ TODO: add draw code for native data here 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(。GLfloat light_position = 1.0f, 1.0f, 1.0f, 0.0f 。GLfloat light_ambient = 0.2f, 0.2f, 0.2f, 0.2f 。GLfloat light_diffuse = 0.5f, 0.5f, 0.5f, 0.2f 。GLfloat light_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。GLfloat material_ambient = 0.2f,0.2f,0.2f,0.2f。GLfloat material_diffuse = 0.2f,0.8f,0.4f,0.8f。GLfloat material_specular = 0.2f,0.8f,0.4f,0.8f。GLfloat material_emission = 0.2f,0.2f,0.2f,1.0f。GLfloat material_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。glLoadIdentity(。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 。 / CMy123View printing BOOL CMy123View:OnPreparePrinting(CPrintInfo* pInfo精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 12 页个人资料整理仅限学习使用 / default preparation return DoPreparePrinting(pInfo。 void CMy123View:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/ / TODO: add extra initialization before printing void CMy123View:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/ / TODO: add cleanup after printing / CMy123View diagnostics #ifdef _DEBUG void CMy123View:AssertValid( const CView:AssertValid(。 void CMy123View:Dump(CDumpContext& dc const CView:Dump(dc 。 CMy123Doc* CMy123View:GetDocument( / non-debug version is inline ASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CMy123Doc。return (CMy123Doc*m_pDocument 。 #endif /_DEBUG / CMy123View message handlers void CMy123View:OnDestroy( CView:OnDestroy(。/ TODO: Add your message handler code here wglMakeCurrent(NULL,NULL 。wglDeleteContext(m_hRC 。m_hRC = NULL 。 int CMy123View:OnCreate(LPCREATESTRUCT lpCreateStruct 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 12 页个人资料整理仅限学习使用 if (CView:OnCreate(lpCreateStruct = -1 return -1。/ TODO: Add your specialized creation code here CClientDC dc(this。PIXELFORMATDESCRIPTOR pfd。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。int pixelFormat = ChoosePixelFormat(dc.m_hDC,&pfd。SetPixelFormat(dc.m_hDC,pixelFormat,&pfd。m_hRC = wglCreateContext(dc.m_hDC。return 0。 void CMy123View:OnSize(UINT nType, int cx, int cy CView:OnSize(nType, cx, cy。/ TODO: Add your message handler code here CClientDC dc(this。wglMakeCurrent(dc.m_hDC, m_hRC 。glMatrixMode(GL_PROJECTION。glLoadIdentity(。double d=10 。double n=100 。glOrtho(-cx/n, cx/n, -cy/n, cy/n, -d, d。glMatrixMode(GL_MODELVIEW 。glViewport(0, 0, cx, cy。wglMakeCurrent(NULL, NULL。五、 调试结果精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 12 页个人资料整理仅限学习使用编译后调试,结果如下所示5.1 编译的颜色程序代码为: glColor3f(20.0f,0.5f,0.8f。调整参数: glColor3f(1.0f,0.5f,0.8f。调整后运行结果如图所示:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 12 页个人资料整理仅限学习使用5.1 旋转的角度程序代码为: glRotated(45.0,1.0,0.0,0.0。调整参数: glRotated(45.0,0.5,1.5,0.0。调整后运行结果如图所示:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 12 页个人资料整理仅限学习使用5.3 实体线路或者图形的设置实体模型代码: auxSolidIcosahedron(4.0。线框模型代码: auxWireIcosahedron(4.0。调整后运行结果如图所示:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 12 页个人资料整理仅限学习使用5.4 其他模型代码如圆环的线框模型: auxWireTorus(1.0,3.0)。运行结果为:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 12 页个人资料整理仅限学习使用六、 心得与体会:在还没有接触这一门课以前对计算机动画的认识还只是肤浅的认识,认为动画都是由一些软件制作而成的,学了后才知道动画是可以通过一些算法来完成的。在这门课中可以说是受益匪浅,尤其在动手制作的时候遇到了很多的困难和问题,因为以前并没有解除太多的算法,现在做起来必然有些吃力。但是在逐渐的学习后发现OpenGL应用程序的开对初学计算动画算法与编程基础的我们来说,还是比较容易掌握的。OpenGL应用博大精深,图形实体的参数配置较难,许多参数对于初学的我们还不是太了解,在反复调整运行后,大概能掌握一些。在整个过程中,我发现问题,和同学交流,同时也发现同学的补足,各自发现不足,取长补短,使各自在学习中进步,我相信以后会学的更好。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 12 页