APP下载

基于3DMax三维城市建筑模型自动分层切割方法研究与应用

2015-05-30黄国豪

科技资讯 2015年30期
关键词:女儿墙楼层纹理

黄国豪

三维数字城市是未来智慧城市建设的必然,其逼真的三维呈现在城市建设、国土规划、公安消防等相关领域得到广泛的应用。由于不同部门对高层建筑模型有不同的管理应用需求,需要对高层建筑模型进行分层进行表达,满足交互式可视化等细节方面的需求[1]。

现有的三维建筑模型在3D GIS平台通常是一个整体对象,无法对建筑进行分层交互式可视化操作,只能在三维建模软件通过手工切割再导入3D GIS平台。面对海量的三维数字城市的建筑模型,手工切割的效率不仅低下,而且需要大量的人员投入。针对这种情况,该文探讨了建筑模型自动分层切割算法,基于3DS Max的二次开发工具实现了建筑模型自动分层切割,极大的提高了工作效率。

1 定义

1.1 CSG模型

三维矢量模型是二维中点、线、面矢量模型在三维中的推广。它将三维空间中的实体抽象為三维空间中的点、线、面、体四种基本元素,然后以这四种基本几何元素的集合来构造更复杂的对象。以起点、终点来限定其边界,以一组型值点来限定其形状;以一个外边界环和若干内边界环来限定其边界,以一组型值曲线来限定其形状;以一组曲面来限定其边界和形状。矢量模型能精确表达三维的线状实体、面状实体和体状实体的不规则边界,数据存储格式紧凑、数据量小,并能直观地表达空间几何元素间的拓扑关系。

CSG模型(Constructive Solid Geometry)用一些基本体素如长方体、球柱体、椎体和圆环等,通过集合运算如并、交、差等操作来组合形成物体。如图1所示。

TIN-CSG混合构模是当前城市3D GIS和3DCM 构模的主要方式,即以TIN模型表示地形表面,以CSG模型表示城市建筑物,两种模型的数据是分开存储的。为了实现TIN与CSG的集成,在TIN模型的形成过程中将建筑物的地面轮廓作为内部约束,同时把CSG模型中建筑物的编号作为TIN模型中建筑物的地面轮廓多边形的属性,并且将两种模型集成在一个用户界面[3-4]。

1.2 纹理

三维模型的纹理是应用到模型上的一个二维图片。纹理位图对应二维数组中的每一元素,在表示纹理时对应的二维下标称为纹理映射坐标,用字母(u,v)表示。纹理映射是纹理图贴到多边形表面的过程。

纹理坐标系(D3D)如图3所示。

1.3 三维模型分割

三维模型分割是根据一定的几何及拓扑特征,将封闭的三维网格多面体,依据表面几何、拓扑特征,分解为一组数目有限、各自具有简单形状意义的、而且各自联通的三维模型子块的工作。

三维模型分割的定义。三维模型分割算法大体有基于分水岭方法的分割、基于曲率信息的分割、基于体素分解的分割、基于聚类分析的分割、基于拓扑结构图的分割,还有文献[1]武汉大学杨必胜教授等研究的基于切割环分解三维建筑物模型的算法等。

该文的切割方法是在3DMax里面调用切割(cup)函数直接对模型进行分层切割。在3DMax里面切割的好处是不用考虑复杂的切割算法以及三维实体重构,分割后的模型能保留正确的拓扑信息以及完整的楼层纹理信息,效率非常高。

1.4 碰撞检测

如何求出三维模型楼顶的坐标是该文切割方法的基础,最好的办法是利用碰撞检测[5]。

在虚拟现实世界中一般是通过检测两个实体所占的几何空间是否相交判断是否发生碰撞。在现实世界中,每个实体都占有一定几何空间,而且不可能出现两个实体相互穿透的现象。当虚拟现实系统中两个实体所占有的几何空间试图相互穿透时,系统就认为这两个实体发生了碰撞。

用四维空间来描述运动实体,前四维是通常意义上的四维空间,第四维是时间,那末一个实体就可以用四维空间中的点集来描述,即:

2 算法实现及应用

该方法是根据大比例尺DLG数据库的居民地面得到楼层数、三维模型主体绝对高度以及三维模型侧面纹理来判断确定每层高度,然后从下往上对模型进行分层切割。

2.1 基于3DS Max切割算法设计

3DS Max是AutoDesk公司开发的专业建模、动画制作、虚拟设计软件,功能强大。该软件提供了两个层次的开发工具:MAXscript和SDK(Software Development Kit)。SDK是3ds Max强大的工具包,能开发出各种各样的插件,3DS Max插件其实就是动态链接库用以扩展MAX的功能,在windows里面就是DLL。

该工具开发环境:Visual studio 2005、3DMax9.0、3DS MAX SDK和ArcGIS Engine。3DS MAX SDK则需要从完整版的3DMAX光盘中安装。

其算法流程如下图4所示。

(1) 楼层数F1是直接读取模型所在居民地面的Floor属性得到。

(2) 模型主体高度H1的计算。

只要得到模型高度顶点(Vertex)列表,用GetVertex(i)获取各顶点坐标列表,通过程序计算出女儿墙的高度,从而得到准确的模型主体高度H1。

首先读取模型所有的顶点坐标,如下图6的B1、B2、B3、B4和D1、D2、D3、D4,根据顶点Z坐标分别构建平面封闭图,再把全部平面封闭图投影到一个平面上,判断分析区分房上房顶和主体房顶。从而得到B1、B2、B3和B4是楼房主体房顶坐标。

然后随意取楼房主体房顶任一边(B2,B3),找出D1、D2、D3和D4最近的点D3,D3点和楼房主体顶点B3连线,取中间点F,从F点往Z坐标反方向做射线与楼房模型做碰撞检测,得到碰撞点G。如图6所示。

最后把碰撞点G和B3进行比较,如果Z坐标相等说明模型没有女儿墙;如果不相等说明模型楼顶有女儿墙,B3的Z坐标减去G的Z坐标就得到女儿墙的高度,B3的Z坐标再减去A3的Z坐标再减去女儿墙的高度就是模型主体高度H1。

(3) 层高信息的计算。

贴图要求为保证区域范围内整体色调的一致性,尤其独立小区内多个外观一致性的建筑物模型,材质色调要求一致、协调(贴图前建立色板或公共纹理库,所有贴图人员从纹理库中提取纹理,但纹理名称不能改变,达到纹理重用以减少纹理数量)。因此可以通过三维模型侧面主体纹理的查找统计,计算出主体楼层数。

在3D Max 获取模型所有面的贴图信息,找到Z坐标方向出现次数最多的纹理名称,然后再计算该纹理在Z坐标方向出现的个数,就是主体楼层数F2。同时计算一个纹理在Z坐标方向的高度,得到楼层高度H2。

如果F1等于F2,说明所有的楼层高度都是一致的,不需要对一楼楼层高度进行另外计算;

如果F1不等于F2,说明楼层高度不一致,一般是一楼高度是挑高层。一楼挑高的层高计算公式:

F3=H1-F2×H2

最后把层高信息记录在数组M里。

Float[] M = F3,H2,…

(4) 定义切割路径列表。

依次将数组M放入切割路径列表,并对潜在切割对象构建空间索引,存放楼层属性信息便于日后3D GIS系统平台的具体应用。从模型的最底层开始调用3DMax的切割函数依次从下到上进行分层切割。

2.2 应用试验

该文试验区域的三维模型通过高精度航拍的立体像对进行建模,模型顶上(平面屋顶、坡屋顶、瓦屋顶)的高度都是内业量测出来的。成片居民区(屋顶有女儿墙的)以女儿墙高度测图,并实地拍照进行纹理采集,最后利用三维建模软件3DMax烘培合成。试验区域为住宅楼。

该试验区域精模纹理长、宽均为2的n次幂像素值,贴图单边像素数≤1024;中模纹理长、宽均为2的n次幂像素值,贴图单边像素数≤512;简模纹理长、宽均为2的n次幂像素值,贴图单边像素数≤256。贴图纹理尺寸长宽比例为1:1或1:2。纹理与实际一致(严格按照建筑物层数、窗户数量制作纹理)。

数据的准备:大比例尺DLG数据库MDB的居民地面数据。

该文选取的三维建筑模型是典型的居民楼,如图9所示。楼层共11层,楼顶有楼梯房、装饰构件、儿女墙等,楼体有飘窗、阳台等构件,一楼是架空层。程序通过面积比较很容易把房上房顶、装饰构件和主体楼顶区分开来,快速准确算出女儿墙的高度。程序计算一楼的挑高高度为3.8 m,主体楼层高度为2.8 m。图10切割结果表明,主体楼层和挑高楼层分层准确,没有出现模型分割错误,分割后的楼层纹理正确,拓扑关系正确。

3 结语

通过SDK插件开发直接调用3DMax的核心函数对模型进行自动分层切割,不但提高了程序运行速度,还使模型分割效率和产品质量有极大的提高,缩短了生产周期。3DMax的二次开发功能,对于理论研究和解决实际问题是十分有效的方法和手段。

三维网格模型的分割是具有挑战性的课题,下一步研究的重点是引入楼层户型平面图进行自动分栋分层分户切割并自动构建室内建模技术。

参考文献

[1] 杨必胜,姜少波.基于切割环分解的三维建筑物细节层次模型构造[J].测绘学报,2011,40(5):575-581.

[2] 孙晓鹏.三维模型的分割及应用研究[D].北京:中国科学院研究生院(计算技术研究所),2005.

[3] 李清泉.基于混合结构的三维GIS数据模型与空间分析研究[D].武汉:武汉测绘科技大学,1998.

[4] 孙敏,陈军.基于几何元素的三维景观实体建模研究[J].武汉测绘科技大学学报,2000,25(3):233-237.

[5] 焦洁.分布式虚拟环境中碰撞检测响应的研究与实现[D].北京:北京航空航天大学,2001.

[6] 荷塘月色创作组.如何使用3DS SDK开发程序[M].北京:北京理工大學出版社,1999.

[7] 罗胜.3DS Max SDK插件开发技术[J].机床与液压,2003(6):242-243.

猜你喜欢

女儿墙楼层纹理
某大厦女儿墙损伤原因分析及改造设计
混凝土女儿墙施工定位控制技术研究及应用
利用楼层废水势能的发电装置
基于BM3D的复杂纹理区域图像去噪
建筑工程中女儿墙裂缝控制以及施工技术
使用纹理叠加添加艺术画特效
电梯的升与降
自动扶梯楼层板周边环境的安全防护
女儿墙裂缝成因及防治
TEXTURE ON TEXTURE质地上的纹理