发明名称 一种顾及城市意象的城市建筑综合与渲染的方法
摘要 本发明涉及一种顾及城市意象的城市建筑综合与渲染的方法。该方法将建筑群模型中精细的连续面片抽象为直观的二维形状,借助于一种多分辨率表达树(EBT)渲染出比CityGML标准中定义的细节层次更加灵活的城市意象,同时保证了城市意象的可读性和逼真性。本发明还设计了自动道路分析算法用来提取城市意象的相关空间要素,以此辅助于建筑的聚类和合并,利用索引机制存储抽象边FEdge、建筑群实例和EBT作为城市建筑综合结果,以便在渲染城市LOD场景之前对综合结果进行灵活预处理,并方便模型更新。本发明提供了一种实时三维数字城市模型可视化渲染的方法,在城市导航、空间位置服务等方面具有广阔的应用前景。
申请公布号 CN102663800A 申请公布日期 2012.09.12
申请号 CN201210124656.5 申请日期 2012.04.26
申请人 北京师范大学 发明人 张立强;张曼;陈栋
分类号 G06T15/00(2006.01)I;G06T17/00(2006.01)I 主分类号 G06T15/00(2006.01)I
代理机构 代理人
主权项 一种顾及城市意象的城市建筑综合与渲染的方法步骤包括:步骤一:构建抽象边结构抽象边FEdge由一条子边或多条互相连接的子边组成,每条子边对应一个或多个小的贴图面元(FEdge element),三维建筑模型被抽象成一个具有多个墙面FEdges和一个屋顶FEdge建筑群,每个FEdge具有二维几何形状和一些对应三维面元FEdge elements,FEdge代表的面类型通过计算FEdge包含的所有FEdge elements的平均法向量来区分。分割墙体和屋顶,分别提取每一部分的足迹图,简化后的足迹图用来生成FEdge的几何实体,为了降低简化过程的计算量,将屋顶足迹图的顶点映射到墙面足迹图的顶点上,最后,把墙面简化足迹图上的每条边作为墙面FEdge,整个屋顶简化足迹图作为屋顶FEdge,垂直投影在FEdge上的面片作为该FEdge对应的FEdge elements,为了便于新FEdge element的生成,每个FEdge element均使用基于FEdge的相对坐标进行记录。综合结果不直接记录综合后的建筑表面,而是通过记录FEdge的拓扑关系来间接表达面片的几何结构,以便在可视化之前对面片进行灵活处理生成可渲染的建筑群实体。步骤二:建立层次缓冲区树结构EBT在建筑综合之前,基于图像处理方法进行城市道路的自动分析,在道路分析过程中,提取了道路中心线和建筑缓冲区用于辅助城市建筑模型的聚类和合并,对原始建筑模型进行聚类和合并,得到级别不同的建筑群,使用树状结构记录建筑群之间的层次关系,该结构称为多分辨率表达树(EBT),在EBT中,每个树结点包含一个建筑群的指针,同一深度层的树结点共享同一个细节层次(LOD),靠近根结点的树结点对应较粗LOD的建筑群,而靠近叶结点的树结点对应较精细LOD的建筑群,EBT中的LOD生成分为两个步骤:通过连续聚类生成城市场景的多个连续LOD,之后,从这些具有连续LOD的聚类结果中选择对其有意义的结果,并赋予离散的LOD。步骤三:三维建筑模型抽象建筑模型抽象的主要任务是在原始建筑面元中选择关键顶点和关键边,进而创建FEdge,一个三维建筑模型被抽象成多个墙面FEdge和一个屋顶FEdge分为三个步骤:建筑分割和足迹图提取;简化足迹图生成FEdge的二维几何实体;映射原始模型的面元生成FEdge element;建筑足迹图简化分为四个步骤:将短边向长边平移;合并具有相似法向量方向的相邻边;计算凸包消除凹角;细化凸包保留重要的凹角;将屋顶面元全部映射到屋顶FEdge上,而将墙体面元映射至和它具有最相似法向量方向和水平面投影的墙面FEdge上,如果没有明确区分 墙体和屋顶,则先执行一个自动区分墙体和屋顶的过程,在这种情形下,所有的面元(除基地平面外)将被投影到屋顶FEdge确定的屋顶平面上,如果一个面元的绝大部分在该平面以上,则视为屋顶面元,否则,看成是一个墙体面元,进一步寻找其对应的墙面FEdge。步骤四:用图像处理方法实现缓冲区聚类本发明的缓冲区聚类基于图像处理的自动道路提取方法,图像范围是比整个城市建筑的包围框略大的矩形城市区域,所有建筑的墙面FEdge围成的多边形都被投影在该城市区域内。将所有简化后建筑群的墙面FEdge围成的足迹多边形投影在与城市区域一样大的水平面上,并将所有投影区域使用建筑的ID号进行标识,生成建筑的ID图,没有标识的区域为道路区域,为这些道路区域计算棋盘距离,作为该点的道路宽度,生成道路宽度图,计算棋盘距离时,有标识的建筑区域同时向未标识的道路区域膨胀至道路中心,生成建筑缓冲图,提取建筑缓冲图的边缘得到类似于道路中心线的结果,生成道路中心图,检测道路中心图相邻两栋建筑的缓冲区边界,找出所有的相邻建筑对,使用这些相邻建筑对将原始建筑逐步聚类成EBT中不同层次的建筑群,在聚类过程中,将每个相邻建筑对包含的两栋建筑群对应的子结点合并成一个父结点,为了限制树的深度,每层次的聚类允许多个相邻建筑对进行聚类,当父节点数目首次不大于子节点数目时,终止该层次的聚类。聚类的精确度和相邻建筑对的聚类顺序有关,排序过程中同时考虑了道路宽度和每个建筑对的几何特征,一方面,为每个建筑对之间的缓冲区求取平均缓冲距离;另一方面,聚类过程中动态计算每个相邻建筑对的最小包围框,每一步聚类时,选取具有最小缓冲距离和最小包围框的相邻建筑对进行聚类操作并进行建筑的包围框更新。步骤五:FEdge合并和面元重构生成EBT中表示建筑群的树结点并将其组织成树状结构后,下一步创建每个建筑群的几何和纹理,每个对应的树结点有一个指定的LOD,两个离散LOD之间允许有多个连续LODs作为它们之间的平滑过渡。合并的过程分成两部分:FEdge几何实体的合并;FEdge对应面元的重新构造,为了获得自然合理的综合场景,几何和纹理的对应在合并和重构过程中是必须的,由于墙体和屋顶在几何和纹理上差异较大,本发明分别说明这两部分的合并和重构过程。(1)建筑墙体当合并不同建筑群时,首先合并它们自身的缓冲区,合并后的缓冲区形状用于辅助生成新的合并后建筑群的FEdge,随着FEdge的连接、合并和删除,对应的FEdge elements也执 行相应的操作。为了合并两个子建筑群,首先为父建筑群生成能合并其所有子建筑群的新缓冲区,然后追踪新缓冲区的边界,寻找对应子建筑群的顶点,沿新缓冲区的边界,在每个像素点一定范围的邻域内寻找离该像素点最近的子建筑群的顶点,并依次连接,删除相邻重复顶点后,剩余顶点序列组成多边形,作为父建筑群的足迹图,边界追踪算法的最终精度取决于采样顶点之间的最小距离、新缓冲区的形状以及缓冲区距离,在获取新足迹图的过程中,用能够合并所有子建筑群的缓冲区距离最小的新缓冲区计算更精确的父建筑群的足迹图,为了加速新缓冲区的生成,在合并一些大建筑群时,直接合并它们在建筑缓冲图中的缓冲区。(2)建筑屋顶在处理建筑群屋顶时,预先为建筑群生成一个有着平均高度的平屋顶,在可视化过程中,渲染部分高度突出的建筑以维持城市场景中建筑高度维的特征,为了填充新面元,需要在屋顶FEdge围成的空间内进行Delaunay三角剖分,面元的重要性由该面元的高度决定,随着面元的逐步简化,具有连续LOD的一系列屋顶被构造出来。本发明使用预先定义的颜色将这些城市意象与一般小型的建筑群意象区分开来,同时,为了简化这些城市意象中不重要的屋顶细节,在三角剖分之前对屋顶内部的原始顶点进行删除,首先,将父建筑群的高度设置成子建筑群的带权平均高度,权重和子建筑群的足迹图面积成正比,根据子建筑群的高度与父建筑群的高度差选出高度维上较为重要的子建筑群,将它们顶端抽象为各自屋顶的中心,这些屋顶中心最终和父建筑群屋顶边界上的顶点一同参与三角剖分。步骤五:EBT可视化渲染相邻离散LOD间通过添加连续LOD对可视化结果进行平滑,预可视化之前,在EBT的所有树层次中选择了部分层并为它们指定适合其意象的LOD,可视化过程中,分两步对城市综合结果进行渲染,首先,如果视点到城市中心的水平距离大于给定的距离阈值时,抽象意象的树结点将被渲染,否则,渲染仿真的树结点;其次,像素误差作为精细筛选具有特定LOD的建筑群标准,为了保证渲染结果的连续性,可视化过程中,建筑群在综合前后具有负空间的体积差异,分别投影这个体积差异到水平和垂直方向上,形成水平误差和垂直误差,在EBT中,叶结点体积差为0,预计算完所有建筑群的体积差后,沿叶结点向根结点方向对体积差向上一级做一次累积,最后,实时渲染城市场景过程中,一旦父建筑群的投影误差超过给定的阈值,则渲染子建筑群。
地址 100875 北京市海淀区新街口外大街19号科技处