三维模型处理(精选九篇)
三维模型处理 篇1
模拟真实的三维场景, 创建一个虚拟的三维空间, 给用户带来不亚于真实世界的视觉和听觉刺激, 毫无疑问是当今研究的热点, 其应用已涉及展览、建筑、医学、航空等各个领域。在重建三维场景中, 首先要解决的问题就是虚拟场景的建模。现在的建模技术主要有三[1]:一是通过图形库和高级编程语言, 例如基于Open GL的开发环境, Open GL功能强大且适用于所有的主流操作系统平台, 但是这种方案通常很难构建复杂的3D模型;二是利用VRML (虚拟现实建模语言) , VRML广泛运用在网络中并且易于编写, 但是它的编译能力使得实时构建3D模型速度较慢, 一旦遇到构建大规模虚拟场景的情况, 将很难在个人电脑中取得好的实时效果;三是运用专业的3D建模软件, 例如Maya, 3ds Max, Blender等等, 这些专业的建模软件往往在高质量, 可靠性和稳定性有着高性能的表现, 但却没有很好的交互性并且模型数据的提取和后期处理也不直观。
由于现有的三种主流方案都不能很好地满足建模需求, 为了满足大型复杂建模要求并方便后期数据的处理, 一种新的方案形成了:即将Open GL和3D建模软件相结合, 先通过建模软件生成模型, 再利用Open GL提取模型数据并加以重建, 同时结合Open CV对贴图信息的颜色信息进行处理, 最后拼合两部分信息得到模型的点数据 (坐标信息+颜色信息) , 以供后期的运用和处理。
1 方案阐述
方案采用的建模软件为Autodesk公司开发的基于PC系统的三维动画渲染和制作软件—3ds Max[2], 其拥有着世界上最广大的用户群并且工作流程非常清晰、便捷、简单。3ds Max的导出文件很多, 例如3ds文件、cad文件、ASE文件等等。其中ASE文件[3]是3D Studio Max ASCⅡExport输出文件, 是以文本的形式保存了3D模型的所有信息。这种文件的好处是非常容易读取和修改, 只需采用一般的文本编辑软件。通过解析ASE文件, 并结合导出的贴图图片, 即可在相关平台上仿真出一个3D模型, 并提取其中的相关信息, 转换成后期所需要的数据。
VC平台采用Open GL作为重建模型的接口, Open GL (Open Graphics Library) 是一个跨编程语言、跨平台的编程接口的标准库, 它主要用于三维图像 (二维的亦可) [4]。ASE文件虽然便于读写和修改, 但是由于此类文本信息量比较大, 读入时间比较长, 通常需要工具软件进行转换。VC编辑器可以通过Open GL接口读入文件并对里面包含的信息进行解析, 选取所需要的数据。利用这些数据和贴图图片, 即可真实还原3D图形的形状和颜色, 并可以切换视角从各个角度观察、变换模型。此时, 相应的3D模型的点坐标 (X, Y, Z) 和贴图坐标 (U, V) 也可以得到。
进一步得到3D模型的颜色信息则需要将贴图坐标转换为R, G, B坐标。Open CV (Open Source Computer Vision Library) [5]是Intel开源计算机视觉库。它由一系列C函数和少量C++类构成, 实现了图像处理和计算机视觉方面的很多通用算法。在VC平台用Open CV导入3ds MAX导出的贴图图片, 再结合Open GL导出的U, V坐标, 即可得出实际的像素点, 得到精度高达24位的RGB信息。将此RGB信息与之前的空间点坐标对应即构成了完整的3D模型点数据包 (X, Y, Z, R, G, B) 。
2 程序设计
由于大型的3D场景导出的ASE文件非常大, 目前也没有一个软件可以直接读取ASE文件, 即使3ds MAX都不能再次导入ASE文件形成场景。因此程序第一步是利用VC平台解析ASE文件, 这里仅选取我们所关心的信息。
完整的ASE文件包括以下几部分信息[3]:文本创建信息, 场景信息, 材质信息, 对象信息, 网格信息。而我们关心的是材质信息, 对象信息和网格信息。最终取得的信息应该是 (1) 每个点的信息:三维直角坐标、纹理坐标; (2) 三角面的拓扑结构:网格面的编号、面上点的坐标索引、面上点的纹理索引。数据结构图如图1所示。
于是, 对应ASE的文件结构, 我们建立一个结构体, 储存3D场景中物体对象的个数和每个物体的指针对象。即:
相应地, 对应每个物体的结构体, 又包含了此物体的顶点个数, 纹理坐标数, 三角面的个数以及顶点数据的列表, 纹理数据的列表, 点的索引列表。此结构体的定义如下:
最后, 名为VERTEX的结构体由直角坐标系 (X, Y, Z) 构成;TVERTS由贴图坐标U, V构成;FACES结构体则由构成三角面的各个顶点对应的点和纹理的索引构成。
在VC平台中解析出以上的数据结构后, 利用Open GL接口, 首先载入此3D场景的纹理贴图, 得到图片信息, 再遍历每个物体, 通过访问三角面关于点和贴图的索引和gl Begin (GL_TRIANGLES) 这一函数, 绘制整个三维场景。此时完成了模型在VC平台的重建和点坐标 (X, Y, Z) , 纹理坐标 (U, V) 。
但是U, V坐标无法反应出模型每个顶点的R, G, B信息, 不便于后期对模型的颜色的处理。运用Open CV接口读入物体的U, V坐标和BMP图片的信息, 将每一个U, V坐标对应到相应的BMP贴图的实际位置, 利用Open CV的Ipl Image这一结构中的image Data成员函数即可得到24bit的R, G, B信息。将这一信息与之前的解析出的顶点信息相拼合, 得到一份完整的构成3D模型顶点的信息 (位置与颜色) 。程序的流程图如图2所示。
至此, 通过对ASE文件的解析, 通过Open GL和Open CV在VC平台的运用, 实现了模型的重建和点信息的提取。
3 仿真结果
本文以一份由3ds MAX导出的ASE文件和BMP图片为例。通过Open GL完成的仿真图如图3所示。
可以看出, 此模型中有2个对象, 通过解析ASE文件获得的重建场景与3ds MAX中的建模场景完全一致。
进一步通过Open CV的处理, 提取构成模型三角面的顶点的色彩信息。得出的数据包如下:
数据包的抬头指出此模型包含的对象数为2, 以及每个对象的顶点数 (此模型中的两个对象的顶点数相同, 均为51357) 。后面依次列出每个顶点的信息 (index, X, Y, Z, R, G, B) 。
由实验结果可知, 仅仅凭借一份ASE文件和贴图的图片, 就可以在其他的软件平台实现3D模型的重建和关键信息的提取, 实现了在专业3D建模软件中建模并利用图形编程接口进行后期处理这一思路。
4 结语
本文结合3D建模软件和图形处理接口Open GL, Open CV共同完成对三维场景的建模, 场景在VC平台的仿真、重建, 以及模型点数据的提取、整合。既解决了大型场景建模难的问题, 也方便了建模后的数据处理, 具有很好的实用价值。
参考文献
[1]Tangyun Dai, ZeminWang, ShouhengXu.Research of Creating and Fetching3D Models of Virtual Reality Based on OpenGL[J].Mechatronics and Automation, Proceedings of the2006IEEE International Conference on, 2006:25-28
[2]王新波, 朱维杰.基于OpenGL与3DSMax的三维场景建模[J].电子科技, 2012:79-80
[3]沈润泉, 何本阳.ASE文件的解析与数据格式转换[J].毕节学院学报, 2008:92-94
[4]OpenGL数据库http://www.opengl.org/
三维模型处理 篇2
缸体零件图如图56所示,
图56 缸体零件图图形分析该缸体零件图形由缸体、座、腔体以及缸体顶上两个半圆凸台和孔所组成。从左主视图中可看出缸体和其内的腔体均为回转面生成,底座为长方体并有一个矩形通槽,四角圆角半径为R=10mm,并且有4个沉孔和2个定位孔组成。其创建的操作方法如下:(1)利用“旋转”命令,将主视图右边的凸台、以及下面座图形去掉,旋转生成圆形缸体和内部直径为40和35mm的腔体造型。(2)将左视图中的上面圆的图形去掉,然后,连接上边线,拉伸生成座的造型。(3)将沉孔以中心线为准绘制成沉孔图形的一半封闭图形,旋转求差生成沉孔造型。再利用引性阵列生成其余3个沉孔。具体的创建操作如下:(1)除轮廓线(粗实线)图层打开,关闭其他所有的图层,或者保留可见轮廓线,而将其余全部删除。图57 修改后的图形(2)绘制封闭的图形。 将修改后的图形经过添加线段而构成封闭和图形后,然后,生成5个面域,如图57所示。(3)旋转生成缸体和腔体造型。 单击“建模”工具条上的“旋转”按钮,选择“图形1”,以图形最下边的线段为旋转轴,按回车键后,创建出如图58所示的缸体和腔体造型。图58 创建缸体造型 图59 创建底座造型(4)创建底座造型。单击“建模”工具条上的“拉伸”按钮,选择“图形4”,输入拉伸值为60mm,创建底座造型如图59所示。(5)旋转生成实体。单击“建模”工具条上的“旋转”按钮,分别选择“图形2”、“图形3”、“图形5”,以各自的旋转轴线旋转生成回转实体。如图60所示。图60 旋转生成实体(6)圆形阵列。 单击“修改”工具条上的“阵列”按钮,在“阵列”对话框中选择“环形阵列”类型,以缸体的原心为环形阵列的中心点,设置数量为“6”,选择图形3生成的旋转实体,单击“确定”按钮,生成环形阵列。(7)运用“差集”命令,先选择缸体实体,回车后,再选择环形阵列创建的6个圆柱体,回车将6个圆柱体减去后,生成缸体前端面上的6个M6深14mm的螺纹底孔造型如图61所示。图61 创建前端螺纹底孔 图62 调整缸体至合适的位置(8)创建缸体上的两个半圆形凸台。其操作如下:① 调整视图方向。单击“视图”工具条上的“西南等轴测”按钮,然后,单击“动态观察”工具条上的“自由动态观察”按钮,旋转视图至一个合适的位置如图62所示的位置,② 建立UCS(用户)坐标系。 在命令行中输入:UCS 按回车键,再输入:N 新建用户坐标系,再按回车键,输入:3 即用3点确定坐标原点。用鼠标捕孔的中心点,将坐标原点设置在圆心处,如图63所示。图63 建立UCS坐标系 图64 绘制图形③ 绘制图形。以坐标原点为圆心,画一个半径为15mm的圆,绘制的图形如图64所示。④ 创建一个面域。 用“面域”命令,选择图形,回车后,生成一个面域。⑤ 将生成的面域和旋转生成镜像至右边。如图65所示。提示:镜像可在前视平面内进行。图65 镜像实体 图66 创建半圆形凸台造型⑥ 拉伸面域创建半圆形凸台。选择左边的面域向下拉伸4mm。 再选择右边的面域向下拉伸15mm,再利用“并集”命令,创建缸体上左、右两边的半圆形凸台造型,如图65所示。⑦ 利用“差集”命令,将旋转生成的实体从缸体中减去,创建孔造型,如图67所示。移动前 移动后 图67 完成缸体部分的创建 图68 实体的平移(9)创建底座上的沉孔造型的操作:① 移动图形5旋转生成的实体。利用“M”(移动)命令,将实体向前移动10mm,结果如图68所示。② 实体的矩形阵列。单击“修改”工具条上的“阵列”按钮,选择“线性”阵列类型,设置参数如图69所示。选择移动后的实体,单击“确定”按钮,创建的实体线性阵列如图70所示。③ 利用“差集”命令,将线性阵列后的4个实体从底座上减去,创建4个沉孔造型。④ 底座4条垂直边圆角,圆角半径R=10mm,完成的底座造型如图71所示。图69 设置矩形阵列的参数图70 生成矩形阵列 图70 完成底座的创建(10)缸体与底座的合成操作:① 在“前视平面”内,利用“RO”命令,将底认旋转90度。② 标注尺寸后,以标注的尺寸为移动的依据,如图71所示。③ 以缸体右边的边线为基准,移动后完成整个缸体的创建,如图72所示。图71 标注的尺寸 图72 缸体零件实体模型三维模型档案化管理初探 篇3
关键词:三维模型电子文件档案化管理
大量生成的三维模型,正成为电子文件的重要组成部分。从档案管理角度出发,是否需要对三维模型进行档案化管理?在实践中,三维模型的档案化管理存在哪些困境?未来可以做哪些方面的探索笔者将对此问题进行初步阐述,希望能够起到抛砖引玉的作用。
一、三维模型档案化管理的必要性
三维模型是指利用三维建模软件生成的,存在于计算机或计算机文件的“点和其他信息集合的数据”。从上述描述中可以看到,三维模型具备电子文件的基本特征,可以将其理解为一种特殊的电子文件。对这种特殊电子文件的管理,即三维模型档案化管理则是指在一定的制度框架下,由档案部门对三维模型进行前端控制和全过程管理,确保其具有真实性、完整性和有效性。
(一)三维模型具有档案价值且已经大量生成
1.三维模型具有档案价值。首先,三维模型具有凭证价值。从内容上看,三维模型是设计人员运用三维软件设计的图形,它如实地记载了业务活动过程和业务工作成果,是业务活动的直接记录。从形式和技术上看,三维模型是以数字化的超文本形式在计算机环境中生成的,其背景信息被系统程序控制,由此保证了它的可追溯性。其次,三维模型具有情报价值。三维模型是业务活动的伴生物,它记载了大量的知识信息,这些知识信息不仅可以为业务活动提供参考,也可以为同类设计提供借鉴。
2.三维模型已经大量生成。目前,三维设计已成为工程行业设计的主要方法之一。与二维设计相比,三维设计技术更能表达设计者的意图,便于加快图纸生成速度,提高产品设计效率。以三维模型作为产品最重要的信息载体,可以将设计、生产、管理等各个独立环节联系在一起,并将设计细节融入在建模过程中。[1]三维模型的技术优势使得其在各领域能够被广泛运用,另据相关调查显示,目前在某些领域三维模型的生成数量和速度已经远远超过了二维模型。从这个角度而言三维模型已经大量形成。
(二)三维模型不适用“双套制”与“双轨制”管理模式
为了规避电子文件真实性难以认定的风险,在工作实践中,对电子文件往往采用“双轨制”与“双套制”管理模式,即在文件运转过程中,电子版本与纸质版本共存,两种版本的文件与业务流程同步运转;在文件归档过程中,同一份文件既归档电子版本,又归档纸质版本,并且电子版本与纸质版本需一一对应。[2]国家标准也推荐使用“双套制”归档方式,2002年颁布的《电子文件归档与管理规范》(GB/T18894-2002)中规定:“具有保存价值的电子文件,必须适时生成纸质文件等硬拷贝,进行归档时,必须将电子文件与相应纸质文件等硬拷贝一并归档。”虽然三维模型也是一种电子文件,但其特殊性决定了它不可能像普通文本和二维图形一样打印成纸质文本。因此,三维模型不适用“双轨制”与“双套制”管理模式。
(三)三维模型管理失范
目前三维模型的管理处于失范状态,无法满足业务活动的需求,一是管理制度尚未制定。三维设计技术已经广泛运用,三维模型的数量也呈几何级增长,但是针对三维模型的管理制度并未建立。尽管已经有不少针对电子文件的管理制度,但是其中基本没有涉及三维模型管理的条款,更没有制定三维模型管理的专项制度。二是管理主体尚不明确。档案部门应是三维模型的管理主体,但是目前档案部门的主体地位并未明确,大部分三维模型都由形成者自行保管。三是管理流程尚未建立。由于管理制度与管理主体尚未明确,三维模型的管理流程也没有建立。业务活动结束后,三维模型的流向不明确,即档案部门也不知道通过何种渠道接收需要归档的三维模型。
二、三维模型档案化管理的实践困境
(一)三维模型的真实性认定困难
在纸质档案管理模式中,为了维护档案的原始记录性,必须保证载体与信息的统一。对于纸质档案的管理,档案实体的管理与档案内容信息的管理是统一的,保护了载体的原始性即确保了档案内容的原始记录性。然而,三维模型作为一种电子文件,其载体与信息的可分离性,使得上述要求并不能适应三维模型的管理。存储于计算机系统的三维模型因为软硬件升级、系统迁移等要求,可能会出现信息的迁移。在三维模型的管理过程中,随着存储介质与方式的变更,载体与信息的统一性难以得到保证。因此,判断三维模型是否具有真实性变得更加困难。
(二)三维模型的标准体系并未建立
三维设计技术已经在各领域得到了广泛运用,但相应的标准体系并未建立,使得三维模型的存储格式没有统一的规范,给三维模型档案化管理带来了困难。从档案管理角度而言,目前也没有建立起三维模型归档的格式标准。虽然,归档电子文件的格式标准基本建立,但是现行标准并没有将三维模型档案化管理纳入其中。三维模型标准体系的缺失给三维模型档案化管理带来了诸多问题:首先,三维模型形成者在存储三维模型时,特别是格式选择带有较大的随意性,导致三维模型的通用性较弱;其次,由于三维模型格式多元化且没有统一的规范,即使归档至档案部门,也可能面临无法读取的风险。
(三)三维模型的安全控制难度较大
作为一种电子文件,三维模型与其他电子文件一样面临诸多安全风险。电子文件载体与信息的可分离性、对系统的依赖性以及载体的不稳定性,使得它与纸质文件相比,安全控制难度更大。同时,三维模型无法进行纸质化管理,所有的安全控制措施只能在计算机系统中实施,一旦发生操作失误、病毒入侵、软硬件系统故障等事故,没有任何缓冲余地。此外,三维模型管理制度与标准缺失也带来了极大的安全风险。多种安全风险的叠加使得三维模型的安全控制难度较大。
三、三维模型档案化管理的
初步设想
三维模型档案化管理是一个系统工程,它需要制度、标准、技术和人员等诸多方面的支撑。可以说,在三维技术日臻成熟、三维模型大量生成的背景下,探索三维模型档案化管理的可行路径是档案部门不得不面对的课题。
(一)三维模型档案化管理的目的
三维模型档案化管理的目的不是完成三维模型的归档,而是确保三维模型的真实性、完整性和有效性。对于纸质档案,原始记录性是其根本属性,维护其原始记录性是档案管理工作的首要任务。然而,电子文件的载体与信息的可分离性,使得其原始记录性很难得到维护。所以,档案界一般认为,对于电子文件的管理应该转向维护其真实性、完整性和有效性,而不是单纯地追求其原始记录性。作为电子文件,三维模型档案化管理的目的就是要确保其真实性、完整性和有效性。
(二)三维模型档案化管理的前提
三维模型档案化管理的前提是制度化。制度化的作用主要体现在三个方面:一是明确权责,划分三维模型形成者、系统维护者、档案管理者等责任主体的权限与责任,并要求其对自身的管理行为负责;二是制定规范,即制定三维模型档案化管理的制度与标准,确保其符合业务活动的需求和档案化管理的要求;三是确定流程,即通过固化的流程确保人员责任落实、管理过程受控、业务运行顺畅。
(三)三维模型档案化管理的主体
三维模型档案化管理的主体应是档案部门。档案部门的优势在于建立了一套完整的文档管理系统,不论是对文件归档还是归档后的管理都形成了一套较为成熟的体系。此外,档案部门作为三维模型档案化管理的主体,贯穿文件管理的全过程,有利于实现对三维模型的全生命周期管理。
(四)三维模型档案化管理的手段
三维模型档案化管理的手段是前端控制与全过程管理。前端控制要求档案人员在三维模型形成之初就提前介入,参与三维模型管理软件的设计,参与文件质量的控制,提出档案化管理需求。全过程管理要求档案人员对文件的全生命周期进行管理,参与程序控制、规则制定和质量控制。
*本文为上海市档案局科研项目“企业集团数字档案信息资源整合与共享模式研究”(项目编号:沪档科1511)的阶段性研究成果之一。
注释及参考文献:
[1]张少辉.三维设计现状及发展趋势[J].聚酯工业, 2013(2):15.
[2]冯惠玲.电子文件与纸质文件管理的共存与互动[J].中国档案,2003(12):40.
三维模型处理 篇4
1 网格简化
在计算机的图形学领域中, 通常用多边形网格来对场景中的对象模型进行描述。所谓网格简化, 就是通过相应的算法, 以网格模型的外观的各种特征不改变的前提下, 尽可能的缩减顶点的数目, 将原始模型通过近似模型的方式来表示。
一般情况下, 网格简化采取的方法是将一些对模型的整体外观影响非常小的图元 (三角形、边或顶点) 从多边形网格中移出来, 从而简化了模型。
网格简化算法:网格模型简化的主要算法是二次误差测度算法 (Quadric Error Metric, QEM) , 它是一种基于边折叠操作的典型的简化算法。QEM算法的主要原理是通过计算顶点到与其相关联平面距离的平方和作为误差度量, 依据该误差度量计算边收缩代价。该算法与其他算法比较起来相对简单, 且运行速度快, 内存消耗小, 简化后的网格与原模型具有非常高的相似度。同时, 在简化过程中, 会产生不同层次结构的简化模型, 可以生成多分辨率的细节层次模型, 以此显示细节层次模型。该模型不仅可以为物体提供不同的层次, 而且还可以加速图形的绘制速度和控制场景的复杂度。
通过计算网格中每个顶点的误差矩阵, 即用二次误差测度来测量边的折叠代价, 然后再选取一些有效的顶点对进行边折叠操作。具体步骤如下:
(1) 设三维网格中顶点v的坐标为 (vx, vy, vz) T, 平面P为ax+by+cz+d=0, 其中a2+b2+c2=1, 记P= (a, b, c, d) T。顶点v到平面P的距离平方为:
式中,
假设网格中的一个顶点v, 与顶点v相关联的三角网格的集合为:planes (v) = (plane1, plane2....plane N) 。那么, 网格中任意一点到三角网格集合planes (v) 中的各个三角面的距离的平方之和, 即顶点的二次误差测度, 就可以改写为下面的公式:
定义为顶点v的二次误差测度矩阵, 边收缩操作的二次误差测度为顶点v1, v2的二次误差矩阵之和, 即:
为新顶点的二次误差测度矩阵。
(2) 有效顶点对选择。
三维网格中将满足以下两个条件的顶点对 (V1, V2) 称为有效顶点对:
(1) (V1, V2) 为某一表面上的相邻点, 是一条边;
(2) (V1, V2) 不是在一条边上的, 但
其中||V1, V2||代表的是两个点之间的距离, t代表阈值参数, 它由用户给定。
t的取值对模型的简化程度有很大的影响。当t=0时, 算法为边折叠算法。当t值比较大的情况下, 网格模型中将连接原本不相接的部分;当t值非常大的情况下, 原本相距很远的点将合并起来, 模型的简化质量将受到很大的影响。所以, 算法不允许模型中本来不相连的部分连接了起来, 顶点合并将以下面的形式存在。
(a) 边收缩形式。即对模型中的任意一条边L (V1, V2) 进行边收缩操作, 将一条边的两点合并成一点, 由 (V1, V2) 生成了一个新顶点v。
(b) 不构成边的顶点对合并形式。当两个顶点不构成边的情况下, 且满足, 将这两个顶点进行合并。
(3) 新顶点计算。
当边 (vi, vj) 收缩为新顶点, 定义收缩代价为:
式中, 为新顶点的二次误差测度矩阵, 从上式 (2.5) 可以看出, 产生新顶点v~的位置不相同, 那么生成的二次误差测度也不相同, 在简化的过程中, 边收缩的顺序也会发生改变, 这样的改变会对模型的简化产生一定的影响。所以, 我们将公式 (2.5) 以二次多项表达式的方式进行展开, 结果如下所示:
如果想求出收缩代价的最小值, 那么就应该求出' (35) ~v的最小值, 我们可以对式子 (2.6) 内的x, y, z分别求出它们的偏导数, 并且使偏导数的值为零, 如下式:
得到的线性方程组如下式:
若方程组有唯一解, 那么它的最优解为:
假如方程没有解, 那么我们就选取该条边的两个端点V1, V2或其中心点三点位置处, 对二次误差测度值最小的点, 进行收缩操作, 使之成为新的顶点。
(4) 完成 (3) 后, 会产生很多新的顶点, 此时, 对网格中所有的顶点对进行更新, 对每一对顶点的Q值进行重新计算。
(5) 最后, 如果简化的模型符合要求, 则结束迭代这个过程, 如果不符合要求, 重新选择有效的可进行折叠的顶点对, 计算这些顶点对每一对的二次误差, 将误差存入堆栈中, 再次重新计算所有的每一对顶点的Q值, 直至满意为止。
2 结果
通过利用网格模型简化的主要算法二次误差测度算法对模型进行简化, 效果如图1、图2和图3。
参考文献
[1]张欣, 秦茂玲, 谢堂龙.基于特征保持的三角形折叠网格简化算法[J].计算机技术与发展, 2012, 22 (1) :94-97.
三维模型处理 篇5
随着电子和激光技术的迅速发展, 三维激光扫描仪器精度越来越高, 三维重建领域中的数据测量越来越倾向于采用三维激光扫描仪。三维激光扫描仪的特点是速度快、精度高、操作灵活。但是其测量数据是在三维空间中、无规则的、随机分布的, 其特点是数据量庞大、噪声点多、数据密集、数据点散乱分布, 被称为"点云"数据。因此, 点云数据并不适合直接用于后续曲面重构, 有必要对点云数据进行一定的处理。点云的预处理就是对这些海量数据进行有序化、简化、法向估计、去噪等等, 为后续的建模做必要的准备。
1、八叉树模型
现代的数据测量技术, 已经使得所扫描数据量达到了几兆、几十兆甚至上百兆, 要达到对数据的高效利用, 首先必须解决的一个问题就是如何有效地处理庞大的三维点云数据。建立点云数据之间的几何拓扑关系, 是提高点云的几何建模速度的关键。八叉树 (Octree) 是在上个世纪七十年代后期至八十年代早期出现的。Samet深刻地研究了八叉树的特征。八叉树结构是由四叉树 (Quadree) 结构推广到三维空间而形成的一种3D栅格数据结构。其基本思想是将3D空间区域划分成三维栅格, 每一个小立方体有一个或多个属性数据[1,2,3]。八叉树的树形结构在空间分解上具有很强的优势。
2、八叉树分割
八叉树细分过程可以用一棵度为8的树来表示。将指定的三维空间区域分成8个卦限 (Octants) , 且在树上的每个非叶子节点处存储8个数据元素 (体素) 。每个元素都是一个小的立方体, 称为体元 (cell) , 其对应的三维空间称为体素。在三维空间中, 如果一个体素是空的, 则该体元的类型用"NULL"表示;如果一个体素中的实体是同一种类型, 我们就把它称为均质的, 用"FULL"表示;否则称为非均质的, 用"PARTIAL"表示。对于一个非均质的体素, 必须把它再分成更小的8个卦限, 节点相应的体元指向树中的下一层节点。我们可以对以任何形式定义的物体建立生成八叉树的算法。利用物体的最大和最小坐标值, 围绕该物体定义一个平行六面体 (包围盒) , 把它分解成8个子立方体, 并对立方体依次编号为0, 1, 2, …, 7。然后再对包含物体的三维空间区域逐个卦限测试, 如果子立方体已经是均质的, 即为满 (该立方体充满形体) 或为空 (没有形体在其中) , 则该子立方体可停止分解;否则, 需要对该立方体作进一步分解, 再一分为8个子立方体, 直至满足所规定的条件为止。
3、分割算法的实现
基于八叉树细分的思想, 我们构造一个包围点集的最小立方体, 记为root, 作为八叉树的根节点, 它包含了所有节点;规定叶节点所能包含的数据点的阈值MAX;从root开始递归地进行8等分, 直到所有叶子节点所包含的数据点数不超过MAX;细分的过程结束后, 便得到一个root为根的八叉树形结构。树中, 每层的体元个数为8i (代表层数) 。
将读入的数据点存在一个二维数组piont[N][3], N为数据点的个数, 3表示三维数据。每个体元所存储的信息包括指向8个孩子节点的指针 (*child[8]) 、体元的起始点、三个坐标方向上的边长、体元所包含的点在point中的索引等。细分过程是自上而下的, 即将数据点由上而下地递归进行划归, 最后划归到每一个叶子节点中, 根节点以及中间节点均不存储点的信息, 即当前节点分割后, 便将其所包含的点在point中的索引删除。细分完之后, 就开始运算每个体元的基本信息, 包括中心点和各边长。这些运算是自下而上地递归, 首先计算叶子节点的中心点, 叶子节点的边长, 有了这些信息, 便可以求上一层节点的中心点及边长, 如此逐层上推, 虽然中间节点没有存储关于散乱点的任何信息, 但是仍然可以得到其信息。采用这种存储方式完全是利用了树的递归性质, 不仅可以节约大量的存储空间, 而且减少了重复运算, 提高了程序的效率。
4、点云数据的法向估计
在进行插值的时候, 数据点处的法向是一个必不可少的条件, 所以必须对其进行估计。法矢估计常用的方法是利用最小二乘法逼近离散点的邻近点集[4,5], 得到一个微切平面, 把微切平面的单位法矢作为该点的法矢, 这种方法对任意给出的无规则的空间散乱点都可进行法矢估算。邻近点的估计我们是以支撑半径为标准, 设σ为支撑半径, 则任一点p的临近点集可表示为
即所有与点p的距离小于σ的点均视为其邻近点。
由于法矢方向的变化对所有邻近数据点到其决定的平面的距离总和并无确定的增减变化, 所以最优逼近平面法矢的确定是一个易于描述却难以处理的问题。文献[4]中直接利用最小二乘法构造了一个3×3矩阵, 通过计算特征值和特征向量来得到最佳的法矢方向。我们也以此为基础对数据点进行法向估计。
问题描述为:给定p的最近点集Q={qi|i=1, 2, ..., k}, 求p点的近似法向n, 使式 (1) 最小, 即
应用最小二乘法, 经过简单计算, 可得到3×3对称矩阵C, 即
参考文献[4]和文献[6]可知, 把的最小特征值对应的特征向量单位化即可作为的近似值, 由于只需要计算最小特征值对应的特征向量, 所以我们采用最常用的反幂法求解。但是问题的关键是由于反幂法其实是一种迭代过程, 如果计算的特征向量不收敛, 那么将如何进行的近似计算, 这是许多文献中没有考虑到的一点。
经过分析, 我们认为对于那些不收敛的特征向量可以采用如下公式进行近似计算, 即
如果az≠0, 则有公式 (4)
否则如果az=0, ay≠0, 则有公式 (5)
由于p不可能为零, 所以经过上面公式计算不会出现零向量。
经过测试, 发现用这种方法确定的法矢确实比单独用 (2) 式中最小特征向量作为法矢效果好。图1显示了对几个模型加了法向渲染的效果。左一排分别为陶罐、桓猪、陶鼠模型的源数据;右一排分别为陶罐、桓猪、陶鼠模型基于法向渲染的结果。
5、点云数据的简化
采用激光扫描法采集的数据量往往十分密集, 数据量一般都在数兆字节, 甚至达数十兆字节, 一般不会直接使用这些数据进行曲线或曲面的重构, 因为那样做会使计算效率大大降低, 消耗更多内存, 而且重构出的曲面的精度并不一定高。所以, 通常在对散乱数据插值之前对其进行简化。我们在求出法向的基础上, 按法向误差进行简化, 该方法是以删除一点后在曲面法向引起的误差作为判断是否删除该点的依据[7]。具体描述如下:
(1) 是否所有的点都遍历完毕, 如是则转 (2) , 如否则转 (3) 。
(2) 删除数组Deleted[]中所有被标记为TURE的点, 简化过程结束。
(3) 寻找下一点xi删除后引起的法向误差是否大于给定的阈值 (其中oi为该点k个最邻近的点的中点, 为该点的法向矢量) 。如是则保留, 否则Deleted[i]=TURE。跳转到 (1) 。
图2显示了用基于法向的方法对桓猪、陶罐模型的源数据简化后的效果。左一排分别是桓猪、陶鼠模型的源数据, 右一排分别是桓猪、陶罐源数据的简化结果。简化后的模型的数据量比原来小了很多, 降低了后续插值的计算量, 但从后续的实验来看, 简化点云并没有明显降低重建精确度。
6、结束语
八叉树不记录中间节点的数据点信息及层次关系, 能够大大节省存储空间, 应用八叉树对数据量大的点云数据建模非常适用。通过对原始点云数据进行八叉分割后, 再利用最佳平面逼近法对数据点的法向进行估计, 然后对点云数据按照法向误差进行简化, 得到有序的、带有法向, 并且密度适中的数据。实验表明, 简化点云并没有明显降低重建精确度, 适合曲线和曲面重构前三维点云数据的预处理。
摘要:三维点云数据密度大, 包含有大量的冗余数据, 并不适合直接用于后续曲面重构。文中重点讨论了基于八叉树模型的点云数据预处理的方法。实例表明, 该方法对点云数据处理的灵活性和适应性都较好, 能够满足曲线和曲面重构的要求。
关键词:八叉树,点云,曲面重构
参考文献
[1].孙家广.计算机辅助几何造型技术[M].北京:清华大学出版社, 1990.
[2].曹彤, 刘臻.用于建立三维GIS的八叉树编码压缩算法[J].中国图像图形学报, 2002, 7 (01) , A:50-54.
[3].潘懋, 王勇, 李魁星等.多解析度八叉树数据结构理论探索与应用[J].地理与地理信息科学, 2003 (4) :37-40.
[4].H.Hoppe, T.DeRose, T.Duchamp.Surface reconstruction from unorganized points[J].Computer Graphics (SIGGRAPH'92Proceedings) , 1992, 26 (2) :71-78.
[5].周儒荣, 张丽艳, 苏旭等.海量散乱点的曲面重建算法研究[J].软件报, 2001, 12 (2) :249-255.
[6].H.Hoppe, T.DeRose, T.Duchamp.Mesh optimization[J].Proceeding of the SIGGRAPH'93, 1993:19-26.
三维模型处理 篇6
关键词:波形钢板,ANSYS,平截面假设,刚度计算,刚度等效,内力计算
波形钢板由于横向波纹的存在,造成了这种结构的几何异性,从而给分析计算带来一定的麻烦。如果能将波形钢板等效成平钢板,那么在结构分析计算、建模方面将会带来很多简化。采用刚度等效是将波形钢板等效成平钢板的主要研究方法之一,目前主要是利用截面惯性矩、面积等效方法。而基于材料力学基本理论可知,截面应力计算与截面刚度、截面面积和计算点至中性轴的距离有关。因此,这种单纯的采取惯性矩等效的方法还不尽合理,存在一定的弊病。本文采用ANSYS有限元软件,通过对三维实体模型与平面应力模型对比分析,对将波形钢板等效成平面钢板的方法进行了探讨。
1计算模型的基本假设
平截面假设[1]是材料力学中的一个变形假设。垂直于构件中性轴的各平截面在构件受拉伸、压缩或纯弯曲而变形后仍然为平面,并且同变形后的构件平截面与中性轴垂直。若构件受拉伸或压缩,则各横截面只作平行移动;若杆件受纯弯曲,则各横截面只作转动,而且每个横截面的转动可由两个转角确定。根据板壳理论,波形钢板为薄壳结构,忽略剪切变形,那么可以采用平截面假设,后文中利用ANSYS进行验证。
在参考文献[2,3]中,介绍了波形钢板截面面积、截面惯性矩的计算方法,利用正弦波积分可以得到设计参数,但对于不同波形,需要计算等效的正弦波,这给计算上带来不便。E.B.Seydel推导的正弦波纹板X、Y方向的抗弯刚度Dx、Dy和抗扭刚度H,也是基于正弦波形得到的。基于材料力学[1]的截面特性计算方法,利用转轴定理,可推导得到如图1所示的截面抗弯刚度。
1.1惯性矩
1.2面积
1.3截面模量
1.4回转半径
其中:l表示波长;h表示波高;TL表示直线段长度;R表示波峰波谷半径(至板轴线距离,为所给参半径加上1/2板厚);θ表示圆弧角度(弧度);d表示圆心偏离x轴距离;板厚为t。
2三维模型内力计算
本文利用ANSYS有限元分析软件,建立波形钢板的三维实体模型。其中:土体尺寸为18×12 m,厚度取两个波形厚(波形380×140×5 mm),即0.76 m厚。波形钢管直径6 m,钢管单元选取SHELL93(8节点结构壳),土体选用SOLID95(20节点实体单元)。材料参数为:钢板,弹性模量2.1×1011,密度7 800 kg/m3,泊松比0.3;土体,弹性模量2.6×107,密度1 700 kg/m3,泊松比0.3。此处不考虑由于本构关系对结构受力的影响,只验证平截面及刚度问题,因此忽略了材料的本构关系[4]及接触分析。
ANSYS有限元分析的基本步骤:选取单元、材料参数、几何模型、有限元模型、载荷及边界条件、分析求解。具体步骤不再赘述,提取计算结果,选取管顶及两侧截面,下面将三个截面的轴向应力列于表1,单位Pa。
根据表1中数据绘制的截面应力图如图2所示,从图中可看出截面的应力与波形较相似。事实上,最大最小应力分别出现在波峰、波谷[5];中性轴位置对应图中应力平均值,也就是由轴向力引起的压应力;最大最小值由于弯矩引起。在管顶位置,管外侧波峰出现极大应力值、内侧波谷出现极小应力,这是由于管顶下挠引起的。管侧波纹的应力状态与管顶相反,因为管侧向两侧变形挤压土壤,使得管内侧波谷位置出现极大应力,外侧波峰出现极小应力。管顶与管侧截面的应力大小对应的波峰波谷位置正好相反,是由于管顶与管侧截面弯矩的正负号不同引起的。
说明:由ANSYS计算的管侧应力完全相同, 因此图中只有一条管侧应力曲线。
壳单元输出的应力有[6,7]:Sx、Sy、Sxy、TX、TY、Txy、Mx、My、Mxy等,需要注意的是,波纹的存在造成了壳单元的单元坐标系与总体坐标系不同。这里所关心的是波纹管的轴向应力,对应壳单元的拉力Ty。ANSYS中壳单元内力Ty是相对于单元坐标系,为该单元单位长度上的内力,因此提取内力时需要乘以单元的长度,可采用节点力求和法进行计算。为了验证平截面假设,此处利用材料力学中根据平截面假设推导出的弯矩计算公式反向计算,然后与平面模型计算出的内力进行对比,若数值接近,说明平截面假设可应用于波形钢板。应力计算如式(5)。
σ2——是壳单元最大应力与截面平均应力的差值。
3二维平面模型内力计算
二维模型的建立[7,8]相对于三维模型简化了许多,计算求解也比较容易。土体尺寸为18×12 m。由于是平面模型,厚度取为单位厚。波形钢管直径6 m,钢管单元选取BEAM3(2节点梁单元),土体选用PLANE82(8节点平面单元)。材料参数为:钢板,弹性模量2.1×1011,密度7 800 kg/m3,泊松比0.3;土体,弹性模量2.6×107,由于三维模型并未取单位厚度,而是0.76 m的厚度,因此在平面模型中应将土体的密度转换,为1 700×0.76 kg/m3,泊松比0.3。波形钢板的密度不需转换, 因为梁截面面积与三维模型截面面积相等,重力也相等。梁单元的面积、刚度等采用等效方式进行转换,转换如下:
解出B=10.43 mm,H=235.53 mm,将数值代入梁单元实常数中。关于截面参数的计算可采取公式1、2、3、4,计算公式已通过验证,与国外参考手册[9]中所给数值吻合较好。
为与三维模型进行对比分析,有限元模型划分网格的尺寸应与三维模型对应,采取相同的划分数目。
边界条件为:底部施加ALLDOF,结构两侧施加UX,与三维模型对应。
分别选取管顶截面和管侧截面,列表3为显示结果。
弯矩图和内力如图4。
4计算分析
4.1误差分析
三维模型与二维模型的计算内力之间的误差主要由于单元特性[6]不同引起的,SHELL93单元的应力输出及单元属性要比BEAM3单元复杂得多,考虑因素也较多。BEAM3为2D梁元,承受拉压及弯矩;SHELL93具有弯曲和薄膜特性,考虑了截面上的切向应力,还包括应力强化及大变形能力,输出项目也较多。PLANE82为平面8节点单元,SOLID95空间20节点单元,两种单元均可模拟土体,但特性及内力输出却不相同。因此两种模型间存在误差也是在所难免。从表4数据中可以看出,弯矩较小,轴力对结构影响较大。轴力误差在6.7%、8%,因此,可以用平面模型代替波形钢板三维模型。而从国外的计算手册[9]中查找内力和应力的计算公式,也都是基于平面应力状态进行推导的,那么采用平面的有限元模型进行结构内力分析存在合理性。
4.2刚度等效
波形钢板截面参数可以采用本文叙述的计算方法,也可采用参考文献中[2]、[8]的计算方法。在进行建模分析时利用面积相等、抗弯惯性矩相等建立方程,求解矩形截面梁的H、B,算得截面内力,然而在截面应力计算时采用波形钢板的截面高度H0进行计算。若求得任意截面的弯矩及轴力,截面应力可采用材料力学中的应力计算公式:
此处,y取为H0/2。
4.3平截面假设
从波形钢板三维模型的截面应力图形可以看出,截面应力是随着波形变化的,中性轴位置对应平均应力,波峰波谷分别对应最大最小应力,应力的变化接近于直线,与公式的变化规律一致。因此,波形钢板在跨度方向上的受力类似于梁的受力状态,可以采用平截面假设进行内力计算。根据薄壳理论的基本假定,可以采用梁的应力计算公式对波形钢板截面应力进行计算。
4.4结论
本文探讨了波形钢板结构物的三维模型向平面应力模型的简化过程,提出了采用平面模型代替三维模型对波形钢板结构物进行分析计算的思路和方法,提出了刚度等效的基本原则,并对上述结论进行了验证。但并未论述波形钢板结构物的内力计算过程及作用结构上的土压力等问题,采用平面模型对波形钢板结构物进行分析计算,还需进一步考虑土体非线性问题及土体与波形钢板接触问题,研究控制截面的内力计算方法。
参考文献
[1]单辉祖.材料力学.第二版.北京:高等教育出版社,2004
[2]彭述权.波纹钢板桥涵试验研究与力学分析.武汉:武汉理工大学,2003
[3]冯芝茂.覆土波纹钢扳桥涵土与结构相互作用分析及设计方法研究.北京:北京交通大学,2009
[4]李围.ANSYS土木工程应用实例.北京:中国水利水电出版社,2007
[5]张峰.覆土波纹钢拱桥模型试验和有限元分析.北京:北京交通大学,2008
[6]王新敏.ANSYS工程结构数值分析.北京:人民交通出版社,2007.10
[7]李围.隧道及地下工程ANSYS实例分析.北京:中国水利水电出版社
[8]冯丽.考虑土——结相互作用的覆土波纹钢板圆管涵的力学性能分析.北京:北京交通大学,2010
[9] Corrugated Steel Pipe Institute.Modern Sewer Design(Canada Edi-tion).Canada Corrugated Steel Pipe Institute,1996
三维重建光照模型介绍 篇7
1模型介绍
1.1朗伯模型
朗伯模型是计算机图形学中定义的一种理想的漫反射模型,也可以称其为朗伯cosine定律。虽然此模型创建于一个世纪之前,在计算机图形学蓬勃发展的今天,它仍然是最常用的模型。朗伯模型认为当光打到物体表面时,光的反射强度在各个方向上是均等的,具有独立于视角的特性。在物体表面每一点的反射强度正比于光的入射角的cosine函数:
其中ka为环境光参数,kd为点光源强度,fatt(N∙L) 为入射光与物体表面相作用的cosine函数。朗伯模型也称为漫反射模型,当光照射到物体的表面时,物体表面接收到的光通量取决于光源的方向和物体表面法向量的夹角,物体表面每一点反射光的方向在各个方向是均等的。如果光源与物体表面是垂直的(即与物体表面法向量的方向是一致的),此时反射光的强度是最强的。
具有朗伯性质的物体对光源的反射特性:反射光线的长度代表反射光的光强度,从物体表面不同位置的反射光的长度可以看出随着光的入射角变小,反射光线的强度也随之减小。朗伯模型描述了物体表面反照率,表面法向量和入射光的基本作用原理,是一种简单有效的光照模型,描述了当被光照射时,物体表面呈现出的粗糙性外观(无镜面反射)。
1.2双向反射分布模型
计算机图形学中的光照可以分为两个阶段,第一个阶段光能量从光源射向物体的阶段;第二个阶段是光能量和物体的表面点相互作用的阶段。这两个阶段是相互重叠的,但可被分开考虑。双向反射分布模型(也称为双向反射分布函数,Bidirectional Reflectance Distribution Function,BRDF)描述了反射光的辐照度和入射光辐照度的比率,是在球坐标系下的入射方向和反射方向的一系列参数的笛卡尔点乘。定义如下:
其中Li(θi,φi) 是入射光的辐照度;θi和 φi为入射光在球坐标系下的入射角;Lr(θr,φr) 为反射光辐照度;θr和 φr为反射光在球坐标系下的反射角度。BRDF是一种紧支撑反射模型 ,除了依赖 于光的入 射和反射 方向 ,还与参数 α ( α =[α1,α2,∙∙∙,αm]T)有关。 α 代表着物体的粗糙度参数,对粗糙度不同的物体来说反照率是不同的。所以BRDF可被进一步描述为五个参数的函数,即fi,r=(θi,φi; θr,φr; α) 。如果入射光的Li(θi,φi) 是已知的,则即可利用BRDF计算从任意反射方向看到的物体表面的辐照度值:
其中的积分操作只在球坐标的上半球范围内执行。由于每个物体表面的材质是不同的,BRDF描述了不同物体表面对入射光的反射能力。
1.3Phong模型
Phong模型是另一个用于实时绘制的主要的光照模型, Phong模型并没有改变朗伯模型的任何假设,所以入射光和物体表面法向之间的cosine角度关系仍然作为物体表面漫反射成分的计算方式。Phong模型通过在漫反射中插入Phong成分,可以准确的模拟物体的反射高光,Phong光照模型定义为:
其中,ka为环境光参数,kd为漫反射参数,ks为镜面反射参数,ke为镜面反射指数,H为光照和视角之间的平分向量。
Phong模型的一个优点是非常适宜在反射物体的表面添加凹凸反射效果,物体表面的视觉效果比逐点添加光照效果要好得多,Phong模型比朗伯模型更接近真实世界中的表面反射效果。Phong模型的漫反射部分和镜面反射部分被两个常数项kd和ks控制着,这两个常数项在物体的每个像素上都可以取不同的值(来自物体表面纹理的信息)来表现一致或非一致性纹理。
1.4球谐光照模型
现实场景中的光照是非常复杂的,有来自各种光源,如面光源、天空光、反射光或者折射光等。当前的图形硬件只支持点光源或者平行光源(方向光源),其中一个原因是对普通的光分布缺少程序性的公式。Ravi早在2001年Siggraph上基于勒让德多项式原理提出了一种有效的辐照度环境映射模型,根据人眼视觉原理,将自然的环境光影射为球谐模型。该模型提供了对光照辐照度的解析量化公式,可按照光的球函数系数分析辐照度。
由于漫反射物体的表面反射强度会随着物体表面法向量的方向缓慢变化,Ravi利用这种变化表现低分辨率下的辐照度映射,并通过分析量化公式描述这种变化特性。辐照度E就是物体的表面法向量n的函数,该函数通过积分上半球的光照能量得到光照辐照度的解析表达式:
其中,ω 代表坐标系中的翘脚 θ 和方位角 φ 。
2小结
选择合适的光照模型是基于图像的三维重建的一个重要环节。本章中较详细介绍了常用的光照模型的原理和特点,包括常用的朗伯光照模型,双向反射分布模型,Phong光照模型和球谐光照模型。
朗伯模型是图形学中早在1976年就已经提出的光照模型,但至今仍被广泛应用。朗伯模型假设物体具有朗伯特性, 当入射光照射物体表面时,反射光线的强度在空间中的各个方向都是均等的。即朗伯物体表面的反射光线是独立于视角的, 只与入射光,物体表面形状和物体表面的材质有关。
双向反射分布模型同时考虑了入射光和反射光的影响,物体表面的反照率不再是独立于视角的函数,而是与视角相关的函数。
Phong模型是双向反射分布函数的一种表达形式,Phong模型将漫反射和镜面反射相结合,其中的漫反射部分与朗伯模型是相似的,镜面反射部分添加了与视角相关的镜面反射指数项,很好地模拟了光滑表面的高光效果。
三维模型处理 篇8
在火电和核电设计领域中, 计算机辅助设计已从传统的二维设计手段发展到人机交互式的、高度集成化的、智能化的三维协同设计阶段[1,2]。
三维协同设计要求多个专业在统一的平台上共同工作, 其中土建专业的参与和应用非常重要。三维协同设计以布置设计为主, 机务、电气、热控、暖通等专业都要在土建结构梁、柱、墙、板三维模型的基础上开展工作, 土建专业三维模型给工艺专业提供设计参照[3]。
许多科研和设计人员对土建三维协同设计的应用做了思考和研究。邓志坚等[4]研究了PDMS建库原理, 结合中国土建规范, 建立了较完备的PDMS土建元件库和等级库, 使土建三维建模具备了基础条件;祝黎[5]将PKPM-PDMS三维接口技术应用在电厂渣水加药间、1号转运站、碎煤机的工程卷册中, 对模型转换技术做了尝试;王守利[6]研究了土建三维模型层次的命名规则, 尝试了层次命名的自动化实现;袁泉等[7,8]在研究三维模型和结构计算模型传递接口的基础上, 提出了新的土建结构设计流程;苏阳等[9]从三维建模、三维提资、三维收资、模型校核、碰撞检查、模型校审、出图等方面探讨了土建数据在三维协同设计平台中的流转。谢华[3]在比较传统设计和三维协同设计差别的基础上, 指出了三维模型数据的自由流动性, 土建专业可以在工艺荷载、楼面荷载、预埋件等方面受益。
但是, 目前土建结构专业在参与三维协同设计的过程中, 仍存在着诸多困难:
1) 事后抄模。即将成品CAD图纸中的模型重新在三维平台中建立一遍, 配合工艺专业做检碰, 而不是在三维平台中完成设计, 根据三维模型抽出成品图纸。
2) 重复建模。在结构计算软件中, 需要建立三维计算模型, 进行力学分析, 完成强度刚度稳定性检验校核。在三维建模过程中, 结构计算模型的价值无法利用, 导致建模工作重复。
3) 建模效率低。目前主流三维平台虽然都提供了土建结构建模功能, 但操作繁琐, 且设计习惯与国内软件相差较大, 导致设计人员掌握难度大, 建模效率低。
为解决以上问题, 本文提出了土建结构计算模型转换为三维模型的技术方案, 并基于PDMS三维设计平台, 采用盈建科转换接口进行了实际工程应用, 取得了良好的效果。
1 土建计算模型转三维模型技术方案
1.1 概述
土建计算模型转三维模型分两种应用场景:1) 计算模型初次导入三维设计平台, 形成对应的三维模型, 流程图如图1所示;2) 计算模型和三维模型局部发生变化时, 计算模型中变化的部分能更新到三维模型中, 三维模型中的变化部分在更新后能被保留下来, 流程图如图2所示。下面对这两部分技术方案分别做介绍。
1.2 计算模型导入到三维模型
1.2.1 构件截面库的匹配
模型构件截面库的匹配是模型转换的基础和前提, 必须将结构计算软件中的各种类型的截面与三维软件中的截面对应起来。
计算模型的截面库[10]以PKPM为例, 如图3所示;三维模型的截面库[4]以PDMS为例, 如图4所示。两者之间的匹配关系见表1。
另外需注意, 对于形状相同的截面, 两个中性轴也必须匹配, 否则会导致截面方向和位置错误。
1.2.2 构件坐标的正确转换
结构计算模型中, 结构构件一般简化为直线段, 构件的起点和终点坐标按构件的中性轴计算, 构件和构件直接按端点相连, 相交节点处的尺寸没有考虑扣除。而在三维模型中, 构件均为实体模型, 必须正确处理构件之间的连接关系, 扣除构件节点的尺寸, 这样才不会引起构件之间的碰撞, 如图5所示。
在电厂主厂房结构中, 还存在大量的构件偏心和对齐。在结构计算模型中, 构件的偏心一般采用轴线的坐标加上构件相对于轴线的偏心来考虑;而在三维模型中, 构件的偏心直接体现在构件的起点和终点坐标上, 模型转换过程中应注意区别和联系。
另外, 在三维模型中, 每根构件都有PLine线和对齐属性[11]。模型转换时, 根据实际情况灵活设置, 可简化坐标换算, 方便的实现梁顶与柱顶对齐, 梁边与柱边对齐等效果, 如图6所示。
1.2.3 对计算模型整体的平移和旋转
三维模型要体现出电厂的全貌, 包含多个建 (构) 筑物且主厂房内包含多个机组的厂房。在建立结构计算模型时, 每个建 (构) 筑物会分别建模计算, 主厂房的每个机组也会分别建模计算。在将计算模型导入到三维平台的过程中, 需要将多个计算模型合并为一个三维模型, 这时需要指定导入模型的插入点位置和对应的坐标, 还需要指定导入模型的局部坐标系对应于全厂坐标系的方位角, 这样才能正确的将计算模型转换为三维模型, 为工程应用服务。
1.2.4 模型层次结构的划分
计算模型中, 构件常用的分类方式有以下几种:1) 按构件类型分:梁、柱、墙、板;2) 按层高分:地面、中间层、运转层……顶层;3) 按构件材料分:混凝土、钢、钢骨混凝土;4) 按截面形状分:矩形、工字形、槽形、圆管形等。
在三维平台中, 为满足管理大量模型的要求, 结构模型按Site, Zone, Frame, Sub Frame, Section存放在不同的层次结构中;同时, 为了按卷册绘制施工图的要求, 将主厂房结构按区域做了划分, 如:A列柱、汽机房、除氧煤仓间, 中间层、运转层等。
由于计算模型和三维模型对构件分类方式的不同, 在模型转换过程中会有一些障碍。转换过程中, 需将计算模型中的全部信息抽取出来, 再根据三维模型的要求划分区域, 划分层次, 满足工程应用的要求。
1.3 计算模型局部更新到三维模型
通过上节所述的计算模型转换三维模型的技术, 替代了土建设计师手工抄模建立三维模型的过程, 发挥了计算模型的价值, 提高了三维建模效率。
但在实际应用中还存在以下情况:
1) 导入的三维模型中, 只包含梁、柱、支撑、楼板等构件, 需要在初次导入的模型中, 在三维模型中增加牛腿、挑耳、埋件、孔洞等细部构件;
2) 在结构设计的过程中, 计算模型也不是一次完成的。在设计不断深化的过程中, 需要改变构件的截面尺寸, 移动构件的位置, 增加一些次要构件;
3) 将修改后的计算模型再次导入三维平台后, 在原三维模型中新增的细部构件都不存在了。
为解决上述问题, 需要实现计算模型到三维模型的局部更新功能。该功能要求计算模型和三维模型中的构件信息建立对应的索引关系, 如图7所示。模型更新时, 先判断构件是否发生了变化, 仅对于发生变化的构件, 用计算模型中的构件替换三维模型中的构件, 其他三维模型则保持不变, 如图8所示。这样既实现了计算模型的更新, 又保证了在三维模型中新增的细部构件的存在, 保证已完成的工作成果不受损失。更新完成之后, 需输出详细的更新报告, 报告中应指出, 新增了哪些构件, 删除了哪些构件, 修改了哪些构件及这些构件的属性变化情况。
2 模型转换应用实例
基于计算模型转三维模型的技术要求, 开展转换软件的选型。经调研, 目前能实现模型转换功能的软件有盈建科、探索者、迈达斯等。其中, 盈建科模型转换接口的功能与上述要求比较符合, 下面采用该接口进行实际工程的应用。
2.1 工程概况
测试项目采用新疆天山电力奇台热电联产一期2×350 MW工程, 其厂址位于昌吉回族自治州奇台县城东北方向拟建的喇嘛湖梁工业园内。主厂房按两机两炉超临界空冷燃煤发电机组进行设计, 布置方式为汽机房—除氧间—煤仓间—锅炉顺列布置, 汽轮发电机组纵向布置。主厂房采用现浇钢筋混凝土结构。厂房横向由A列柱—汽机房屋盖—除氧煤仓间框架组成框排架结构体系, 纵向采用钢筋混凝土框架支撑结构体系。汽机平台采用现浇钢筋混凝土框架结构, 平台与A, B柱之间通过牛腿交接连接。
2.2 主厂房计算模型导入三维平台
主厂房1号机的PKPM计算模型如图9所示;2号机的PKPM计算模型如图10所示。将计算模型通过转换接口转为PDMS三维模型, 如图11所示。经校核, 转换后的三维模型中:构件截面匹配正确, 构件位置坐标正确, 构件的偏心和对齐能正确处理, 1号机和2号机通过模型整体平移指定插入点, 正确的组合在一起。
2.3 主厂房计算模型局部更新到三维平台
在主厂房1号机PKPM模型使用局部更新功能。原始计算模型如图12所示, 构件局部修改后模型如图13所示, 从左到右依次为:移动次梁位置、删除次梁、增加次梁。经校核, 计算模型的局部修改正确的更新到了三维模型中, 如图14所示。同时, 在三维模型中手工建立的牛腿、埋件、孔洞等细部构件, 在模型更新后被保留, 如图15所示。
2.4 应用效果
该模型转换技术能保证计算模型和三维模型的一致性, 且能随着设计不断深入保持三维模型的实时更新, 保证了设计质量。同时, 该技术能极大提高三维建模效率, 以主厂房为例, 原来手工建立三维土建模型需花费约2周时间, 采用模型转换技术后, 1 d就能建立模型。若考虑到后期三维模型的更新和维护, 厂区内主厂房之外的内建 (构) 筑物的三维建模, 节省的时间会更多。
3 结语
工程测试和应用表明, 土建计算模型转三维模型的技术方案是切实可行的。采用该转换技术, 能充分利用土建计算模型的价值, 避免重复建模和事后抄模, 大幅提高三维建模效率, 保证了三维平台中土建模型的及时性和正确性, 满足了工艺专业的检碰需求, 提高了整体工程质量。同时, 为下一步利用三维平台进行孔洞、埋件提资, 利用三维模型抽框架外形图和楼板布置图打下了基础。目前该技术在国核电力规划设计研究院已成功应用于多个国内外项目, 取得了良好的应用效果。
摘要:针对电厂设计土建专业参与三维协同过程中遇到的建模困难问题, 提出了土建计算模型转三维模型的技术方案和流程, 基于PDMS三维设计平台, 采用模型转换软件接口进行了实际工程应用, 大幅提高了建模效率, 保证了工程质量, 取得了良好的效果。
利用OpenGL绘制三维地球模型 篇9
OpenGL作为强大的三维图形函数库, 能够支持用户便捷地实现三维模型的建模及渲染出[1]。地球模型仿真中的球体建模、纹理映射、旋转和缩放等涉及很多复杂的计算机图形学知识及算法, 可以使用OpenGL提供的函数方法予以实现。使用OpenGL提供的建模和纹理映射函数建立了贴合纹理的地球模型, 探讨了模型视图矩阵的特征和内涵, 然后使用实时保存模型视图矩阵的方法, 实现了地球模型围绕三维坐标轴旋转的功能。
三维地球模型建模是使用现有软件或编程建立具有一定真实感、反映地球表面概貌的仿真模型[2]。对于大尺度的模型来说, 可以使用地图或地表遥感影像对球体进行纹理映射;对于局部小尺度的模型来说, 可以使用高分辨率遥感影像进行纹理映射或采用数字高程模型等三维景观予以表现。
旨在基于OpenGL函数库, 在纹理贴图和几何变换理论支持下, 模拟出纹理映射、可绕XYZ轴自由旋转的球体模型,并尝试从中得到建立交互式三维模型的普遍方法。
1 考虑纹理映射的 OpenGL 球体建模
通过研究地球球体特征, 采用自行设计的函数绘制球体,并指定球体上点的法线向量和纹理坐标的方法来实现。采用本方法可以建立一定半径、经纬细分程序可控以及纹理映射关系稳定的球体模型。
地球是个椭球体, 且球面上海拔高度分布不均, 在设计球体时, 可首先将地球想像成一个规则球形, 对于球面上任意一点, 将地球球面半径与该点对应高程数据相加, 即可得到该点距球心的距离, 通过对球面上点的建模, 可以得到具有真实感的地球三维球面, 叠加全球遥感影像数据形成球面纹理, 从而实现地球仪的效果。
球是曲面, 按有限单元化的思想将其进行曲面小片化。地理位置通过经纬线来标定, 经线和纬线的交点就是相应的几何顶点。顶点之间相连接, 可以将球削出一个正n面体,对于正n面体中的每个三角形, 计算每条边的中点, 中点和中点进行连线。这样一个三角形小面就用4个小的三角形来代替。最后把新生成的顶点坐标所表示的向量进行单位化,并将此向量乘上地球球心距顶点的距离 (即球面半径R与该顶点高程R' 之和), 相当于将新增加的顶点拉伸到球面上。其结果是这个球不再是用n个面来近似而是用n×4个面来逼近,效果得以大大提高。如此细分下去, 直到满足精度要求为止。
采用地心惯性坐标系统, 将地心o作为坐标的原点, 3个坐标轴分别为图1所示的x, y, z。对于球上任意一点P (θ,φ), θ为纬向角 (0~180度), φ为经向角 (0~360度)。那么P的以o为圆心的顶点坐标为 (球坐标到直角坐标系转化):
其中R某球面纬度上一点与地心的距离 (椭球半径), e是椭球的偏心率, a和b分别是长短轴的半径, 利用高程资料可获得球面上某点的高程R', 则:
其中:
由于高程的值与地球的半径相差较大, 在实际绘制中,有时为了突出地形, 还可以将高程R' 乘以一定的值S (这里将S的值定为25)。
根据要求的经纬度细分数, 确定模型上纬度和经度格网的坐标; 逐纬度绘制两个相邻纬度之间的网格, 渐次绘制出整个模型。假设经度细分数目为N (即将赤道等分为N段),纬度细分为M (将子午圈等分为2M段), 则同纬度上相邻两关节点在平行于赤道面上的圆心角度为360/N; 同经度相邻两关节点P1和P2的纬度分别为θ和θ+180/N。这样, 在每个纬度细分带上可以利用同经度两个关节定义出三角形条带, 在OpenGL中调用相关指令, 即可完成该条带的绘制; 逐次调节纬度θ的数值 (-90~90), 就可绘制出整个球体模型。
2 代码实现
假如要生成的地球分辨率为0.05度, 则要被采样化成3600×7200个顶点, 对顶点间连进行连接以实现三角片化, 则要生成3600×7200×4个三角片, 将三角片连起来, 则可以生成有地形高度的地球网状模型。
第一步, 生成顶点坐标数据集及每个数字地形剖分顶点的纹理坐标, 利用球坐标到直角坐标转换公式及全球高程及映像数据, 循环经度 (0~360) 和纬度 (-90~90), 即可生成间隔为0.05度的空间点集m_triSphere (注: 空间点集除了包含顶点位置外, 还包含顶点法线向量及对应顶点的颜色值); 将相邻3个空间点的序号为一组数据记录到三角片数据中, 即可形成三角片信息集m_triSphere。
第二步, 将生成的一系列分离的顶点、法线、颜色数组利用三角片连接起来, 即可构建三维地球, 相应示例代码如下:
第三步, 添加矢量数据
在地球表面上添加矢量数据 (经纬网格、行政区划、河流等) 时, 由于矢量数据中的位置信息一般为经纬度值, 而要将其绘制到球面上, 必须利用坐标转换公式将其转换为三维地心坐标系, (lon,lat) 圯 (x,y,z), 程序中对应函数名称为Lonlat2XYZ ( lon,lat,x,y,z) , 其中 (lon,lat) 为输入经纬度值 ,(x,y,z) 为输出直角坐标值。尔后调用OpenGL绘线段函数 ,即可完成绘制, 以经纬网格为例, 绘制间隔为5度的经纬线,其实现函数如下, 其他矢量数据绘制方法与上经类似。
//画纬度
//画经度
第四步, 设置地球的漫游与缩放
地球的旋转分自动旋转和手动旋转, 自动旋转与地球的自转相一致, 也即24小时旋转360度, 手动旋转主要方便查阅某地区的信息而进行的交互漫游, 三维地球交互漫游算法的基本原理是Arcball算法[3], 它的核心思想是基于四元数的理论, 使用2自由度的鼠标来表达3自由度的空间旋转。它将鼠标的拖拽运行想象成在一个投影球面上绘制弧线, 并将这一运行弧线映射到实际场景中, 据此改变视点和视角以实现交互漫游的动作, 进而实现对数字地球全方位、精确、交互的自由旋转漫游。
地球的缩放比较简单, 根据鼠标滚轮的移动量, 乘以一定的比例即可。
无论用何种方法得到的旋转量或缩放量, 作用到球体上,即可实现地球的交互操作。对应的函数为:
glRotatef (m_sphere.xr,1.0f,0.0f,0.0f) ;
glRotatef (m_sphere.yr,0.0f,1.0f,0.0f) ;
glRotatef (m_sphere.zr,0.0f,0.0f,1.0f) ;
glScalef (m_Room,m_Room,m_Room) ;
3 性能优化
3.1 基于 LOD 算法的地形简化
层次细节 (LOD) 技术是一种符合人的视觉特性的技术。当场景中的物体离观察者很远的时候, 它们经过观察、投影变换后在屏幕上往往只是几个像素甚至是一个像素。完全没有必要为这样的物体去绘制它的全部细节, 可以适当地合并一些三角形而不损失画面的视觉效果。对于一般的应用, 通常会为同个物体建立几个不同细节层度的模型, 也称之为多分辨率地形 (Multi-Resolution Terrain)[4]。
这些不同细节层度的模型可以是在程序运行前建立的。也可以是在运行时刻计算生成的。可以从一个全细节的模型出发, 通过一系列简化操作生成低细节层度的模型, 简化操作可以分成3种: 顶点删除、边压缩和面收缩技术。这样可以在特定的场合下选择合适的模型, 而不必每次都选用全细节的模型, 大大降低场景三角形数量。地形的简化通常是对这个矩形网格采用自顶向下 (Up-to-Down)、分而治之的策略, 典型的有四叉树和二叉树, 它们从场景的最低细节层度开始, 按需要不断地提高细节。非规则的简化则是采用自底向上 (Down-to-up) 的方法来处理。
实现LOD算法时, 除了对几何物体进行简化外, 还有一个很重要的问题就是如何决定是否对一个物体进行简化, 即需建立一个评价系统, 这种评价系统通常是视点相关, 离视点远的物体通常只需要较少的细节, 反之则需要比较多的细节。除此之外, 物体本身的特性也必须考虑在内, 例如, 球体中心需要较多的三角形来表现, 而边缘则只需要较少的三角形来描述即可。
Lod算法的关键之处在于 : (1) 数据的存储布局。数据在内存中的布局必须要方便算法的实现, 同时最好还要降低操作系统缺页中断的次数, 也就是降低内外存之间的数据交换次数。(2) 如何生成连续的LOD化的地形网格。在地形LOD化过程中, 要让两个不同层度的细节的区域之间能平滑地过度。(3) 节点评价系统。这个系统必须要使生成的网格能尽量减少几何形变, 尽量使画面质量能接近全分辨率的地形, 同时还要保证其实时性。
3.2 裁剪
OpenGL提供了内置的裁剪系统 , 但裁剪是在经过视图、投影变换以后的, 即裁剪是投影空间中进行的, 为了提高效率, 需要在顶点进行矩阵变换之前就进行裁剪, 同时, 裁剪系统还必须有能力裁剪一个四叉树的节点。
从3D到2D投影过程中, 需要一个投影体, 只有当物体处于这个投影体中的时候, 才能看到这个物体, 否则物体将被裁剪掉。因此这个投影体也通常被称为视见体 (View Frustum)。在进行正交投影的时候 , 投影体为一个长方体 , 在进行透视投影的时候, 投影体则为一个平头锥体。
4 结语