三维生成(共8篇)
三维生成 篇1
随着3D建模技术、模型分割技术及在线3D模型库的发展,三维模型创新设计已成为一个热门研究领域,如何管理、重用现有网格模型,如何根据新的设计目标修改已有模型,现已成为三维建模的研究热点,三维模型的设计思路将从传统的软件建模,发展为快速寻找并重用现有模型进行模型生成。
由于传统的3D建模比较繁琐,近年来,一些利用已有模型进行模型生成的方法已被提出。Thomas等[1]提出了一种数据驱动合成方法,来构建三维几何表面模型,基于部件的几何相似性,通过交换将模型的部件进行融合与匹配,利用智能剪裁分割出所需部件的网格模型,并按照相应的方式将他们组合在一起生成新的三维模型。此方法只允许沿着现有网格的顶点和边缘进行分割与连接,不能自适应地分割三角形。Karevoy等[2]设计的一个模型生成系统(The Shuffler System),考虑部件的几何相似性和部件的接触信息,允许用户加载一组人工选定的兼容的三维模型,并快速交换模型之间的相似部分。该系统依赖于一种所有模型都兼容的分割方法,只能用于用户的当前模型不能用于其他模型,需要用户控制生成模型的形状以确保其合理性。Siddhartha等[3]提出了一种利用统计几何处理技术来进行数据驱动建模的方法,该方法支持开放阶段的建模过程,利用形状检索和形状对应,从简单的三维模型中获取一些组件,这些组件能被添加到设计者的当前模型中,激发设计者的创作灵感,但算法只考虑了几何属性,没有考虑部件的语义功能。Talton等[4]的探索性建模系统适用于数据驱动的方法来支持开放式三维建模。它依赖于一个参数化空间,在这个空间中设计新的三维模型。Bokeloh等[5]对三维模型进行分析,提取潜在的对接部位,使有意义的逆过程建模变的可能。徐凯等人[6]提出通过使用图像轮廓线约束变形零件,利用图像激发3D模型创作。形状生成的另一种方法[7]是基于统计模型创建实例,这是一种常用的纹理生成方法,将模型分解为多个纹理元素,然后重新组合这些元素生成新的模型。当生成的模型有一个复杂的层次结构时,基于局部相似性的统计模型是无效的。
本文通过计算已分割模型部件间的对称和接触关系,由粗糙到精细构建模型层次结构;然后根据位置信息对层次中的节点进行匹配以及层次结构的再生成;接着进行部件替换,生成新的模型;最后通过部件连接确保部件间合理接触。本文方法进一步简化了建模接口,不用直接操纵几何形状,能够在已有模型库的基础上自动、有效地生成一系列新模型。
1 形状分析
要实现模型的重组,首先对单个模型进行形状分析,包括接触分析、对称检测和层次结构生成。整个形状分析过程如图1所示。
由于模型分割技术的不断发展,现已存在大量的已分割模型库。为便于分析,首先对模型进行规则化处理,使其具有一致的主轴方向;进而采用将模型包围盒的最长边缩放为1的方法对模型进行归一化处理,使模型缩放的一个立方体内,采用的包围盒是Axis-aligned bounding box(AABB)包围盒,该包围盒是与坐标轴对齐的包围盒,构造简单,存储空间小,且能达到本文所需要求,故采用此包围盒。
1.1 接触分析
部件间的接触点描述一个模型的连接关系,找到模型中各部件的接触关系,并保存接触点,为后续分层和形状匹配做准备。接触分析过程如下所述。
由于每个三维网格模型都包含大量的三角面片,若直接计算两部件间三角面片是否有接触,计算量较大。为了提高程序运行效率,首先判断两部件的AABB包围盒是否接触,由于该包围盒包围物体时不紧致,即便两包围盒有重叠,还不能直接断定两部件有接触,需要进一步判断两部件的三角面片是否有接触。判断两三角面片T1(来自部件1)和T2(来自部件2)是否接触的流程图如图2所示:
其中判断交点是否在T2内采用的是同向法。假设三角面片的三个顶点为ABC,当沿着ABCA的方向在三条边上行走时,若点P始终位于边AB,BC和CA的同侧,则点P就在三角形内。利用叉积来判断P是否位于三个边同侧,连接PA,将PA和AB做叉积,再将CA和AB做叉积,若两个叉积的结果方向一致,那么两个点在同一侧。用点积判断两个向量是否同向,若点积结果同为1,则两向量同向,否则,两向量不同向。
按照上述过程遍历两部件的所有面片,将T1中与T2相交线段的两个端点中距离T2较近的端点作为接触点保存起来。遍历模型的所有部件,保存所有的接触部件和相应的接触点。
1.2 对称检测
对称检测是计算机图形学领域的热点问题,其广泛应用于三维几何模型的形状匹配、检索、对准、重网格化、模型分割等领域。对称性通常被视作连接三维形状低层几何属性和高层语义信息的桥梁,对称作为一种几何属性,其定义和检测可以完全基于几何信息,同时对称性对于模型结构和语义分析具有重要作用[8]。本文利用对称性对模型进行分层细化,并利用层次节点的对称来简化部件替换过程,提高程序的运行效率。
由于已将模型主轴方向处理一致,把x=0面作为对称面,只需计算x=0面的两侧是否存在对称部件。可根据两部件的AABB包围盒是否对称来判断两个部件是否对称。对称检测步骤如下:
1)判断两部件的AABB包围盒的中心距离是否小于某个阈值,若小于阈值则进行步骤(2),否则,可判定两部件不对称。
2)判断两部件AABB包围盒的对角线向量的夹角和长度是否分别小于某个阈值,若均小于各自的阈值,则两部件对称,否则两部件不对称。
经过实验验证分析,将两部件AABB包围盒中心距离的阈值threshold1设定为0.01,包围盒对角线夹角的阈值threshold2设定为5˚,包围盒对角线长度的阈值threshold3设定为0.01,可正确检测出模型中存在的对称部件。
1.3 层次结构生成
此过程为模型生成由粗糙到精细的层次结构,每一个层次包括若干个层次节点N,该节点由若干个相互连接的部件组成,并利用对称检测找到节点N的对称节点,记录节点N的各种信息,如节点中心、节点大小、父节点等,用于形状匹配。层次结构生成的流程图如图3所示:
用k表示层次结构的层号(k=0,1,2…n)。当k=0时,表示第0层,包含一个节点,这个节点包括模型的所有部件。当由较粗糙层k生成较精细的层次k+1时,将k层上的每个父节点分割成两个子节点,并把生成的子节点分配到k层上。若节点中存在对称的部件,分割时将把对称信息考虑在内,把对称的部件分别分配给两个子节点。若某些部件的中心距离分割平面非常近,则认为这些部件的中心位于分割平面上,并将这些部件添加到第三个节点中去。分割操作后,若父节点至少生成了两个子节点,并且每个子节点至少包含一个部件,则认为分割操作是成功的。若父节点中不存在对称的部件,或父节点中存在对称的部件,但基于对称面的分割操作不成功,则将父节点坐标系中的x=0面作为分割面,若此分割操作仍然不成功,则依次将y=0面、z=0面作为分割面进行分割。如果按任何一个分割面分割都不成功,则这个父节点只生成一个子节点,且包含父节点的所有部件。若分割成功,计算并保存每个子节点对应的节点信息。对称检测也将在每个子节点中进行,并记录节点中对称的部件。
由于在层次生成的过程中没有考虑部件间的接触信息,一个子节点中包含的部件可能是分离的。例如子节点中的一个或多个部件与其他部件不连接,这就需要重新调整层次k的节点,确保每个节点所包含的部件都是接触的。这一过程的步骤如下:
1)根据记录的部件间接触信息,重新调整k层的节点,原节点中如果存在分离的部件,则将原节点分成两个或多个节点。
2)为保证新生成的节点与原来的节点数目相同,需要对节点进行合并。将节点按体积大小排序,把体积最小的节点与其接触的体积也较小的节点进行合并。
通过以上分离和合并步骤,再次生成的每个节点所包含的部件都是一个整体,不再存在部件与部件间分离的情况。迭代进行以上分层过程,直至某个层次的每个节点都不能再进行分割,则层次构建结束。至此,形状分析过程完成,其结果将用于形状匹配。
2 形状合成
单个模型的形状分析完成后,对两个模型之间的形状进行合成,形状合成包括形状匹配、部件替换和部件连接三个部分。
2.1 形状匹配
一般情况下,两个模型所含的部件个数是不同的,所以部件间很难形成一对一的匹配。显然,由不同部件个数构成的模型生成的层次结构也不能实现一对一匹配,这就需要调整两个模型层次结构中每层的节点个数,以便形成节点间一对一匹配。如图4(a)所示,S1汽车模型作为原模型,S2卡车模型作为目标模型、每个模型的节点个数是相同的,但是为了形成一对一匹配,汽车车身将与卡车的两个部件卡车车身和尾部的一个轮胎相匹配,这样就会造成不合理的匹配。图4(b)是在匹配的过程中,为了适应S1的层次节点为S2生成的新的层次节点。
形状匹配算法实现过程如下所述:
1)构造一个与原形状S1完全相同的层次结构LS,使其每个节点都为空节点,得到一个与S1的层次结构完全对应的空层次结构,使其在形状匹配过程中起到纽带作用。
2)根据最邻近匹配原则,将目标形状S2在各层节点所包含的部件分配到与其对应层的对应节点,即将与原层次节点中心距离最近的目标层次节点的部件分配到新构造的层次结构的对应层的对应节点。如果在原节点中有两个节点距离同一个目标节点都最近,则判断目标节点距离哪一个原节点最近,将目标节点与其距离最近的原节点相匹配,并将目标节点所包含的部件添加到与原节点相对应的LS的节点中,这样与未被匹配的原节点相对应的LS节点就是空节点了。
3)新生成的层次结构中有空节点存在,将空节点移除,并将对应的原层次和目标层次节点合并到具有共同父节点且接触的节点里。如果对应的原层次或目标层次节点没有与其共享父节点的节点,则将其合并到当前层体积最小且与其接触的节点里。
对各个层次进行迭代,使S1和S2层次结构完全相同,每层的节点一一对应。模型的形状匹配过程如图5所示:
2.2 部件替换
形状匹配后,在层次结构的最精细层(最后一层)进行部件替换,,通过替换两个模型层次结构中最后一层相匹配的节点来生成新的形状。部件替换时要控制替换顺序,进而有规律的生成若干模型。具体的部件替换控制方法如下所述:
通过设置一个权重ω∈[0,1]来生成新的模型S(ω),其中新生成的模型S(0)=S1,S(1)=S2,。在形状生成的过程中,S1的部件只能被S2的部件替换一次,并且不再进行逆替换。这个过程通过以下方法来完成,用nk表示一个层次结构的第k层有n个节点,实例化一个新模型时令ω×nk个节点来自S2,剩余的节点来自S1,这样就能控制哪个模型的哪个节点被替换,有规律的生成若干模型。如果两个节点是对称的,则其同时被实例化或不被实例化。
在替换的过程中,随着ω的增大,索引小的节点将首先被实例化,为了使实例化时按照一定的规律生成新模型,将原模型S1最后一层的节点按照节点体积由大到小排序,同时将目标模型S2的最后一层也作相应的调整,以保证节点索引一一对应。这样体积大的节点将首先被实例化,新生成的模型将逐渐由S1向S2过渡。
2.3 部件连接
通过部件替换生成的新模型,由于不同部件的尺寸,坐标位置不同,替换的部件放置的位置可能不合理,这就需要重新调整部件放置的位置。用Cj,k代表两个部件间一系列接触点的集合,如果部件j在当前节点中,部件k在另一个节点中,则每个节点与其连接的节点的接触点P通过以下公式求得:
其中Pi为求得的部件j和部件k的接触点。如果原模型S1的部件j被目标模型S2的部件h替换,则将h所在节点对应的接触点平移到接触点P,并将h所在的节点作相同的平移,实现部件h和部件k良好接触。
3 实例验证
在Visual Studio2010开发平台下,采用C#编程对本文算法进行实例验证。下面以两个飞机模型为例详细讲解
本方法的实现过程,fighter1、fighter2的层次构建结果分别如图6、图7所示:
由图6 fighter1层次结构的第1层(即k=0)包括一个节点,这个节点包含模型的所有部件。节点中存在三对对称的部件,按对称平面将模型分割,得到k=1层上的三个节点,第1个节点包含右上、下羽翼和右引擎三个部件;第2个节点包含一个躯干部件,第3个节点包含左上、下羽翼和左引擎三个部件,利用对称检测得出节点1与节点3是对称的。接着再分割k=1层的节点,由于三个节点中不存在对称的部件,则先按x=0面分割,由于节点1包含的三个部件的中心位置都在x=0面的右侧所以导致分割不成功,再按照z=0面分割,由于右上羽翼与右引擎的中心都在z=0面的上方,这两个部件被分配到同一个节点中,右下羽翼的中心在z=0面的下方,被单独分配到另一个节点中去。同理,节点3也被分割成了两个节点。第2个节点只包含一个部件,因此不必再被分割。随着k=1层的节点被分割完毕,k=2层的节点完全生成了。按照以上过程依次生成第3、第4层的节点。图6中第4层中的每个节点都只包含一个部件,模型fighter1的层次结构构建完毕。
Fighter2层次结构生成过程与fighter1类似,不同之处在于对其层次结构的第2层进行了节点的再生成。第1层的节点中存在四对对称的部件,按照对称轴进行分割,得到图7中a、b、c三个节点,由于节点a和c中包含的部件存在分离现象,所以要重新划分节点,确保节点中包含的部件都接触。重新划分后,由节点a得到节点d和e,由节点c得到节点f和g。为了使节点个数与刚分割时的节点个数相同,需要对有接触部件的某些节点进行合并。将节点d、e、f、g、b按体积大小排序,使节点体积小的节点和与其有接触部件的节点合并,如果其与多个节点都有接触的部件,则将其合并到体积较小的节点中。由于节点e的体积最小,并且其只与b有接触,所以将节点e合并到节点b中;由于节点f与节点e对称,节点f也同时被合并到节点b中,合并之后得到三个节点,与刚分割时的节点个数相同,停止合并。通过节点的重划分和再合并生成了图7中k=1层的三个节点,它们包含的部件都是相互接触的,说明节点再生成完毕。
fighter1与fighter2层次结构中最后一层的匹配结果如图8所示:
图8中节点索引按照体积大小得到,当索引为0时,代表节点体积最大,替换时将首先被替换。图中1和2,3和4,5和6分别对称,节点替换时对称的节点将被同时替换。fighter1与fighter2模型重组的结果如图9所示:
fighter1与fighter2模型重组之后得到的部分新模型接触不合理,如图9所示的shape1,左、右下羽翼与躯干没有接触。对模型进行部件连接后得到的结果如图10所示,可以看出模型部件间接触良好。
图11为若干模型重组结果实例,重组结果显示本文方法可以较好地实现两个来自同类模型集中模型间的重组,生成的新模型较为合理。
4 结论
本文实现了一种基于部件替换的三维模型生成方法。在形状分析阶段中考虑了单个模型部件间的接触和对称关系,并为每个模型生成一个由粗糙到精细的层次结构;形状匹配过程通过节点中心的位置关系实现节点一对一匹配;部件替换时通过节点体积大小和权重ω来控制新生成的模型形状;对新模型进行部件连接以实现节点间合理接触。由于匹配时仅考虑位置信息,所以本文方法对部分同模型集的模型适用,对一些比较复杂或不同模型集中的模型难以适用,可能会导致重组生成的新模型在结构上不合理。下一步研究将通过增加一些约束条件优化本文算法,使其适用于更多更复杂的模型,使重组后生成的新模型更加合理且更加多样化。
摘要:对给定的两个三维模型进行层次构建与部件替换,生成一系列新颖的模型。首先对模型进行接触分析、对称检测和层次结构生成;然后通过形状匹配确保两个模型生成的层次节点一对一匹配,进而通过部件替换生成若干模型,最后进行部件连接确保模型的接触合理性。实验表明,该方法可以快速生成一系列与原模型在外观上有所不同,但具有类似的对称和邻接结构的新模型。
关键词:层次结构,形状匹配,部件替换,部件连接
参考文献
[1]Funkhouser T,Kazhdan M,Shilane P,et al.Modeling by ex-ample[J].In Proc.SIGGRAPH,2004,23(3):652–663.
[2]Kraevoy V,Julius D,Sheffer A.Shuffler:Model compositionfrom interchangeable components[J].In Proc.Pacific Graphics,2007,129–138.
[3]Chaudhuri S,Koltun V.Data-driven suggestions for creativitysupport in 3d modeling[J]ACM Trans.Graph.,2010,29(6):183–183.
[4]Talton,J.O,Gibson,Yang,L,et al.Exploratory modeling withcollaborative design spaces[Z].ACM Trans.Graph.2009.
[5]Bokeloh M,Wang M,Seidel H.A connection between partialsymmetry and inverse procedural modeling[J].In ACM(Sig-graph),2010,29(4):104:1–104:10.
[6]Xu K,Zheng H,Zhang H,et al.Photo-inspired model-driven3d object modeling[J].ACM Siggraph,2011,30(4):80:1-80:10.
[7]Efros A,Leung T.Texture synthesis by nonparametric sam-pling[J].In Proc.ICCV,2002,2:1033–1038.
[8]Mitra N,Pauly M,Wand M,et al.Symmetry in 3D geometry:Extraction and applications[R].In Proceedings of Euro graph-ics STAR Report 2012.
三维生成 篇2
复杂外形三维非结构粘性直角网格的生成
在保证非结构网格逻辑关系不变的条件下,采用光顺、投影、分层加密的方法,解决直角网格物面不贴体的`难点,建立三维非结构贴体直角网格生成系统,以适应粘性流场和湍流的计算,同时对自适应网格的流场计算进行研究.对航空航天领域几类复杂外形飞行器进行了三维非结构贴体直角网格的生成.
作 者:李盾 Li Dun 作者单位:航天科技集团公司第十一研究院,北京,100074刊 名:计算机与数字工程 ISTIC英文刊名:COMPUTER AND DIGITAL ENGINEERING年,卷(期):35(3)分类号:V2 TP3关键词:直角网格 贴体 自适应 复杂外形
三维生成 篇3
关键词:扫描线法,三维生成,Z轴拉伸
0 引 言
在较早期的设计和测量中,其成果一般都是采用平面矢量图形数据格式保存。而现代的应用中不再满足于二维图形,因而需要把前期的平面矢量图形改造成三维的图形。
1 DWG格式二维图形数据结构分析
因为AutoCAD是二维矢量化绘画中最早使用,也是最好使用的绘图软件,因而其DWG格式的平面图形积累到现在已非常多。其本质就是存储在AutoCAD数据库中的数据,称为数据库对象(DBObject)。它是一幅AutoCAD图形的基本组成部分,包括可见几何实体对象和不可见的非几何对象等,一组符号表和有名对象字典是AutoCAD数据库的关键组成部分。由于它们又包含了其它对象,因而称为容器对象(Container Object),容器对象的作用是组织和管理数据库对象。
AutoCAD数据库主要包括9个符号表和对象字典。9种符号表分别是:①块表(BlockTabLe);②尺寸样式表(DimStyleTable);③层表(LayerTable);④线型表(LinetypeTable);⑤应用程序注册表(RegAppTable);⑥文字样式表(TextStyleTable);⑦用户坐标系表(UCSTable);⑧视口表(ViewportTable);⑨视窗表(ViewTable)。
对象字典是存储一般对象的容器,可用来存储任何数据库对象和子类,主要包括组(GROUP)和多线(MLINE)两个数据库字典。用户可以创建一个新的对象,并存储于对象字典中。
2 二维矢量图三维生成算法
对于DWG格式二维图形,首先采用扫描线对其进行预处理,使其成为单独的图元,并检测其区域联通性,判别其是否为独栋建筑。如果是,就赋予该建筑物的层数和层高,屋顶类型、屋外墙面特征等信息;如果不是,就判别其为平面,为其设置平面域显示颜色,如绿色的草地。当系统读取处理后的二维图形数据时,同时也读取其预处理后的属性,采用Z轴拉伸算法使其简单变成三维立体,然后根据屋顶形状进行叠加,根据屋外墙面特征进行贴图,最后根据光线消隐算法以及透视算法生成具有真实感的三维图形。
3 三维生成算法在某房地管理系统中的实现
某市国土与房地产管理局的管理系统中,用户在日常的管理中需要各种图形提供直观的支持,因而需要对二维图形数据进行可视化。其二维图形数据一般是由国土局测绘队自己测量后用AutoCAD绘制的矢量图形数据,同时也来源于房地产商申报房地项目提交的设计规划图纸。经过分析和研究,采用上面论述的各种算法,基本实现了图形数据的三维可视化。其图文一体化操作界面如图1所示。
在该系统中对二维数据进行Z轴高度拉伸主要采用
的是ArcGIS的3D Analyst高级扩展模块,利用它的ArcScene和 ArcGlobe两个专门的三维视图工具,能够有效地管理3D GIS数据、进行3D分析、编辑3D要素、创建3D图层以及把二维数据生成3D要素。
下面就是该系统实现从二维图形通过Z轴高度值进行三维拉伸形成3D图的部分代码:
4 结语
随着计算机技术的高速发展,用户对图形的要求不再满足于二维。三维图形具有真实可视性,对二维图形的三维生成的研究具有重要的现实意义。本文在研究了平面矢量图形数据的结构后,提出了一种三维生成算法,并把它应用于某房地管理系统中,提高了系统的可视化操作性,为高效准确的房产和国土管理提供了可靠保障。
参考文献
[1]张玉芳,刘君,彭燕.一种改进的扫描线多边形填充算法[J].计算机科学,2005(6).
[2]沈润泉.改进的基于Z缓冲器和扫描线算法的消隐技术[J].科技信息,2008(1).
[3]熊丽华,杨峰.基于ArcSDE的空间数据库技术的应用研究[J].计算机应用,2004(3).
三维生成 篇4
Web自20世纪90年代初诞生以来,经过20多年的发展,现在已经成为Internet上最重要、最普及的应用,从HTML 1.0到2.0,3.0,4.0,XHTML以及现在的HT-ML 5.0,但至今为止,主流的Web页面仍然是二维的,随着3D技术的日益普及,下一代Web技术正朝着3D方向发展。2013年5月,HTML 5.1正式草案公布,新增了Canvas标记,通过Web GL,允许浏览器直接在上面绘制矢量图形,目前HTML 5和Canvas 2D规范的制定已经完成。three.js是由Java Script编写的Web GL第三方库,是一款运行在浏览器中的3D引擎,可以用它在Web中创建各种三维场景,比如3D对象、摄影机、光、影、纹理、材质、动画等。与传统的Web3D技术(如Flash3D、Unity3D、Silverlight等)相比,three.js的优势在于它不需要在浏览器中安装插件,用户可以通过Java Script直接控制Web页面上的3D场景,不足之处在于它需要浏览器支持Web GL,到目前为止,火狐、谷歌等浏览器都支持Web GL,但微软的IE浏览器要11.0以后的版本才支持。
现在,主流的Web仍然是二维的,文本、图片、声音、视频仍然是Web的主要内容。通过与传统的Web技术相结合,three.js可以将二维数据以三维方式呈现出来,3D场景漫游将成为Web的主要内容,这对Web的影响是革命性的,本文重点探讨基于three.js引擎的各类三维模型的生成与处理技术。
1 数据驱动的三维建模
3D建模是构建三维场景的一个基本问题,一般的方法是先建模,然后渲染,最后输出成某种特定格式的模型或动画。当模型有变化时,必须重复执行上述步骤,也就是说,渲染结果一旦输出,就不可修改,无法实现实时变化。
Web的后台主要是数据,3D只是一种数据呈现方式,通过后台的数据驱动前台的3D场景和动画,即是数据驱动的三维建模,其意义在于通过修改后台的数据,即可触发前台3D场景的变化。
1.1 数据驱动建模的基本原理
与一般的建模不同,Web上的建模涉及带宽问题,模型数据需要先从Web服务器传输到客户机上,然后才能进行渲染,因此,模型本身不能太大,否则容易引起网页不响应;另外,由于Web是实时交互的,因此,模型数据要在后台以异步方式完成传输,如AJAX;由于three.js是基于Java Script的,模型数据的格式最好能与之匹配,如JSON。
综上所述,Web3D建模过程的一种合理方式是:先通过Web服务器端的技术(如Asp,Java等)将后台数据格式转化成JSON格式,再以AJAX的方式将数据送往客户端,然后利用Java Script调用three.js中相应的API,将数据以三维的方式显示出来,其原理如图1所示。
1.2 数据驱动建模案例
下面的例子展示了一个基于Access数据库的数据(见图2)驱动的三维动画,描绘了太阳及其邻近的六大行星的运转情况,通过修改后台数据,可触发前台页面3D场景的实时变化,如图3所示。
如图2所示数据定义了模型(各星球)的形状(球形)、大小(半径)、坐标(距离太阳的距离)、外观(贴图文件)、运动方式(自传和公转的速度及方向)等基本属性,是一种很普通的关系数据。
在向浏览器端传输这些数据时,为减少数据转换的工作,一般采用JSON格式(和Java Script天然适应)。另外,由于浏览器在渲染三维动画时比较消耗资源,一般采用AJAX异步通信方式(几乎所有的浏览器都支持)。
接下来调用three.js中的Sphere Geometry(球体)函数显示这些星球即可。最后,为提高Web的交互性,可以加上3D声音和场景控制(如第一人称视角)。
几个关键步骤的代码如下:
(1)将模型数据格式化成JSON格式
(2)通过AJAX获取模型数据
(3)通过three.js引擎生成3D模型
该方法的局限性在于他只能表示一些基本的、规则的三维模型,如立方体、球体、锥体等,模型本身所需要的数据很少,而且可以方便地通过关系数据库存储,因此,在实践中有一定的局限性。
现实中各类工业模型一般会复杂得多,而且很难直接通过数学函数来表达,而且他们一般都使用某种专门的工具建立,具有某种特殊的格式,如Autodesk 3DS Max下的.3ds,Wavefront下的.obj等。
2 复杂静态三维模型的导入及处理
一个典型的静态三维模型中包含了几何体顶点、贴图坐标点、顶点法线、线、面、曲线、曲面等信息,将这些数据以关系数据库的方式存储是不太现实的,因为数据量太大且难以控制。更好的处理方式是直接在建模工具中将模型建立好,然后输出成特定格式的模型文件,直接在Web3D中加以利用。这就涉及到三维模型的导入及处理问题。
由于没有一个统一标准,过去用于工业建模设计上的交换格式,例如Autodesk 3DS Max下的.3ds和Wavefront软件下的.obj,现在成为了最具代表性的两种主流静态模型格式。其中.obj格式由于没有专利限制,使用文本存储,而被大家广泛采纳。
Three.js中的OBJLoader()和OBJMTLLoader()类专门用于导入和处理obj格式的模型,下面的代码导入了一个挖掘机的静态模型,如图4所示。首先在建模工具中建立好模型,然后输出成.obj格式,假设模型文件命名为“wjj.obj”,导入模型的关键代码如下:
静态模型本身是静止的,程序能做的事情只能是改变他的坐标位置、旋转角度和显示比例,通过改变这些参数,也可以实现三维动画效果(参考第一个例子)。
3 复杂动态三维模型的导入及处理
一个典型的动态三维模型中包含了顶点、纹理、骨骼、蒙皮、动画等信息,与静态模型相比,动态模型需要存储的信息更多,控制也更复杂,因此也更加适合用导入的方式来处理和使用。
随着硬件和技术的发展,三维建模逐渐从静态模型向“帧动画”和“骨骼动画”发展,ID Tech下的.md,Autodesk下的.fbx,以及非盈利性组织Khronos负责维护的.dae格式成为了主流的动态模型格式。各种模型格式之间可以通过插件互相转换,因此对于Web开发者来说,并不需要完全弄清每种模型的详细格式,选择当前最为流行的一种格式即可。
Dae格式由于其开放性而成为目前应用最普遍的一种动态三维模型格式,他使用XML格式存储,结构灵活,运用自由度很高,图5展示了一个典型的dae文件结构。
对于动态模型来说,将其导入到三维场景的方法和静态模型是基本相同的,但动画部分需要程序员通过Java Script来控制,这是难点所在。
Three.js中的Collada Loader()类专门用于导入和处理dae格式的模型,下面的代码展示了一个顶点变形动画模型在导入和处理过程中的关键代码:
在Web3D中,动态模型一般是循环播放的,three.js通过request Animation Frame函数实现动画效果,它很类似于set Time Out函数,但又略有区别,一是当标签页失去焦点时,它就不再运行了,二是该函数目前还是依赖于浏览器的,以后可能还有变化。
4 其他三维模型的导入及处理
其他常见的3D模型格式还有:vtk,wrl,utf8,stl,ply,JSON等,这些模型中的大多数three.js都提供了相应的接口,如:CTMLoader,PLYLoade,Binary Loader,VT-KLoader,STLLoader,UTF8Loader,VRMLLoader等,在处理方法上与obj或dae格式大同小异。
5 结语
至此,完成了数据驱动的三维模型、复杂的静态三维模型和复杂的动态三维模型的处理工作,大多数情况下,这三种模型能够支持一个完整的3D场景了。与普通的视频不同,在Web3D中,由于所有的动画都是实时渲染的,对CPU和GPU资源的消耗很严重,对于大型的3D场景,要有一定的优化措施。
(1)渲染效率问题
笔者曾做过实验,在3D场景中加入一个半径为2 000的球体,如果加上灯光和阴影,在一台普通PC机上需要近2 min的时间才能渲染出来(Fire Fox浏览器),如果再加上动画,网页基本处于“未响应”状态。造成这种情况的根源在于three.js是以三角形为基础来构建3D模型的,在一个半径为2 000的球体平面上会有大量的三角形,他们都需要独立渲染。因此,在进行Web3D开发时,应尽量减少使用弧面模型,如果必须使用,则应尽量缩小其尺寸。
(2)碰撞检测问题
Three.js没有提供碰撞检测机制,即在改变模型的坐标时,会出现一个模型进入另一个模型内部的问题,这部分工作需要开发者自己编程解决,一种简单的算法是AABB算法,即沿坐标轴方向的包围盒算法。
参考文献
[1]谭文文,丁世勇,李桂英.基于Web GL和HTML5的网页3D动画的设计与实现[J].电脑知识与技术,2011(28):6981-6983.
[2]苏雪.基于Web GL标准的家庭娱乐终端上Web3D渲染的实现[J].长江大学学报:自然科学版,2011(12):102-104.
[3]刘爱华,韩勇,张小垒,等.基于Web GL技术的网络三维可视化研究与实现[J].地理空间信息,2012(5):79-81.
[4]殷周平,吴勇.基于Web GL和AJAX的Web3D应用研究:以在线3D协作交互式设计为例[J].安庆师范学院学报:自然科学版,2013(1):58-61.
[5]霍冬,郑伟华,盛步云.基于Web GL的机械产品三维展示技术研究[J].制造业自动化,2013(18):73-77.
[6]方路平,李国鹏,洪文杰,等.基于Web GL的医学图像三维可视化研究[J].计算机系统应用,2013(9):25-30.
[7]韩义.Web3D及Web三维可视化新发展:以Web GL和O3D为例[J].科技广场,2010(5):81-86.
[8]方强.基于Web GL的3D图形引擎研究与实现[D].合肥:安徽大学,2013.
三维生成 篇5
关键词:纹理特征,网格细分,二叉树,三维地形
(一) 引言
地形三维可视化计算近年来一直是相关领域的热点研究问题, 在三维仿真和虚拟地形环境中占有十分重要的地位。关于虚拟环境中三维地形的生成大多数是采用简化算法, 在保留地形细部特征的同时来提高其显示效率, 在简化过程中, 需要对消除裂缝、T型连接和简化模型误差度量等进行计算。本文给出了一种无需考虑消除裂缝和连接计算的三维地形生成方法, 依据地形纹理特征曲线从低精度网格地形向高精度网格细化, 使得平坦的地形区域用少量的三角形网格绘制, 起伏较大的地形区域用较多的三角形网格显示, 也形成一种多分辨地形模型结构, 以提高显示质量和效率。
(二) 方法依据和思路
在三维地形场景中, 虽然地形表现为三维模型, 但表示地形的DEM数据可以等价于由高度场生成的二维灰度纹理图像, 亮度变化小的地方, 表明此区域较为平坦, 亮度变化大的地方, 此地形可能山脉、谷等区域, 而“灰度图像边缘”正可以用来描述纹理图像局部区域亮度变化显著的部分。若能在三维空间中细化“边缘特征曲线”周围的网格正是本方法的关键思路所在, 使得边缘特征曲线周围网格密集, 增强其几何特征。
方法实现基本步骤及思路:
(1) 采用图像处理技术, 对地形高程灰度图像进行边缘检测, 从中提取图像的边缘曲线, 作为下一步网格细分的依据。
(2) 将含有地形特征曲线的图像作为纹理, 映射到一个低精度平面网格上。
(3) 根据三角边与它的纹理特征曲线相交情况来细分网格, 细分后的地形网格存储在二叉树数据层次结构中。
(4) 根据高程图像灰度值为地形网格的每个顶点赋予高度值, 最后绘制二叉树结构中所有叶子数据就是地形最终显示结果。
(三) 方法实现过程
1. 网格模型的定义
三角网格除了是由三维空间中的三角片通过边和顶点连接而成的分片线性曲面外, 我们将纹理图像信息作为曲面描述数据定义在网格模型中, 便于细分网格时作为参考对象, 以及增强显示效果, 所以, 这里网格M可以定义为一个三元组, M= (K, V, U) 。
其中, U={u1, …, um}, uiЄR2表示像素点在二维纹理图像中的坐标。
V={v1, …, vm}, viЄR3表示网格M的顶点在三维空间中的位置。
K为表征网格拓扑结构的单纯复形, 一个单纯复形包含一组单形, 其中{i, j}称为边, 记为L;{i, j, k}称为三角形面, 记为T, 三角形每条边最多只能包含在两个三角片中, 并且一个顶点和一个纹理坐标相对应。
2. 网格三角面拆分过程
网格细分的主要目的是为了增加网格细节层次;在地形网格模型中, 这种细节层次主要表现在地形的起伏特征, 根据地形起伏特征自动调整三角网格绘制数量, 在起伏大的区域, 三角网格数量多, 平坦区域, 三角网格数量少;首先预生成一个规则初始地形网格M0, 将含有地形纹理特征的图像映射到网格M0中, 经过网格n次细分, 生成M=M0→M1→M2…→Mn序列, 设T是M0经第i次细分的网格模型Mi中一个三角形, 对T细分过程如图1所示。
因为每个三角形网格顶点都有一个纹理坐标 (ui, uj) 相对应, 首先沿着三角形的绘制方向判断边和特征曲线是否相交, 那么新的交点与该边对应的顶点连线, 将三角形拆分成两个;在图1中的虚线表示地形纹理图像特征曲线, 图1 (a) 中的v1、v2和v3是三角形与特征曲线交点, 首先边{1, k}将三角形T拆分成T1、T2两个三角形, 然后边{2, 1}将T2拆分成T3、T4, 边{3, 1}将T1拆分成T5、T6。将新的顶点v1、v2和v3映射回三维空间, 依据地形高度场赋予新的高度值。一个三角形可能被拆分成4个、3个、2个三角形或不被拆分4种情况, 这样完成一个三角形的细分, 其它三角形网格采用同样的方法, 最终完成整个地形网格模型的细分, 即Mi→Mi+1。
由上述三角面拆分过程, 可以得到图2所示的二叉树细分层次结构。图中的某一层Mx的叶子或没有子树的根是该层网格模型最终绘制结果, 层次越深, 细化程度越高, 树型分支和叶子数量增多, 导致绘制的三角形网格数量的增多。
网格地形的简化过程, 是细化过程的逆过程, 而且无需判断三角形边的拆分情况, 只需将某一层Mx的三角形网格的子树和叶子删除, 就可以达到简化的目的。
3. 细分规则
由于存在提取的边缘线可能与三角形边有多个交点且细分后的三角形法线方向确定等问题, 约束了细分网格效果, 所以, 为了得到较为理想的生成结果, 需要对网格按照一定的规则细分和绘制。
(1) 为了使细分前和后三角面法线方向一致, 避免绘制三角面空洞现象, 将细分后的三角面绘制方向与上一级的三角面绘制方向应该保持一致, 如:三角面T的绘制方向为vivjvk, 那么拆分后的三角面T1、T2的一种绘制方向分别为viv1vk和v1vjvk。
(2) 在三角面细分过程中, 当新增加的拆分顶点v′与该边的端点很接近时, 造成细分后的某一三角形与细分前的三角形很接近, 分裂前后几乎没有发生变化, 即图3中的T2≌T, 所以应给出ωЄ (0, 0.5) , 当|v'-vi|<ω|vj-vi|或|v'-vj|<ω|vj-vi|时, 则新增加的顶点v′为无效点, 此时三角面T的边{i, j}不被拆分。
(3) 三角面的边可能与边缘线存在多个相交点, 为了保证三角面尽可能地均匀地被拆分, 取三角形边中点最近的交点作为该边的拆分点, 即:拆分点P要满足up={|up-0.5× (ui+uj) |}min。
(4) 按照三角形绘制方向来拆分三角形, 如图1中三角形T的绘制方向为vivjvk, 那它的拆分顺序是边vivj, vjvk, vkvi。
(5) 拆分顶点应与最近被拆分的三角形顶点连线来拆分该三角形, 如图1中 (b) 的拆分顶点v2与最近被拆分的三角形T2顶点v1连线来拆分T2, 而不是与三角形T的顶点vi的连线。
4. 数据结构描述和实现过程
根据上述细分过程, 地形网格细分数据可以采用结构规范、搜索较快的二叉树存储, 将每个网格三角形拆分为两个三角形, 拆分前的三角形作为二叉树的根节点, 拆分后的两个三角形作为根节点的子节点, 若子节点不能够再拆分, 则这两个三角形称之为叶子;这些三角形逻辑上就像一组相连的邻居 (左右邻居) , 在细分完地形后, 就建立了三角网格二叉树型结构, 树的叶节点保存了图形绘制缓冲区中的三角形, 针对二叉树描述地形网格特点, 本文如下描述网格二叉树结构:
随着细分层次的增加, 三角形顶点的数量也不断增加且不固定, 因此顶点可以采用链表结构进行存储, 而变量m_vertexIndices就存储了链表队列中的位置;levelNUM代表了三角形拆分过程中所在的层次, 相当于图2中的M层次位置, 便于细化和简化的判定;canDivide是为了提高细分速度, 用来存储该三角形是否能再次细分, 若不能再细分, 就不用再判断二维纹理中三角形各边与特征曲线相交状态。
首先提取由地形的高度场得到灰度图的特征曲线图形, 将基本网格坐标映射到特征曲线的二维平面中, 那么在二维平面中也构成了网格, 判断网格与特征曲线相交情况, 产生新的顶点和三角形网格, 特征曲线密集的地方, 网格细分程度越高, 从而得到的三维地形中, 在地形平坦的地方以最少的存储空间, 起伏变化大的地方用较多的存储空间;如图3所示。
(四) 方法测试
测试目的:采用基于图像纹理特征网格细分的三维地形生成方法对显示效率、质量的影响和关系。
测试手段:
使用C++语言, 以OpenGL作为底层的图形接口, 在C++Builder6.0编译环境中进行测试。建立了CLand (地形生成类) 、CPicture (图像处理类) 、BST (二叉树类) 、CMath (数学计算类) 、CView (窗口显示类) 等主要类。在PⅣ1.8GHz, 256MB内存, Geforce3 64MB显卡机器上, 在800×600窗口, 水平视角450, 误差限2个像素情况下, 定义初始的规则网格数据M0为30×30×2=1800个三角片;原始网格定义为511×511×2=522242个三角片 (数目是根据高程灰度纹理分辨率定义) , 并赋予高度值;细分程度定义为细分后的三角形数目与原始网格三角形数目的百分比;误差定义为原始网格和细分网格的双边Hausdorff距离与原始网格的包围盒对角线长度的百分比, 其测试数据如表1所示, 绘制效果图4所示。
测试结果:在显示效率不低于30帧/秒时, 其中M3能清楚地描述地形几何特征, 误差较小, 显示效率可以达到32帧/秒, 且地形特征变化明显 (图4的 (a) , (b) 比较) , 从M0~M3误差变化较大, 表明能够迅速收敛于地形细节特征;当显示效率低于30帧/秒时, 地形特征变化并不明显 (图5的 (b) , (c) 比较) , M4~M6误差变化小, 而且显示效率并不理想。所以, 在方法应用中, 通常需要给出x={fFS (Mx) ≥FS}max测试程序, 即在满足显示效率的同时, 最大限度地提高其显示质量, 目的是兼顾3D模型显示效率和显示质量, 其中fFS () 用来测试网格Mx显示效率, FS是预先给定的显示效率常数, 如本文以30帧/秒显示效率作为分界线, x是多层次模型最大细分网格深度, 如本文x=3。在实际程序运行过程中, x会根据给定的FS值, 通过网格细化和简化自动调整其网格绘制深度。
(五) 结论
本文给出了一种基于纹理图像特征网格细分的三维地形生成方法, 方法思路简单且容易实现, 通过提取地形高程特征值作为网格细分依据, 形成多分辨率地形模型结构, 使得显示效率和保留地形细节特征尽可能兼顾。从第3节可知, 由于采用三角边拆分方式, 共享该边的一个三角面被拆分, 另外三角面一定被拆分, 因此, 不存在消除裂缝和连接计算, 在一定程度上减少程序设计的复杂过程。
另外, 该方法还可以结合“视点相关”三维地形显示技术, 在显示效率方面还会进一步提高, 这是今后的主要工作。
参考文献
[1]李偈, 张松海, 刘强.一种基于四叉树结构的动态多分辨率地形模型[J].计算机工程与应用, 2006, 42 (7) :202-204.
[2]杜剑侠, 李凤霞, 战守义.LOD算法研究及其在地形实时显示中的应用.计算机工程与应用, 2005, 41 (13) :211-231.
[3]韩敏, 汤松涛, 李洋.大规模地形实时可视化算法[J].计算机工程, 2008, 34 (13) :270-272.
[4]张立强, 杨崇俊.多进制小波和二叉树实现大规模地形的实时漫游[J].计算机辅助设计与图形学学报, 2005, 17 (1) :467-472.
三维生成 篇6
利用UG软件制作的工程图是三维空间到二维空间投影变换得到的二维图形, 这些图形严格地与三维模型相关, 用户一般不能在二维空间进行随意修改, 因为它会破坏零件模型与视图之间的对应关系。用户的主要工作是在投影视图之后, 完成图纸需要的其他信息的绘制、标注、说明等。
工程制图的内容包括: 制图标准的设定、图纸的确定、视图的布局、各种符号标注 ( 中心线、粗糙度) 、尺寸标注、几何形位公差标注、文字说明等。UG工程图是机械设计流程中的重要组成部分, 它既充分反映了机构整体设计的思路, 也为指导生产提供了重要的参考数据。它能与三维图形相关联, 当三维图形发生任何变化时, 其二维图形也会随之改变, 使二维图形与三维模型之间保持一致。
工程图模块是一个相对独立的操作环境, 不仅可以通过投影获得零部件的基本视图, 还可以自动生成投影视图、剖视图、局部放大图等辅助视图, 并对视图进行编辑、标注等操作。利用UG制作的工程图和利用AUTOCAD绘制的图形是可以互相转换的, 这个过程称为数据转换。
应用UG软件的实体建模功能, 将设计需要的零件在建模界面下绘制出来, 并在软件上利用装配模块功能进行检查干涉、动画演示、间隙分析、重量管理等工作, 然后按照比例、投影等关系创建所需要的各种视图。这样做可以使设计的过程更加清晰、直观、全面, 使设计的部件更加合理, 效率也会有所提高, 而且整个部件的二维图和三维图之间就不用相互转换了。
UG是一个CAD / CAE / CAM一体化的机械设计软件, 它的功能涵盖了产品设计开发的所有过程, 拥有集成的产品开发环境。利用UG的三维实体创建工程图步骤如下: ( 1) 利用UG的建模模块, 将实际测量或设计的三维实体建立起来; ( 2) 利用UG的制图模块, 添加由建模功能模块创建的三维实体, 通过调整图纸尺寸、比例, 设置投影方向、剖视图的选用, 最后对各个视图进行尺寸的标注和文字的注释。
2 UG工程图的整体设计过程
以四通管道的二维工程图制作过程为例[1], 利用UG的二维工程图制作的主要步骤:
( 1) 利用UG的建模功能绘制出四通管道的三维实体造型, 如图1 所示, 实体特征绘制要求详细、准确。
( 2) 应用工程图功能模块, 创建工程视图。在制作工程图过程中, 视图在整张工程图中起到主导作用, 需选用合适的图纸及比例。当模型相对复杂时, 不同方向的视图对表达零件的整体影响较大, 需选用适当的视图方向。
在UG工程图模块中, 应用投影命令自动投影生成主视图、左视图、全剖的俯视图及轴测图, 如图2所示。
( 3) 利用生成的视图, 完成尺寸及公差标注、标题栏及文字的注释, 得到完整的二维工程图, 如图3所示。
( 4) UG转换DWG格式: Output As栏的默认值为UGPart File, 即转换成UG2Dprt文件, 可以用UG2Dprt作为过渡有效地解决上述问题。先导出UG2Dprt文件, 然后用该文件来进行外部DWG转换。直接用2DExchange转DWG从File→Export→2DExchange进入到2DExchange的参数设置对话框。指定转换源默认方式为Existing Part, 这时Choose Part按钮是激活的, 可以在文件夹中选择需要转换的部件; 若用SelectfromDisplayed Part选项, 则Class Selection按钮激活, 使用这种方法在装配图中只能选到已经全部加载的部件。
默认的投影对象在尚未创建工程图的情况下为当前工作视图, 在有工程图的情况下为最早创建的工程图, 可以根据需要自由选择。Output To选项在投影对象为视图时灰显, 只能是默认的Modeling项; 当投影对象为图纸时, 可选输出到Drafting, 这样可以创建一个只有工程图而没有模型的文件, 但再用该文件转出的DWG会出现图形与文字标注等分别在图纸各模型空间, 执行缩放操作会使图形与文字标注错开来。把Output As栏设为UGPart File, 然后点击Specify OutputFile指定文件名再按OK就可以转换出UG2D文件了。
( 5) 应用UG生成的工程图符合欧洲标准, 但是有些细节功能和我国的标准有一些差异, 且UG在尺寸标注、公差处理等方面还有些差强人意。AUTOCAD是目前国内使用最成熟、应用最广泛的二维机械设计制图工具, 是机械设计工程技术人员都能够熟练应用的绘图软件, AUTOCAD能够利用打印机或绘图仪输出图纸[2], 对于生产和设计人员来说十分方便且技术要求不高。
为了弥补UG工程图中标注、文字注释和线型等缺点, 在UG二维工程图的制作过程中不进行文字注释, 也不管线型, 而以DWG格式输出, 导入到AutoCAD2006 环境中[3,4], 完成图层的定义、汉字的注释, 并对尺寸标注风格进行修改。
摘要:利用UG软件绘制二维工程图, 由于其尺寸关联的特性, 可以有效避免三维实体图修改后二维图的重复更改, 节省时间, 具有较高的设计效率。AUTOCAD是设计人员普遍使用的软件, 具有强大的二维绘图及编辑功能, 将UG中的二维数据转入AUTOCAD中进行标注和出图, 也是一种切实可行的方法。
关键词:UG,工程图,AUTOCAD
参考文献
[1]张黎明.UG NX2三维CAD上机实验指导手册[M].上海:同济大学出版社, 2006.
[2]胡建生.Auto CAD绘图及应用教程[M].北京:机械工业出版社, 2005.
[3]傅中裕, 杨晓京.UG工程图与Auto CAD的数据转换[J].机械设计与制造, 2005 (5) :117-118.
由三维模型生成三视图的两种方法 篇7
下面以实例说明由三维模型生成为三视图的两种方法。
1 使用SOLPROF命令生成三视图的方法
1)做出三维模型,以建筑物的台阶与护板模型为例,见图1。
2)设置视口,由模型空间转换为图纸空间,将当前视口转换为俯视图,见图2。
3)使用SOLPROF命令,按照命令行提示进行操作,生成俯视图。
4)将当前视口转换为主视图。
5)使用SOLPROF命令,按照命令行提示进行操作,生成主视图,见图3。
6)将当前视口转换为左视图。
7)使用SOLPROF命令,按照命令行提示进行操作,生成左视图,见图4。
8)将其转换为西南等轴测图,我们观察到生成的三视图不在同一平面内,用对齐命令将其设置在同一平面内,见图5。
9)设置UCS在实体的左下角。将视图转换成俯视图。将视图转换到模型空间,按实体的外轮廓画出视图要对齐的基准线。画好对齐的基准线后,将视图转换为西南等轴测图,见图6,图7。
10)使用ALIGN命令,将生成的视图按投影关系对齐。先对齐主视图,见图8。
11)使用ALIGN命令,将生成的视图按投影关系对齐,再对齐左视图,见图9。
12)将视图转换成俯视图效果,并删除辅助线框,见图10。
13)设置图层,改变前缀为PH,PV图层。
其中,PH为不可见图层,将线型设置为虚线样式,线宽设为0.3;PV为轮廓线图层,线宽设为0.6。根据需要,再设置中心线层、标注层等,并在视图中画出中心线等,见图11。
14)在视图上标注尺寸,见图12。
15)在生产实际中,物体的形状和结构是复杂与多样的,为了正确、完整、清晰、规范地将物体的内外形状和结构表达出来,国家标准《技术制图》中规定了各种画法,视图与剖视图就在其中。按照制图规定将视图中需要做出恰当表达方法的部分,改画为断面图,以完成形体的视图表达,见图13。
2 执行SOLPROF命令时的几点说明
1)执行SOLPROF命令时,自动生成两个图层。
其中,PV图层———前缀为PV的图层,用于可见的轮廓图层;PH图层———前缀为PH的图层,用于隐藏的轮廓图层。此时,对图层的线型、线宽进行加载设置,设置以后,在生成的视图中才能生效。
2)执行SOLPROF命令,就相当于在投影体系中,对物体分别在三投影面做投影的过程。
3)执行ALIGN命令,相当于将得到的三投影展开的一个过程。
4)执行ALIGN命令时,应选择三对点对齐方式,其意义是选定对象可在三维空间移动和旋转,使之与其他对象对齐。选定对象从源点移动到目标点,此时目标点的设置应该按照投影规律:“长对正、高平齐、宽相等”设置。
3 使用SOLVIEW命令生成三视图的另一种方法
1)调入三维模型,在图纸空间生成主视图。新建一个布局,起名为布局3。将其转换为主视图,见图14。
2)在图纸空间的视口中对视图进行比例调整。按住夹持点调整视口大小。使用MOVE命令,将视图移动到适当位置。进入模型空间,使用SOLVIEW命令,以产生视图轮廓。按照命令提示操作,分别生成俯视图、左视图。此时,图层发生了变化,见图15。
3)关闭视图图框图层,显示三视图状态。见图16。
4)现在三视图已经生成,但是,主视图不是用SOLVIEW命令生成的二维轮廓图,也没有建立对应的图层,此时要用SOLPROF命令来生成轮廓投影图。表面看主视图没有发生变化,打开图层管理器,可以看到新增加了两个图层,见图17。
5)设置图层。按照制图要求将自动生成图层的线型、线宽进行设置,见图18。
6)在视图中标注尺寸,完成视图,见图19。
4 执行SOLVIEW命令操作的几点说明
1)在模型空间建立三维模型;转换到图纸空间生成主视图;使用设置视图命令SOLVIEW生成的俯视图、左视图是在模型空间生成的。三个视图是在两种空间生成的,因此主视图还需要使用SOLPROF命令修改。2)在执行SOLVIEW命令时,要给视图起名,因此,生成的图层与执行SOLPROF命令生成的图层是不一样的。
5 结语
计算机是工具,是为我们的工作服务的,所以,使用计算机就必须和我们所从事的专业紧密联系起来。由三维模型生成三视图还有其他的操作方法,上面探讨的两种方法各有优势,到底哪一种方法好,也只能是仁者见仁,智者见智。只要我们结合自己的专业与操作习惯,总可以找出适合自己需要的方法。在现实生活中,物体都是以三维形式存在的。三维造型比二维绘图更容易,三维实体的表现方式比二维绘图精彩许多。直接用三维造型进行设计更直观、更简单。可我们平时做设计工作时,较多地采用三视图的形式,如果有了三维模型,就可以减少绘制二维视图的工作量,降低劳动强度,减少二维视图的差错,提高设计图纸的质量。
参考文献
[1]秦永廪,何法江.AutoCAD2000应用教程——三维模型制作[M].上海:上海科学技术出版社,2000:243-248.
三维生成 篇8
自适应有限元分h型、p型、h-p型三种。对于h型自适应有限元,最重要的问题有两个:(1)对现有计算结果进行误差估计,以判断是否进行网格调整并给出网格调整的标准;(2)自动生成符合要求的有限元网格。
网格自动生成的研究一直是一个热点,其中关于四面体单元自动生成的研究进步最为明显。目前国际上流行的四面体生成算法为行波法和Delauney法。应用行波法生成的的四面体网格常有一些形状极差的单元,这对有限元求解的精度和效率都有影响,于是通常一个有效的行波法网格自动生成过程应包括两部分,先形成一个拓扑关系正确的初始网格,然后对其进行优化,以得到一个高质量的网格供计算使用[1]。
经过20多年的发展,h型自适应有限元在机械制造、金属成型等工业领域都有成功运用,近年来也有学者尝试在岩土工程等领域引入自适应有限元分析。本文的主要目的就是结合岩土工程等领域的实际情况,讨论利用行波法生成拓扑关系正确的四面体网格的若干关键问题,至于网格优化的问题可参见论文[2]。
行波法首先对三维物体的轮廓面进行三角形离散以形成初始波前,然后生成四面体,将波前逐渐向里推进。当波前上的活动面数为零,四面体充满整个三维域时行波法终止[3]。在这个过程中,有两个问题对行波法的有效性和效率起重要作用,这两个问题分别是不规则曲面的参数表示和几何搜索问题。
物体轮廓面的三角形离散是一个三维问题,通常的办法是先将轮廓面参数化表示为:
然后在参数面(s,t)与三维曲面之间建立双向映射,将问题转化为二维三角形行波法处理[4]。显然不规则曲面的参数化表示是这个过程的关键,本文的第二部分将讨论利用混合样条插值曲面来解决这个问题。
行波法通过几何搜索寻找在一特定的空间区域的几何对象(点、线、面等),这在四面体生成过程中有重要应用。行波法首先将在波前面上确定一三角形作为活动面Δabc。若此时波前上共有n个点,运用几何搜索过程从这n个点中找出位于Δabc某一规定邻域内的点,然后在这些搜索得出的点中确定一点d,形成四面体Tabcd(另一种生成四面体的方法是新生成一点d',形成四面体Tabcd')。由此可知几何搜索是行波法生成每一个单元都必须处理的问题。如果直接对波前上的每一个点依次进行判断,所需的工作量通常较大,行波法的很大一部分计算时间都被几何搜索占用。为了提高行波法的效率,本文第三部分将讨论利用双叉树型结构进行几何搜索的问题。
2不规则曲面的参数化表示
2.1混合样条插值曲面的引入
岩土工程中存在着大量不规则曲面,如地形面、大规模断层面等,如何将这些曲面参数化表示一直是一个困难的问题。计算机辅助几何设计(CAGD)中一些常用的曲面构造方法(如孔斯曲面(Coons Surface))对上述大尺度且几何信息不充分的曲面往往是不适用的。这些方法往往要求许多面片的角点坐标X、切矢Xs、Xt和扭矢Xst等数据,这些要求显然是实际工程所不能满足的。若采用一些近似方法(如Adini处理),又可能导致曲面较严重的变形。在这种情况下,本文将W.J.Gordon[5]所提出的混和样条插值曲面引入岩土工程领域,以期解决上述问题。
2.2混和样条插值曲面的构造
令R:[a,b][cd]为(s—t)平面内一矩形域,定义于该矩形域的连续曲面记为:
将区间I=(a,b)分为π:a=s1≤s2≤…≤sn=b,将区间I'=(c,d)分为π':c=t1≤t2≤…tn'=d,垂直于(s—t)面的系列平面s=si,t=tj与曲面Z的交线记为:
这n+n'个单参数函数给出了曲面Z上的一套曲线网络。
选定两套2p-1次样条基函数{φi(s)},{φj(t)}。
混和样条插值曲面可表示为
式(8)中对曲面式(2)运用的算符L、M为一线性操作,具体意义可见文献[5]。
2.3混和样条插值曲面在岩土工程中的应用
通过以上叙述可知,混和样条插值曲面对原曲面进行的是一种整体拟合,这从根本上有别于常见的曲面片拼接型的曲面构造,适合于对大尺度曲面进行拟合。同时若令p=2,该曲面保有C2的连续性,这是不规则曲面三角离散所必须的。又曲面边界的切矢条件在岩土工程中并无特别意义,在这里将其忽略:
将式(7)带入式(6),得到新的混和样条插值曲面公式:
式(8)中样条基函数可以作为固定模块直接编入程序,根据不同的n或n'直接调用。如果已知曲线网络式(3)上的一些点,利用三次样条插值曲线便可拟合出n+n'条曲线参数方程fj(s)、gi(t),利用公式(8)便可得到曲面式(2)。将曲面参数方程(1)看作定义于同一矩形域的三个独立的曲面方程,依次用上述方法拟合,从而得到不规则曲面的参数表示。
上述简化处理会使曲面临近边界的区域发生一些变形,但与机械、数控操作等领域所研究的精密几何形体的模拟不同,这些误差在岩土工程中是可以接受的。如果选择一个恰当的辅助面,这种影响还会得到更好地控制[6]。
3行波法中的几何搜索问题
3.1双叉树型结构的基本概念
双叉树型结构是一种数据在存储空间非顺序排列的数据结构。它由许多层状结构构成,其中最基本的层状结构为一个节点(母节点)与其下左右两个节点(子节点)相连接,这种结构方式也称为母节点指向两个子节点。在整个树型结构中,除了最上层节点(根节点),每个节点都被且仅被一个节点所指向。为了充分定义某节点,需三个相关数字,首先是存贮于该节点的数据,然后是该节点两个子节点在存贮空间中的位置,后两个数字记为该节点的左连接、右连接。显然左、右连接或者为零,或者为整数。若一个节点左、右连接均为零,即无子节点与其相连,则该节点称为中断点。
3.2双叉树型结构在几何搜索中的应用
设行波法波前上有n个点,将其存贮于树型结构的n个节点上。利用某种规则确定树型结构,使节点与空间某域建立联系,通过对树型结构节点的访问实现几何搜索[7]。
在N维空间RN中定义一超立方体为ai≤xi≤bi(i=1,…,N),并将该立方体上下界记为(a,b)。在树型结构中定义根节点为“0层点”,其对应空间为(a,b)。与树型结构的分叉与层状结构对应,依次用垂直于坐标轴的平面切分空间(a,b)。设节点K位于第L层,其代表的空间子域为(ck,dk),节点K的左连接对应子节点为P,右连接对应子节点为Q,它们分属的子空间为(ckl,dkl)、(ckr,dkr)。
令j=1+mod (l,N) (9)
P对应的子空间为:
c
c
Q对应的子空间为:
c
c
其中i=1,…,n。
由以上定义可知,K节点的所有子节点存贮的数据均位于K所代表的空间(ck,dk)内。若(ck,dk)与搜索空间不相交,则K所含的所有子节点均可排除,不必一一检验。下面具体给出利用双叉树型结构进行几何搜索的算法,该算法略经修改也可实现对树型结构任一节点的访问。
定义一栈数组stack,栈长度m=0,root=根节点存贮位置。
(a) 访问位于root的节点,检查存贮于该节点的数据xk是否在搜索空间(e,f)中,即检查是否满足ei≤x
(b) 如果root对应的节点右连接right≠0,且(ckr,dkr)与(e,f)相交,即,令n=n+1,stack(n)=right。
(c) 如果root对应的节点左连接left≠0,root=left go to (a) 。
如果left=0,但n≠0,root=stack(n),n=n-1, go to (a) 。
如果left=0, 且n=0,结束程序。
在四面体生成过程中,行波法的波前不断变化,这就要求从树型结构中不断增加或删除节点。利用上述访问节点的算法可以方便地实现这一点。
最简洁的添加节点的方法是从根节点开始由上至下访问树型结构的节点。如果某节点左(右)连接为0,且需添加点坐标位于该连接所代表的空间区域内,令该连接指向需添加节点即可。
至于删除节点,若被删除点为一个中断点,只需指向该节点的连接为0即可。非中断节点的删除较复杂,需从被删除节点所有的子结构中找出一中断点,令指向被删除节点的连接指向该中断点,指向该中断点的连接为0。
4算例
运用上述方法对一边坡洞室开挖问题进行了有限元网格离散。该边坡有不规则地形面和两条相交断层。为了保证计算精度,根据自适应有限元误差估计理论对网格做了优化。
图2、图3给出的是经过两轮优化后的网格,其网格离散误差为12.3%,有四面体单元13 114个。
摘要:网格自动生成是自适应有限元重要组成部分,其中如何有效地对三维物体轮廓面进行参数化表示一直是一个难点。结合岩土工程的实际情况,利用混合样条插值曲面对地形面、大规模断层面等不规则曲面进行了拟合,成功地解决了这个问题。另外还讨论了利用双叉树型结构进行几何搜索的算法,该算法能提高行波法生成四面体的效率。最后用一边坡洞室开挖的算例验证了编制程序的有效性。
关键词:有限元网格,四面体,行波法
参考文献
[1] Dari E A,Buscaglia G C.Mesh optimization:how to obtain good un-structure 3-D finite element meshes with not-so-good mesh generators.Struct Optim,1994;8,181—188
[2] Zavattieri P D,Dari E A, Buscaglia G C. Optimization strategies in unstructured mesh generation. Int J Numer Meth Eng,1996;39:2055—2071
[3] Peraire J,Peiro J.Adaptive remeshing for three-dimensional compres-sible flow computations,Journal of Computational Physics,1992;103:269—285
[4] Moller P,Hansbo P.On advancing front mesh generation in three di-mensions.Int J Numer Methods Eng,1995;38:3551—3569
[5] Gordon W J. Spline-blended surface interpolation through curve net works. J Math Mech,1969;18,931—952
[6] Xia H X,Chen S H.3-D adaptive FEM in rock slope stability analy-sis.The 10th International Conference on Computer Methods and ad-vances in Geomechanics,Arizona,USA,2001:1635—1639