第2讲 OpenGL仿真编程及仿真语言、工具简介.ppt

第2讲 OpenGL仿真编程及仿真语言、工具简介.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2讲 OpenGL仿真编程及仿真语言、工具简介

主要内容 OpenGL仿真编程 仿真语言 常用仿真语言 一体化仿真环境 仿真操作系统 2.1 OpenGL仿真编程——引言 引言 三维图形建模工具 OpenGL 3DSMAX MultiGen Creator 模型驱动软件 Vega 2.1 OpenGL仿真编程——框架 OpenGL程序框架 Windows API程序编写步骤 每个窗口都有一个设备环境,用于接收实际图形输出。 OpenGL窗口框架 在VC6.0或VC.NET下新建一个WIN32项目,在“应用程序设置”中选择“Windows应用程序”,在“附加选项”中设置“空项目”。 2.1 OpenGL仿真编程——框架 OpenGL渲染环境(rendering context) 创建窗口时,一次性设置3D特性——像素格式 Windows提供了一个PIXELFORMATDESCRIPTOR 结构描述像素格式 2.1 OpenGL仿真编程——框架 申明OpenGL渲染环境句柄 HGLRC hRC; 申明窗口设备环境句柄 HDC hDC; 2.1 OpenGL仿真编程——框架 选择和设置一种像素格式 调用SetPixelFormat()函数,hDC和PIXELFORMATDESCRIPTOR 结构是其中参数。 hRC = wglCreateContext(hDC); 2.1 OpenGL仿真编程——关键技术 例子:指环王动画特效(LOTR文件夹) 2.1 OpenGL仿真编程——关键技术 ASE模型读取 OpenGL构造模型的方法: 通过简单图元如点、直线、多边形等构造复杂的模型。 通过aux辅助库glut库等构造出某些复杂模型,如茶壶等。 缺陷:构造过程复杂。 比较高效的方法:使用专用的3D模型建模工具对复杂模型和场景进行建模,导出为特定格式文件,在OpenGL程序中加载并显示。 ASE模型读取 ASE模型 ASE文件:指3D Studio Max ASCII Export输出文件,以文本形式保存了模型的所有信息。 实例中的ASE三维模型 魔戒指环(Ring.ase) 手指(Finger.ase) 圣剑(Glamdring.ase)等。 ASE模型读取 读取和显示模型定义的辅助结构 (AseLoader.h) 顶点向量类(CVertex) 平面类(CFace) 材质类(CMaterials) 几何体类(CGeometry) 模型类(CModels) ASE模型读取 顶点向量类(CVertex) 主要包含浮点型成员和点积、叉积、归一化等操作。 ASE模型读取 模型类(CModels) 包括一系列几何体信息、纹理信息、材质信息。 包括载入模型与显示模型的方法。 Search()函数:用于在读取模型信息时查找指定的标签。 LoadMaterials()函数:用于从材质数组中读取纹理信息。 UnLoadMaterials()函数:用于删除纹理对象所占用的内存。 Load()函数:用于读取ASE模型信息。 Display()函数:根据模型中的光源信息、纹理信息和几何体信息,将模型最终渲染到屏幕上。 ASE模型读取——Load()函数 在AseLoader.cpp中实现,主要步骤: 打开模型文件 fstream files; files.open(filename,ios::in|ios::nocreate); 查找材质数目标签,读取材质信息到CMaterials结构体数组中 ASE模型读取——Load()函数 查找几何体标签和光源标签 ASE模型读取——Load()函数 读取各几何体的位置、名称、顶点数组、面数组等信息。 parts=new CGeometry[part_number]; for(i=0;ipart_number;i++) { …… } 关闭文件 files.close(); ASE模型读取——Load()函数 载入ASE模型 (DrawScenes.cpp中定义的Initialize()函数) Lotr.cpp中定义的WinMain ()中语句: if (Initialize (window, keys) == FALSE) 2.1 OpenGL仿真编程——关键技术 场景的绘制 整个场景动画的播放由一个全局时间变量:ANIMC_time控制。 动画播放时间序列函数 在DrawScenes.cpp中定义: void AnimationSequence(float timet) 在DrawScenes.cpp中定义的void Update (DWORD milliseconds)中调用 AnimationSequence(ms); 在Lotr

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档