查看: 1432|回复: 0
打印 上一主题 下一主题

[3D动漫] 用AutoCAD获取仿真系统的三维模型

[复制链接]

2508

主题

2

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
32806
精华
12

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-3-27 08:50:47 |只看该作者 |倒序浏览
实体模型的描述
  仿真系统三维实体模型的建立,首先由现有的造型软件AutoCAD建立几何模型,然后通过它的数据交换文件DXF文件,仿真系统获得AutoCAD生成的实体模型的数据,建立系统自身的实体模型。
  一个完整的DXF文件由四个段和文件结尾组成,它们的顺序是:
  (1)标题段。该段记录了AutoCAD所有标题变量的当前值,这些标题变量记录了AutoCAD的当前工作环境。
  (2)表段。该段包含了七种表,按顺序是:视窗表、线型表、图层表、字样表、用户坐标表、尺寸标注式样表和应用程序标识表,这些表记录了当前图形编辑的支撑环境。
  (3)块段。该段记录了每一个块的定义,记录了这些块的名字、类型、基点及组成该块的所有成员。
  (4)实体段。该段定义了每个实体的种类,所在图层名、颜色、线型、厚度、实体描述字及有关几何数据。
  (5)文件结尾。只有“”和“EOF”两行。
  具体内容由若干组构成,每个组占两行,第一行为组代码,第二行为跟随值,组代码相当于数据名称的代码,跟随值是数据的具体值。DXF实体分类和IGES类似,几何实体包括如点、直线、圆弧、多义线、三维平面、轨迹等;描述实体包括如尺寸标注、属性定义、正文、块属性等;结构实体包括如型、块、子实体等。
  AutoCAD将形体表面作三角形剖分,即所有的表面(包括平面、曲面)都用三角形面片来近似表示。
  三维形体的几何、拓扑信息都记录在实体(ENTITIES)段中,其由多个POLYLINE实体描述组成,每个POLYLINE实体对应AutoCAD中的体素和由扫描产生的基本形体。
  POLYLINE实体描述中的信息包括:形体的所有顶点坐标;组成三角形面片的顶点号,顶点按符合右手法则的顺序排列。
  AME是一个真三维的实体造型系统,系统的输入主要采用CSG及扫描两种方式。实体在计算机内同时采用CSG及B-rep两种表示模式,先将用户的输入用CSG树的结构加以记录,然后随着造型进程转换为B-rep表示。从13.0开始,AutoCAD首次使用了ACIS(AmericaCommitteeforInteroperableStandard)技术,将实体造型系统集成到AutoCAD的核心模块上,实体造型已成了其基本功能。ACIS技术允许对实体做更完整更精确的描述,在建立复杂实体时,仍需对基本体素做布尔操作,但计算机内不再使用CSG树,而是利用ACIS机制生成实体的B-rep表示。
  3、系统所要求的模型数据结构
  系统中部件之间干涉检验的求交算法是部件间的边面求交,随后还要进行交点和三角形的包含性检验,以及判断部件是否相交,其中包括使用包围体的加速措施。算法要求点的几何信息,面方程的获得要求面和点的拓扑关系F→{V},边方程的获得需要边和邻面的拓扑关系E→{F},还需要边和端点的拓扑关系E→{V},部件及体素要求有包围体的数据。
  真实感图形的生成算法要求正确地计算各顶点的法向量,以反应物体真实表面,所以要有法向量数据。真实感显示还要求部件的材质信息。动画的实现要求部件的装配方向信息。布局调整要求部件的变换矩阵数据。在参考翼边结构的基础上,针对本仿真系统对各种信息、数据的要求,结合DXF文件的特点,特作如下处理:
  整个系统的图形由组成装配的各个部件(包括减速器、电机、万向节等)的图形组成,通常一个部件在同一次造型中完成,因此可将一个部件形体作为一个DXF文件输出,每个部件对应一个DXF文件,DXF文件中包括组成部件形体的所有体素,以及其边界数据。但是,DXF文件考虑的仅仅是几何、拓扑信息,而没有材质这样的物理信息,一个部件往往由不同材质的零部件组成,因此在真实感图形显示时必须有材质信息。为了增加材质信息,将同一材质的体素作为同一DXF文件输出,这样多个体素集组成一个部件形体。因此建立链表结构TXT记录装配部件的信息,链表结构DXF记录一部件中同材质的体素集的信息,链表结构POLYLINE记录体素的信息。
  由于AutoCAD记录体素的几何、拓扑信息使用的是B-rep表示法,因此针对体素,我们的仿真系统采用类似翼边结构的数据结构,建立了顶点、边、面链表结构,其中由于边链表的生成算法是通过遍历面链表,对应三角形面中的任意两个顶点都生成一条边,因此会产生一条边记录两次,为了方便删除链表结点,边采用双链表结构。点的几何信息包括点的坐标,以及点的法向量;面的几何信息包括面的属性,面的法向量以及其方程系数。建立了点、边、面间的三种拓扑关系,即E→{V},E→{F},F→{V}。数据结构下图所示。

  仿真系统实体模型的数据结构图  根据仿真系统的要求,用C语言描述的图形链表数据结构如下:
  typedefstructvertex{//顶点
  doublecoordinate[3];//顶点坐标(x,y,z)
  doublevector[3];//顶点法向量
  structvertex*next;//顶点链表中下一个节点
  }VERTEX;
  typedefstructedge{//边
  structedge*ahead;//边链表中上一个节点
  structvertex*vertex[2];//顶点链表中边的两个端点
  structface*face[2];//边的两个邻面
  structedge*next;//边链表中下一个节点
  }EDGE;
  typedefstructface{//面
  intattributte;//曲面标记
  structvertex*vertex[3];//顶点链表中面的三个顶点
  doublevector[4];//三角形面片的平面方程系数
  structface*next;//面链表中下一个节点
  }FACE;
  typedefstructpolyline{//体素
  structvertex*hvertex;//体素顶点链表的头节点
  structedge*hedge;//体素边链表的头节点
  structface*hface;//体素面链表的头节点
  floatboxvertex[6];//体素包围长方体的6个确定参数
  //(体素中最大和最小的X,Y,Z坐标值)
  structpolyline*box;//指向包围长方体的指针
  structpolyline*next;//体素链表中的下一个节点
  }POLYLINE;
  typedefstructdxf{//同材质体素集
  intmaterial;//材质
  structpolyline*hpolyline;//体素集的体素链表的头节点
  structdxf*next;//体素集链表的下一个节点
  }DXF;
  typedefstructheadedge{//边链表的头节点
  structedge*hedge;//边链表的头节点
  structheadedge*next;//边链表的头节点链表的下一个节点
  }HEADEDGE;
  typedefstructheadface{//面链表的头节点
  structface*hface;//面链表的头节点
  structheadface*next;//面链表的头节点链表的下一个节点
  }HEADFACE;
  typedefstructtxt{//形体
  charname[20];//形体名
  intdir;//装配方向
  doublematrix[3];//形体变换阵
  structdxf*hdxf;//体素集链表的头节点
  structheadface*hhface;//面链表的头节点链表的头节点
  structheadedge*hhedge;//边链表的头节点链表的头节点
  floatboxvertex[6];//形体包围长方体的6个确定参数
  //(体素中最大和最小的X,Y,Z坐标值)
  structpolyline*box;//指向包围长方体的指针
  structtxt*next;//形体链表的下一个节点
  }TXT;
  系统具体实现中,通过链表数据结构读入数据文件,建立组成仿真的各形体的实体模型主要步骤包括:
  (1)由读入装配文件建立各形体(TXT)的链表,以及形体的体素集(DXF)链表;
  (2)由DXF文件提供的各体素边界顶点坐标和面的顶点号,建立各体素(POLYLINE)链表以及它的顶点(VERTEX)链表和面(FACE)链表;
  (3)再由遍历面链表建立边(EDGE)链表;
  (4)根据形体各体素的边、面链表,建立形体的边(HEADEDGE)链、面(HEADFACE)链。
  4、结束语
  总结以上论述,将本图形仿真系统三维几何模型的实现过程简单归纳就是:根据设计结果,利用AutoCAD建立各部件的三维模型,输出DXF文件。模型的建立可采用交互式,也可采用参数化的方法,标准件可建立图形库。由仿真系统直接调用DXF文件,计算各部件在仿真系统中的插入位置,并确定仿真装配顺序及路径,建立装配文件。在实体模型基础上,在OpenGL环境中建立几何模型,实现真实感图形、装配动画、位置调整以及其他一些观察功能(如旋转动画、各个视图、放缩等等)。我们所介绍的这种方法,相信会对其它类似系统的图形建模提供借鉴。
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-16 09:24 , Processed in 0.295490 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部