一种基于非精细建筑物批量快速三维建模的设计与实现方法与流程

文档序号:25526190发布日期:2021-06-18 20:15阅读:256来源:国知局
一种基于非精细建筑物批量快速三维建模的设计与实现方法与流程

本发明涉及三维数字城市建设技术领域,具体地说是一种基于非精细建筑物批量快速三维建模的设计与实现方法。



背景技术:

近些年来伴随着“数字城市"建设的蓬勃发展,三维城市模型已成为城市gis中最重要的组成部分之一。三维建模是将真实的三维坐标转换成为能够在计算机屏幕中显示的三维实体模型,实现了地理空间信息便捷、直观的人机交互,为三维城市建设提供场景数据,建模方法直接影响到建模效率与模型质量,以及建立三维城市场景的成本。由于建模数据源,及建模应用需求的不同,目前主要有以下几种三维城市建模方法:

①利用车、机载激光雷达或三维扫描仪获取建筑物的三维点云数据构建其三维模型;

②利用倾斜摄影测量技术获取目标的多视角影像数据构建其三维模型;

③利用遥感影像、cad平面图和外业拍摄照片等数据,通过使用3dmax、autocad、sketchup等建模软件进行手工建模;

④计算机程序自动建模,利用形状规则描述建筑物的结构和部件组成,通过编写计算机程序自动生成三维模型,或使用autocad、3dmax二次开发的插件自动生成建筑物的三维模型。

当前,基于web浏览器端的三维可视化主要依赖flash3d,java3d以及silverlight等技术,然而这些技术都存在一个共同的缺陷,难以支持web端gpu加速,很难支持大规模、复杂3d场景的渲染及显示。html5与webgl技术的出现引起了3dwebgis领域的广泛关注,这些技术为web三维场景的可视化提供了新的思路。同时以因特网技术、浏览器三维标准、html5富客户端技术和webgl技术为基础,以地理数据三维交互可视化服务为核心,在web浏览器上能够实现无插件的地理信息三维可视化及相关gis功能,这也是3dwebgis发展的趋势。



技术实现要素:

本发明的技术任务是解决现有技术的不足,提供一种基于非精细建筑物批量快速三维建模的设计与实现方法。

3dmax是autodesk公司的三维模型制作与渲染软件,广泛应用于建筑设计、三维建模等领域,本方法采用3dmax为批量建模提供复杂的几何模型;cityengine是esri公司的三维城市建模软件,常应用于数字城市、轨道交通、城市规划等领域,其基于规则的建模方法可以完美地实现三维城市模型的批量建模。arcgispro是esri公司全新的ribbon风格操作界面的桌面软件,其主要改变主要在二三维一体化,及工程式管理等方面,且可以完美地融合来自cityengine与3dmax的三维场景,并发布于portalforarcgis中作为三维场景资源。arcgisenterprise是esri公司开发的新一代gis服务器,其服务架构灵活,产品组件全面,使得用户可以非常方便地建立一个企业级的3dwebgis平台。这些技术及平台都成为本方法三维城市批量建模以及基于web端的三维可视化坚实的基础。

本发明解决其技术问题所采用的技术方案是:

一种基于非精细建筑物批量快速三维建模的设计与实现方法,该方法针对非精细建筑物建模应用参数化建模技术与3dmax插件开发技术相结合的方法批量建模,其步骤包括如下:

步骤1、利用现有二维测绘数据的空间信息和属性信息作为建模的基础数据;

步骤2、通过cityengine提供的几何操作函数和几何形状属性函数,结合建筑结构、屋顶结构的特点、构造生成建筑结构的函数,编制自动化参数化的建模程序,利用底面的属性信息批量生成模型;

步骤3、编制python语言批量导出模型的插件和编制maxscript脚本批量导入模型的插件,提高建模工作效率及批量模型在3dmax软件中的兼容性。

进一步地,步骤1中应用gis和cad技术获取建筑二维底面数据,导入arcmap中添加建筑物主体高度、建筑物主体纹理、屋顶结构、房上房高度及结构等字段,将对应的属性信息添加到属性表中。

进一步地,步骤1中,具体包括:

1.1建筑物屋顶样式与房上房结构

基于cityengine参数化批量建模是计算机程序三维建模,建筑模型的结构的生成依赖于cga规则程序的几何函数;

调用cityengine中的几何操作函数及几何形状属性函数构造生成建筑屋顶的函数,并设置不同的代码用于对应不同的屋顶结构;

在录入建筑物屋顶结构属性时,对照建筑真实的屋顶结构录入相同屋顶结构对用的代码;

生成模型的过程中,建筑底面表示屋顶结构的属性值作为实际的参数传递给生成屋顶结构的函数,从而生成与实际建筑物相同的屋顶结构;

1.2模型纹理获取

根据某社区的真实建筑物制作纹理库,包含窗户纹理、墙体纹理、门纹理和屋顶纹理;

在录入建筑物纹理属性时,对照建筑真实的纹理录入相同纹理的名称;

在cga建模程序中构造获取纹理的函数,将纹理名称作为变量;

生成模型时,建筑底面要素表示纹理属性的属性值作为实际参数传递给获取纹理的函数,来获得建筑的纹理贴图,从而保证建筑物的纹理与实际纹理相符;

1.3建筑底面的预处理

当建筑底面的原始数据是cad数据时,需要对原始数据进行预处理,删除多余的要素,保留建筑底面数据和建筑物相关信息;

然后将预处理好的cad建筑底面数据导入到arcmap中转化为shp面数据,并添加投影信息,采用utm84投影坐标系,添加建筑物主体高度、建筑物主体纹理、建筑物屋顶类型、房上房结构、模型名称等字段,并将采集的建筑相片或影像、建筑的真实的结构和纹理与建模程序中定义的控制模型结构或纹理的代码进行对照,添加对应的属性值。

进一步地,步骤1.1实现方式为:

首先将针对不同的屋顶结构,设置不同的参数变量:

attrroof_style=1//初始化一个值,1表示女儿墙屋顶

roof(roof_style)-->

building_roof(roof_style)

然后分别构造roof_style为不同值的屋顶结构,且为1至8依次为:女儿墙屋顶、阶梯式屋顶、单坡屋顶、双破屋顶、四坡屋顶、金字塔屋顶、半四坡屋顶、歇山顶屋顶。

进一步地,步骤1.2获取纹理的构造函数:

attrvalue_wall=10//初始化一个值,建模时属性“wenli”为实际参数

texture(getwalltexture(“qt”,value_wall))

getwalltexture(type,value_wall)=“czc2/czcqt/”+type+value_wall+".jpg”。

进一步地,步骤2中,具体包括:

将预处理完成的二维建筑物底面数据导入cityengine中,选择建筑底面并关联建筑底面的建筑高度、建筑纹理、屋顶样式、房上房结构属性字段,然后运行三维建模规则程序,批量生成建筑三维模型;

建模程序依次读取每一个shp面以及对应的属性信息,包括建筑高度、建筑纹理、屋顶样式、房上房结构,并根据建筑底面的属性信息获取对应的贴图,生成对应的屋顶结构和房上房结构。

进一步地,步骤3中,在supermap8c或skyline中构建三维场景需要在3dmax中将三维场景分别转换为fbx格式或.x与xp2格式的数据,然后再导入到三维平台中;

通过cityengine内置插件程序python语言与cityenginepython模块编制批量单栋导出建筑物模型的插件以解决模型占内存过大的问题;

按照房屋面批量单栋导出obj格式建筑模型;

在arcmap二维建筑物底面数据预处理过程中添加模型名称字段,且其属性值需唯一,以确保将全部建筑模型导出。

进一步地,步骤3中,使用maxscript脚本语言编制批量导入obj格式模型的插件,该插件可以批量自动快速地导入obj格式的建筑模型;运行插件,将obj格式建筑模型全部导入3dmax中。

本发明的一种基于非精细建筑物批量快速三维建模的设计与实现方法与现有技术相比所产生的有益效果是:

针对非精细模型采用上本方法批量建模的缺点和实际工作中使用3dmax插件批量建模的不足,应用参数化建模技术与3dmax插件开发技术实现批量快速三维建模方法,该方法通过编制批量建模程序,将建筑底面属性信息与模型的结构、纹理等建立联系,从而用属性信息控制模型的大小、结构、纹理等,可以实现真实感的三维建筑的快速批量构建。然后通过编制模型导出、导入插件,使三维模型与3dmax无缝集成,弥补了3dmax插件与上文计算机程序建模方法的不足,为城市管理中大规模城市快速批量自动非精细三维建模提供实用、低成本、高效率的解决方案。

附图说明

为了更清楚地描述本发明一种基于非精细建筑物批量快速三维建模的设计与实现方法的工作原理,下面将附上简图作进一步说明。

图1为建筑物批量快速三维建模流程图;

图2为三维模型导出导入流程图。

具体实施方式

本发明针对建模精细度要求较低的建筑物进行批量建模。将建筑物的底面数据、纹理数据作为三维建模的基础,结合采集数据及建模要求,对建筑结构和纹理进行统计、归纳和整理;通过cityengine软件提供的几何函数,编写规则程序联接几何数据、属性、规则、纹理库可以很好地对建筑物进行批量自动建模,并将建立的三维模型批量导出,在3dmax通过格式转换可应用于supermap8c或skyline等三维平台。

总体流程

结合附图1、2,首先,应用gis和cad等技术获取建筑二维底面数据,导入arcmap中添加建筑物主体高度、建筑物主体纹理、屋顶结构、房上房高度及结构等字段,将对应的属性信息添加到属性表中;其次,编写快速批量生成三维模型的程序;通过几何操作函数构造生成建筑结构的方法和获取建筑纹理的方法,先初始化建筑高度、纹理、屋顶结构和房上房结构参数,然后在建模过程中将建筑底面属性表的信息传递给初始化的参数,使建筑物的真实结构、纹理、高度等信息表现出来,以到达到模型逼真的效果。最后,在cityengine中运行批量单栋导出obj建筑模型的插件(python语言),然后在3dmax中运行批量导入obj模型的插件(maxscript脚本)导入模型,将导入的三维模型数据进行场景整合和格式转换,接着转换到supermap8c或skyline三维平台中。

1、生成建筑结构和获取纹理的实现原理

1.1建筑物屋顶样式与房上房结构

基于cityengine参数化批量建模是计算机程序三维建模,建筑模型的结构的生成依赖于(computergeneratedarchitecture,cga)规则程序的几何函数。调用cityengine中的几何操作函数及几何形状属性函数构造生成建筑屋顶的函数,并设置不同的代码用于对应不同的屋顶结构。在录入建筑物屋顶结构属性时,对照建筑真实的屋顶结构录入相同屋顶结构对用的代码;生成模型的过程中,建筑底面表示屋顶结构的属性值作为实际的参数传递给生成屋顶结构的函数,从而生成与实际建筑物相同的屋顶结构。

首先将针对不同的屋顶结构,设置不同的参数变量:

attrroof_style=1//初始化一个值,1表示女儿墙屋顶

roof(roof_style)-->

building_roof(roof_style)

然后分别构造roof_style为不同值的屋顶结构,且为1至8依次为:女儿墙屋顶、阶梯式屋顶、单坡屋顶、双破屋顶、四坡屋顶、金字塔屋顶、半四坡屋顶、歇山顶屋顶。

1.2模型纹理获取

根据某社区的真实建筑物制作纹理库,包含窗户纹理、墙体纹理、门纹理和屋顶纹理。在录入建筑物纹理属性时,对照建筑真实的纹理录入相同纹理的名称;在cga建模程序中构造获取纹理的函数,将纹理名称作为变量。生成模型时,建筑底面要素表示纹理属性的属性值作为实际参数传递给获取纹理的函数,来获得建筑的纹理贴图,从而保证建筑物的纹理与实际纹理相符。获取纹理的构造函数:

attrvalue_wall=10//初始化一个值,建模时属性“wenli”为实际参数

texture(getwalltexture(“qt”,value_wall))

getwalltexture(type,value_wall)=“czc2/czcqt/”+type+value_wall+".jpg”

1.3建筑底面的预处理

如果建筑底面的原始数据是cad数据时,需要对原始数据进行预处理,删除多余的要素,保留建筑底面数据和建筑物相关信息。然后将预处理好的cad建筑底面数据导入到arcmap中转化为shp面数据,并添加投影信息,本方法采用utm84投影坐标系,然后添加建筑物主体高度、建筑物主体纹理、建筑物屋顶类型、房上房结构、模型名称等字段,并将采集的建筑相片或影像、建筑的真实的结构和纹理与建模程序中定义的控制模型结构或纹理的代码进行对照,添加对应的属性值。

2、批量快速自动生成建筑物三维模型

将预处理完成的二维建筑物底面数据导入cityengine中,选择建筑底面并关联建筑底面的建筑高度、建筑纹理、屋顶样式、房上房结构属性字段,然后运行三维建模规则程序,批量生成建筑三维模型。建模程序依次读取每一个shp面以及对应的属性信息(建筑高度、建筑纹理、屋顶样式、房上房结构),并根据建筑底面的属性信息获取对应的贴图,生成对应的屋顶结构和房上房结构。采用该方法进行建模,模型的生成效率高,模型的结构和纹理与实际建筑基本一致。

3、模型批量导出与导入小插件实现

cityengine模型的批量导出

数字三维城市建设中,在supermap8c或skyline中构建三维场景需要在3dmax中将三维场景分别转换为fbx格式或.x与xp2格式的数据,然后再导入到三维平台中。本方法批量快速自动建模方法提高了自动建模方法,及3dmax插件批量建模方法建立模型的精度,最终建立的模型需要导入到3dmax进行格式转换,所以需要在cityengine软件中将全部建筑模型导出。但是通过cityengine软件的模型导出功能批量单栋导出的模型,再导入到3dmax中所占的内存过大,影响模型的使用;这是由于模型导出功能导出模型时将全部材质合并到一个文件中,再导入模型时需要每一栋模型都导入整个材质文件,致使模型所占内存过大而不能使用。通过cityengine内置插件程序(python语言与cityenginepython模块)编制批量单栋导出建筑物模型的插件可以解决模型占内存过大的问题。按照房屋面批量单栋导出obj格式建筑模型,这也是该方法可行的关键所在。在arcmap二维建筑物底面数据预处理过程中添加模型名称字段,且其属性值需唯一,以免不能将全部建筑模型导出。

3dmax模型的批量导入

3dmax在三维建模方面具有丰富的工具,材质贴图等,但3dmax导入三维模型功能只能单次导入单个obj模型。为了提高工作效率,使用maxscript脚本语言编制批量导入obj格式模型的插件,该插件可以批量自动快速地导入obj格式的建筑模型。运行插件,将obj格式建筑模型全部导入3dmax中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1