APP下载

基于CGA 的大规模三维城市模型构建方法研究

2020-06-08邵泽凤邹青青张荣华任义兰

现代计算机 2020年12期
关键词:文法脚本建模

邵泽凤,邹青青,张荣华,任义兰

(蚌埠学院计算机工程学院,蚌埠233030)

0 引言

三维城市模型是数字地球向动态化、多维化、网络化、智能化发展的底层基础软件之一,城市虚拟场景凭借其良好的直观性与沉浸感已成为数字地球信息系统中常用的现实表达形式,对城市建设的决策与调控有重要的指导作用。随着三维场景建模技术不断改进与革新,三维建模软件(如3D MAX、Maya、3Dimage、CAD等)能够完成精细模型的设计与实现,仿真程度高,适用于规则模型与非规则模型的构造[1]-[2]。虚拟城市模型构建中,楼宇建筑、道路等模型具有几何特征,共性较大,针对城市模型大批量生成的场合,上述软件的效率优势不明显。激光点云扫描是近年来的新兴技术,扫描系统通过对现实环境的扫描、分析处理及三维重建,可提供精度达0.4m 的现实要素密集场景[3-4]。扫描大规模城市区域时,获取的点云数据量巨大,数据中存在大量立面,对数据分类、直接抽取建筑物边界难度较大,为获得准确三维场景,需要借助大量相关算法完成三维重建。近年,在三维建模技术领域,语言描述定义三维模型的方法,如VRML(Virtual Reality Modeling Language)/Web3D、GML(Geography Markup Language)等,均从语义层次定义三维模型的外型及模型直接拓扑关联,由于具有良好场景沉浸感及动态可交互性,该类方法被广泛研究与关注[5-9]。本文研究一种基于符号形式文法的CGA(Computer Generated Architecture)脚本语言,分析CGA 的原理依据、建模流程以及在文法规则定义下虚拟场景模型的构建方法,并从大规模批量城市模型生成的应用角度,讨论该方法的生产效率。

1 建模原理

语言学家Chomsky 阐述了语言遵循的文法,该文法以形式的语法为特征,不受语境影响,并带有转换生成规则[10]。Chomsky 关于语言学的文法结构理论被广泛应用在语言翻译、高级程序语言编译、机器人命令识别等领域。将定义文法的四元组(终结符号集,非终结符号集,生成规则集,文法开始符号)的终结符号集合更换为图形样本,转换生成规则用于描述图形样本向三维空间的生成模式,基于描述语言的形式文法构建三维模型的符号形式文法,拓展Chomsky 形式文法理论在三维建模领域的应用[11]。生成规则的定义是该方法三维建模的关键部分,实现鉴于城市建筑物特点,以四边形图形样本为例,三维模型文法的转换生成规则描述如表1 所示。

表1 中三维模型转换规则上下文无关,用于推导模型生成。模型构造过程中,生成式规则决定三维模型中一个部分(或者整体)的重新构建,即用表中的生成式右部模型替代表中相应左部,完成模型细节重构。生成式集合定义是符号形式文法三维建模的关键因素,集合中的生成规则推演样本图形的变换过程,通过程序描述并实现每个产生式规则的含义,从样本形状符号开始,迭代计算出最终模型并优化设计内容。

2 三维场景建模

2.1 流程

传统三维建模方法先使用标准基本体(平面、圆柱、长方体等)等进行搭建,接着按实体目标对模型造型加以修改,然后赋予纹理,最后对场景完善[7]。与传统方法不同,基于文法规则的过程式建模方法利用生成式规则描述模型的产生过程:根据现实世界中建筑模型特征,设计模型生成CGA 脚本;将现实地图数据置于坐标原点垂直场景Z 轴平面,网格范围内循环生成相邻多边形,形状域大小向量受阈值限制,生成基础形状集合;每个网格内选定一组规则集脚本,复用于片区内坐标随机选定的形状域,批量生成模型;根据设计要求定义立面风格的程序化脚本,细化模型;绘制模型三维视图,渲染效果图和交互。

2.2 CGA脚本

CGA(Computer Generated Architecture)文 法 是Wonka 等人[12]引入的集合语法的扩展,作为一种顺序语法与Chomsky 语法类似,适合捕捉随模型变换的信息,规则的顺序应用适用于描述结构,即特征和成分的空间分布。几何样本集合是生成模型的起点,给几何样本赋予一定的规则,生成器依据脚本规则迭代运算进行建模。借鉴L-System 系统[13],CGA 扩展了组件拆分、语法符号添加、缩放、平移和旋转形状的一般规则。根据表1 与CGA 文法扩展,编辑单个建筑模型规则脚本(程序清单1)内容如下。

表1 生成式规则与脚本语言描述

图1 模型产生过程

以上程序清单作用于图1(a)中的二维图形lot,按照height 的高度值生成模型的三维主体图1(b)。该形体又拆分为六个面,其中,顶面bld_top 替换生成双坡屋顶图1(e),四个侧面分割成楼层再进行纹理贴图。传统纹理贴图处理三维模型的完整表面,通过UV 坐标映射于现实坐标,调整图片的覆盖方向与次数,CGA分割规则将完整模型立面按楼层水平或垂直方向分割,分割后的小单元按需求生成形态各异的三维模型(如程序中分割成的X、Y、Z),并在各自纹理坐标中分别赋予不同外观设计(诸如向阳性、光照面、立面漫反射、与邻近建筑物距离等),建筑物性质即能在CGA 文法规则中得到细化。

2.3 大规模模型生成

通过开源地图协作计划OSM(Open Street Map)获取建筑、街道矢量数据,基于OSM 地形数据地图底层创建三维场景,还原城市原貌,三维城市场景即能为地理信息系统应用提供支持[14]。现实地图相符道路区块内部的二维几何图形是每个建筑类型底面的基本形状要素,树状型的底面拉伸为柱状,并且适应不同的地形地貌,通过距离的定义和方位限制来确定图形的邻近关系和模型坐标域主轴。

OSM 区域块内的二维图形存在多样性(包含三角、多边形、树状、多米诺或小方形等),模型生成器按照CGA 脚本中规则约束,根据不同的初始形状自适应生成造型不同的建筑体(如图2),建筑立面依据相交线重新建立边界,快速完成模型整体构建。

图2 CGA脚本作用于不同的图形

设计五种不同建筑风格的CGA 脚本,将OSM 地图二维几何图形地块作为五种CGA 脚本的输入,在CGA 脚本描述规则作用下,即可输出一个大规模以及详细模型的场景并写入磁盘,批量模型生成效果如图3所示。以主频2.0GHz 的CPU、2G 内存的运算环境为例,一个包含5 万个多边形的模型(图3a)需要0.98秒,写模型入磁盘约0.55 秒。

图3 批量建模渲染效果

3 对比分析

VRML 引擎采用复用技术应对模型重构,从而降低设计过程中存储消耗。一个三维模型创建完成后,可以嵌入复用到其他的需要的三维场景中,而无需重新编制代码。模型重用时,可保持模型原有参数不变,也可进行坐标或比例的变换,目标需求改变的情况下,不能根据需求自适应改变模型本身的形状特征,只能重新设计。GML 高细节层次LOD(Levels Of Detail)模型时,存在时间和存储的大量消耗,随着模型数量的增加,GML 消耗成本与模型数量成正比。当场景模型需求数量大幅上升,基于上述两种语言的研发周期随之增加,时空消耗问题变得更加明显。

CGA 规则集合模块化的前提下,渲染一个更大的城市,如几十亿个多边形,需要一个层级可靠的手动模拟不同细节级别的LOD 解决方案,通过将高分辨率终端与低分辨率终端互换,以及调整产生建筑模型的CGA 脚本,节省内存开支。通过CGA 脚本复用,快速进行大规模城市批量建模,较短的工作周期即可实现10 平方公里的城区虚拟规划,并完成整个规划项目的虚拟模型场景开发工作。

表2 三维建模语言功能与应用对比

4 结语

在三维建筑模型构造过程中,CGA 脚本描述了二维图形演算成三维模型的过程,其建模原理与现有的三维描述语言不同,是基于规则运算迭代完成模型的推演。CGA 建模方法具有较强的适应性,根据给出的初始图形符号的不同,完成相适应建筑模型构造,依赖于三维建模引擎在模型构造过程中对初始图形三维域的演算以及模型立面的运算与重组。三维建筑模型先分割后映射纹理,有利于生成更细致的渲染效果,同时分割体可独立运行不同规则,再次迭代后,有助于生成需求的目标模型。基于OSM 矢量地图数据进行大规模三维城市模型构建,对比于VRML、GML 语言建模方法,CGA 脚本描述的文法规则建模方法能够在较短周期内快速生成不同风格的三维建筑模型;且当模型数量激增时,CGA 方法从建模原理本质上体现出较高的生成效率。

猜你喜欢

文法脚本建模
物理建模在教与学实践中的应用
在经历中发现在探究中建模
思维建模在连续型随机变量中的应用
基于Java的递归下降语法分析器的实现
求距求值方程建模
自动推送与网站匹配的脚本
教育精英化还是平等化
文法学校见证英国两党争斗
举一反三新编
捕风捉影新编