当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

面向工程可视化仿真的VC++,OpenGL与3DS集成技术

资源类别:文库,文档格式:PDF,文档页数:3,文件大小:768.57KB,团购合买
在系统的可视化仿真过程中,三维图形的处理是一个关键技术问题.介绍一种在Visual C++语言环境F.利用Open GL工具绘制3DS维图形的方法给出C++定义的数据结构.和实现三维图形的调入与显示.
点击下载完整版文档(PDF)

D0I:10.13374/i.issn1001-053x.2001.06.024 第23卷第6期 北京科技大学学报 Vol.23 No,6 2001年12月 Journal of University of Science and Technology Beijing Dec.2001 面向工程可视化仿真的VC++,OpenGL 与3DS集成技术 赵文广 李仲学李翠平 北京科技大学七木与环境程学院,北京100083 摘要任系统的可视化仿真过程中,三维图形的处理是·个关键技术问题.介绍一种在Visual C+语言环境下,利用Open GL其绘制3DS维图形的方法.给出C++定义的数据结构,和 实现维图形的调人与邮小. 关键词可视化:仿真:Open GL:3DS 分类号TP319.4:TD853 1问题的提出 bray)即开放式图形库,是1个维的计算机图 形模型库,应用这个图形库不仅能方便地制作 虚拟场景实时漫游是一种应用前景非常好 出高质量的静止维彩色图像,还可以创建出 的技术领域.例如,房地产:开发商可以通过网上 很逼真的动画效果.E是由于OpenGL在三维 向客户提供建筑物虚拟漫游,在房屋真正建成 真实感图形制作中其有优良性能,一批在市场 之前给客户一种更加直观的感受.问时建筑物 上.占主导地位的大公可(如Microsoft,BM, 虚拟漫游,可以使建筑师通过对设计中的建筑 DEC,SUN等)都将它作为自已的图形标准. 物进行反复观察,找出设计中的不足之处,加以 OpenGL中提供了十儿个生成三维实体模 改进,以免在设计完成、交付施小发现有设 型的辅助数,简单的模型如球体、立.方体和圆 计的缺陷.再如,在采矿「程巾,采矿设计工程 柱等可以使用这些函数来实现.但是,这些函数 师可通过对设计中的矿进反复修改,或对 难以满足建立复杂一三维实体的需要,例如二维 已有矿山的生产:系统进行分析,找出整个系统 不规则地质体表达和采矿二程设计及计划应用 的瓶颈环节并加以改进,使整个系统优化 的需要.所以用户常常通过其他建模工具来辅 H前,从技术角度上:讲,漫游的最人推点在 助建立维实体模型数据库.为此,我们可以考 于建模和实时绘制.场景漫游中所看到的景像 虑先在3DMAX中建立,复杂模型,然后在Open- 离人们很近,需要绘制得非常逼直,所以建模时 GL巾实现对其控制和变换,进而实现与其他应 需要将模型构造得非常精细,这往作需要耗费 用环境(例如,以VC+为上实现的可视化仿真 很多时间.为了解决这个难点,可以使用3DS 环境)的无缝集成 MAX等建模.共. 3 DS MAX是Kinetix公d的维I图形建模 2集成环境及实现步骤 和动画软件,能方便地建立各种复杂物体模型, 而且互联网上有大量的维形资源可供使 拟建立的仿真系统是基于Visual C++语言 用.但是在3 DS MAX中很雅进行程序挖制,不 的.用VC+编写仿真环境,用3 DS Max软件构 便于进行各种仿真实验 造维图形,用Open GL作三维图形接口. 另一个方面,OpenGL(Open Graphics Li- 在VC++中用Open GL显示3 DS Max图形 文件要通过如下步骤:①建立与3DS文件格式 收稿H期200105-29赵文月.32岁,博1生 *国家自然科学其金资助项月(N0.79870059)和教有部州下牧师资助计划项目

第 卷 第 期 年 月 北 京 科 技 大 学 学 报 匕 一 一 面 向工程可视化仿真的 , 与 集成技术 赵文 广 李仲 学 李翠平 北京科技 大学 七木 与环境 「程学院 , 北京 摘 要 在 系统 的 可视化仿 真过 程 中 , 二 维 图 形 的处理 是 个关键技 术问 题 介 绍 一种 在 料 语 言环 境 利用 一 其绘 制 几维 图 形 的 方法 给 出 定 义 的 数据结 构 , 和 实现 气 维 图形 的调 人 ‘ 显 示 关挂词 可 视化 仿 真 分 类号 问题的提 出 虚拟 场景实时漫 游 是 一 种 应 用 前景 非常好 的技术领域 例如 , 房地 产 开 发 商可 以通 过 网 卜 向客户 提供 建筑 物虚 拟 漫 游 , 在 房 屋 真正 建 成 之 前给 客户 一 种 更 加 直观 的 感 受 同时 建筑 物 虚 拟 漫 游 , 可以 使 建筑 师通 过 对 设 卜中 的 建筑 物进 行反 复 观 察 , 找 出 设 计中的 不 足 之 处 , 加 以 改 进 , 以 免在设 计完 成 、 交付施 后 刁 ’ 发 现有 设 计 的缺 陷 再 如 , 在 采矿 「程 中 , 采矿 设 计 飞程 师可 通 过 对 设计 中的矿 山进 行 反 义修 改 , 或 对 已 有矿 山 的 牛 产 系统 进 行 分 析 , 找 出 整 个 系统 的瓶 颈 环 节 并加 以 改进 , 使 整个 系统 优 化 目前 , 从技 术角度 卜讲 , 漫 游 的 最 人难点 在 于建模 和实 时绘制 场景漫 游 中所 肴到的景像 离人们 很 近 , 需 要绘 制得 非常逼 真 , 所 以 建模 时 需 要 将模 型 构造得 卜常精细 , 这 往 往需 要耗 费 很 多 时 间 为 解 决这 个 难点 , 可 以 使用 等建模 ’ 具 是 公 「‘ 的 维 冬】形 建模 和 动 画 软件 , 能 方便 地 建 立各种 复 杂 物体模 型 , 而 且 互联 网 卜有 大 量 的 毛维 图形 资源 口 供 使 用 但是 在 中很难 进 行程 序控制 , 不 便 于 进 行 各种仿真实验‘” ’ 另 一 个 方 面 , 即开 放式 图形 库 , 是 个 二维 的计算机 图 形模 型库 , 应用 这个 图形 库不仅能方便地制作 出高质 量 的静 止 砚 维 彩 色 图像 , 还 可 以 创建 出 很 逼 真的 动 画 效 果 正是 由于 在 二 维 真实感 图 形 制作 中具有优 良性 能 , 一 批 在 市场 卜占 主 导地 位 的 大公 司 如 , , , 等 都将它 作 为 自己 的 图形 标准 中提供 了 十儿 个生 成 下 维 实体模 型 的辅助 函数 , 简单 的模 型 如球体 、 立 方体 和 圆 丰 等 可 以 使用 这 些 函数 来实 现 但是 , 这些 函数 难 以 满 足 建 众复杂 气 维 实体 的需 要 , 例如 二 维 不规则地 质体 表达 和采 矿 卜程设计 及计划 应 用 的需 要 所 以 用 户 常常通 过 其他建模 工 具来辅 助 建 亿 几维 实体模 型数据 库 为此 , 我 们 可以 考 虑 先 在 中建 立 复杂模 型 , 然后 在 中实 现对 其控 制和 变 换 , 进 而 实现 与其 他应 川 环 境 例 如 , 以 十 为 卜实 现 的 可视化仿真 环 境 的 无缝 集成 集成环境及实现步骤 拟 建 立 的仿 真 系统 是 基 于 十十 语 言 的 用 编写 仿 真环 境 , 用 软件构 造 几维 图 形 , 用 作 二维 图形 接 口 在 中用 显 示 图 形 文件 要 通 过 如下 步骤 ①建 立 与 文件格式 收稿 期 加 刁 一 赵 文厂 男 , 岁 , 卜毕 ’ 毛 闰家 自然科学 基 金 资助项 目 和教 育部骨 「教 师 资助 十划项 卜 DOI :10.13374/j .issn1001-053x.2001.06.024

·564· 北京科技大学学报 2001年第6期 相应的VC+数据结构;②读入3DS文件数据 int NumMaps;∥纹理坐标列表中纹理的个数 放人上述建立的VC++数据结构中:③)将上述数 BOOL matrix;∥有转换矩阵则其值为1 据转化为便于Open GL绘制的数据结构;④用 int NumBindings;/绑定材质的个数 Open GL提供的绘制函数绘出图形. H3 dsFace◆facelist,l/三角面索引列表 H3 dsVert*vertlist;:∥顶点列表 3关键技术 H3 dsMap *maplist;∥纹理坐标列表 3.13DS文件格式 float32 TraMatrix[3*4]; 在3 DS MAX中建立好模型后,可以用多种 ∥3*3旋转矩阵,3*1转换矩阵 文件格式存储.考虑到OpenGL提供了最基本 H3 dsMatList *bindings;:∥绑定材质于三角面 的由多边形构造三维模型的方法,故以三角形 网格方式存为3DS文件.在程序中我们需建立 ∥场景数据结构 对应的模型数据结构、读入模型文件数据,然后 struct H3dsScene( 在OpenGL中进行绘制. int meshobjs; 3DS文件是由三角网方式保存的维几何 场景内形体对象块列表中形体对象块的个数 图形,即用角面组成的网格面来近似各种曲 H3 dsMeshObj *meshobjlist;:∥形体对象块列表 面,3DS文件结构见文献[3).3DS文件由许多块 int NumMaterials;∥场景内材质列表中的个数 组成,每个块首先描述其信息类别,即该块是如 H3 dsMat*material;:∥材质列表 何组成的.块的前2项信息分别是块的D和块 的长度;块的D是个整型数,而块的长度是个 3.33DS模型的0 pen GL绘制 长整型数:每个块是1个层次结构,不同类型的 读人当前形体对象的顶点列表.3DS文件 块其层次结构也不相同.每1个3DS文件的开 中的顶点的定义是由一个表示顶点数月的整型 头都是由1个基本块构成,其D是4D4D.基本 数开始的,接着是相应数目的顶点定义信息,用 块内的块称为主块,E块共有2种,分别为3D 3个浮点数表示其3个坐标. 编辑块和关键帧块,前者的D为3D3D,后者的 void ReadVertList(H3dsMeshObj *meshobj){ ID为B000.3D编辑程序块是编辑程序数据的 word nv; 开始,即物体形体数据定义的开始.主块后面是 int n; 该主块允许的子块.3D编辑程序块的子块包括 dread(&nv,sizeof(nv)); 物体描述块、材质列表块、环境颜色块等.而物 meshobj->Num Verts=nv; 体描述块又包括三角形列表块、光源块、相机块 meshobj->vertlist=(H3ds Vert * 等.三角形列表块包括顶点列表,面列表、面材 getmem(sizeof(H3dsVert)*nv); 质、纹理映射坐标、面平滑组、平移矩阵等子块. for(n=0;nvertlist[n].x,sizeof(float32)): 息 dread(&meshobj->vertlist[n].y,sizeof(float32)); 3.23DS模型的C+描述 dread(&meshobj->vertlist[n].z,sizeof(float32)); 为了读人3DS模型,在C+程序中我们需 建立对应的模型数据结构,除了几何图形特征 顶点数据外,还要有一些显示图形所必须的数 读入当前形体对象的面列表.3DS每个面 据结构.本文以C+语言数据结构为例,对其中 都是二角形.每个三角形由它的3个顶点的序 的2个主要编辑块描述如下, 号以及一个面信息组成,面信息为0x07表示二 角形是按顺时针方向定义的 ∥形体对象块数据结构 struct H3dsMeshObj{ word ReadFaceList(H3dsMeshObj *meshobj){ char name[l6]:∥形体对象块名称 word nv; int NumFaces;∥角面列表中:角面的个数 int n; int Num Verts;:∥顶点列表中点的个数 dread(&nv,sizeof(nv));

一 七 京 科 技 大 学 学 报 年 第 期 相应 的 数据结构 ②读人 文件数据 放 人 卜述 建 立的 十十 数据结构中 ③将上 述数 据转化 为便 于 绘制的数据结构 ④用 提供 的绘制 函数绘 出图形 关键技术 文件格式 在 中建 立好模 型 后 , 可 以用 多种 文件格 式 存储 考虑 到 提供 了最 基本 的 由 多边形构造 二维模型 的 方法 , 故 以 共 角形 网格 方 式 存为 文件 在程序 中我 们需建立 对应 的模型 数据结构 , 读入模型 文件数据 , 然 后 在 中进行绘制 文件是 由 不 角 网 方式保存的 气维 几何 图形 , 即用 毛角面组 成的网格面来近似各种 曲 面 , 文 件结构 见 文献【 文 件 由许多块 组 成 , 每个块首先描述 其信息类别 , 即该块是如 何组 成 的 块 的前 项 信息分别是块 的 和块 的长度 块 的 是个 整型 数 , 而块 的长度是个 长整 型数 每个块 是 个层 次结构 , 不 同类 型 的 块 其层 次结构 也 不相 同 每 个 文件的 开 头都是 由 个 基本块构成 , 其 是 基 本 块 内的块称 为 主块 , 上块共有 种 , 分 别为 编辑块 和 关键 帧块 , 前者的 为 , 后 者 的 为 编辑程序块是 编辑程序数据 的 开 始 , 即物体形体数据 定 义 的 开 始 上块后 面 是 该 主块 允许的 子块 编辑程序块 的 子块包括 物体描 述块 、 材质 列 表块 、 环境颜 色块 等 而 物 体描述块 又包括下角形 列 表块 、 光源块 、 相机块 等 二 角 形列 表块包括顶 点列表 、 面 列表 、 面材 质 、 纹理映射坐标 、 面平滑组 、 平移矩 阵等子块 这 儿 个层 次 的数据块结构定 义 了物体的拓朴信 息 , 模型的 描述 为 了读入 模 型 , 在 十十 程序 中我们需 建 立对应 的模 型数据结构 , 除 了 几何 图形 特征 顶 点数据外 , 还 要有一 些 显示 图形 所 必 须 的数 据结构 本文以 十语言数据结构为例 , 对其 中 的 个 毛要 编辑块 描述如 一「‘, 刀 形体对 象块 数据结构 形 体对象块名称 刀 一 几角 面列表中 二角面 的个数 顶点 列 表中点 的个数 纹理坐标列表 中纹理 的个数 有转换矩 阵则其值 为 绑定材质的 个数 二 角面 索 引列 表 决 顶点列 表 ’ 纹理坐 标 列 表 刀 旋转矩阵 , 转换矩 阵 绑定 材质 于 二角面 刀场景 数据结构 ” 场景内形体对象块列表中形体对象块的个数 巾 形体对 象块列表 刀场景内材质列表 中的个数 材质 表 模型的 绘制 读人 当前形体对 象的顶点 列 表 文 件 中的顶点的定义是 由一 个表示顶点数 目的整 型 数 开 始 的 , 接着是 相应数 目的顶点 定 义 信息 , 用 个 浮点 数表示 其 个 坐标 叭 邓。 双 一 卜 坟 珑 叹 沁 勺 由 眼 一 , 叹 一 , 一 , 读人 当前形体对 象的面列表 每个 面 都是 二角形 每个 二角形 由它 的 个顶点 的序 号 以 及 一 个面 信息组成 , 面信息为 表示 花 角形是按顺时针 方 向定 义 的 从 滋

Vol.23 赵文广等:面向工程可视化仿真的VC+,OpenGL与3DS集成技术 ·565· meshobj->NumFaces-nv; meshobj->facelist=(H3dsFace * getmem(sizeof(H3dsFace)*nv); for(n=0;nfacelist[n].p0,sizeof(word)); dread(&meshobj->facelist n].pl,sizeof(word)); dread(&meshobj->facelist[n].p2,sizeof(word)); dread(&meshobj->facelist[nl.flags,sizeof(word)); 图1 Open GL中绘制的挖掘机图 return (nv);/WG*/ Fig.1 Excavator in OpenGL } 4结论 读入当前形体对象的纹理映射坐标.纹理 坐标列表也是由1个表示顶点数目的整数开始, 把3DS模型应用于Open GL中,降低了用 接着是1组纹理坐标构成.每1组坐标由,y2 Open GL构造复杂模型的难度,减少了图形建 个浮点修值定义. 模的工作量.在矿山物流系统的可视化仿真系 void ReadMapList(H3dsMeshObj *meshobj){ 统研究中,实现了在VC+环境下用Open GL控 word nv; 制3DS挖掘机、卡车模型,得到了满意的三维动 int n; 画效果.同样,还可以编制AutoCAD等多种图 dread(&nv,sizeof(nv)); 形接口程序,把在AutoCAD等软件中建立的三 meshobj->NumMaps-nv; 维物体模型引入Open GL的应用程序中,由此 meshobj->maplist= 进行矿山物流系统等领域的可视化仿真. (H3dsMap *)getmem(sizeof(H3dsMap)*nv); 参考文献 for(n=0;nmaplist[n].u,sizeof(float32)); 捷实现的软件,计算机仿真,2000,17(3):52 dread(&meshobj->maplist[n].v,sizeof(float32)); 2李畅,黄心渊,丁预展虚拟现实中体视动画的生成算 法.北京科技大学学报,2000,22(3):274 3桥林,费正广,林杜,等.OpenGL程序设计,北京:清华 大学出版社,2000.197 读人数据后,可以用Open GL绘图语句进 4,David J Kruglinski,VC+技术内幕.北京:清华大学出 行绘制.图1是在OpenGL中绘制的挖掘机图 版社,1999 Integrating VC++,OpenGL and 3DS for Visual Simulation Applications in Engineering ZHAO Wenguang,LI Zhongxue,LI Cuiping Civil and Environment Engineering School,UST Beijing.Beijing 100083,China ABSTRACT Three dimensional representation of entities is one of the key technigues in visual simulation of systems.To facilitate the 3D realization of a visual simulation environment oriented to engineering applic- ations,an integration of various graphical programming techniques can be used.An integration method of VC++,OpenGL and 3DS is used to develop a mining oriented visual simulation application,including the data format of 3DS,the transformation of 3DS data structure into VC++format,and the 3D representation ofentities by OpenGL.Technical details of the integration method are described and some examples of program seg- ments with a visual presentation oriented to mining application are illustrated. KEY WORDS visualiztion;modeling;open GL;3DS

点击下载完整版文档(PDF)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
已到末页,全文结束
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有