CN104392489B - 顾及拓扑的三维地理空间实体群的线消隐方法 - Google Patents

顾及拓扑的三维地理空间实体群的线消隐方法 Download PDF

Info

Publication number
CN104392489B
CN104392489B CN201410583209.5A CN201410583209A CN104392489B CN 104392489 B CN104392489 B CN 104392489B CN 201410583209 A CN201410583209 A CN 201410583209A CN 104392489 B CN104392489 B CN 104392489B
Authority
CN
China
Prior art keywords
limit
face
situation
visible
common
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201410583209.5A
Other languages
English (en)
Other versions
CN104392489A (zh
Inventor
虞昌彬
李霖
赵志刚
贺彪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN201410583209.5A priority Critical patent/CN104392489B/zh
Publication of CN104392489A publication Critical patent/CN104392489A/zh
Application granted granted Critical
Publication of CN104392489B publication Critical patent/CN104392489B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/05Geographic models

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Remote Sensing (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

一种顾及拓扑的三维地理空间实体群的线消隐方法,所述三维地理空间实体群的三维空间数据模型包括节点、边、环、平面片和体这5类基元,预设的规则包括给予消隐的每个实体必须是剖分完全的,设定了只共面、只共边、只共点、共面面、共边面、共边边、共点面、共点边、共点点的情况;进行消隐过程,包括顾及拓扑关系的消隐预处理,扩展的第一类线消隐处理处理自遮挡的情况,扩展的第二类线消隐处理处理互遮挡的情况。与现有三维实体集合线消隐的相关技术相比,本发明能够实现三维实体集群的线消隐处理,对实体的各种情况都能准确进行处理。

Description

顾及拓扑的三维地理空间实体群的线消隐方法
技术领域
本发明涉及三维地理空间数据组织与可视化的技术领域,尤其是涉及一种顾及拓扑的三维地理空间数据的线消隐方法。
背景技术
用计算机生成三维形体的真实感图形,是计算机图形学研究重点之一。真实感图形在仿真模拟、几何造型、科学计算可视化等多个领域具有广泛应用,其生成过程涉及消隐。消隐,就是运用某种技术手段判别物体的隐藏部分(不可见的线或面)并将其从画面中消除或用虚线绘制的过程,也称可见性测试。消隐后的图形,称为Shaded Picture或者Half-tone Picture,与物体的可见性判定(Visibility Determination)在原则上等价。采用消隐后的二维线框图形来表达真实的三维图形,输入数据为三维实体群,输出数据为二维线框。因为输出数据是线框,面在输出结果中是不表达的,所以核心是线状实体在最终输出结果中的可见或不可见表达。消隐的过程,其实是不断趋近最真实的面与线可见性判定的过程。
之所以消隐在真实感图形生成过程中非常重要,是因为:(1)三维信息在经过二维投影变换后失去了深度信息,往往导致图形表达的二义性,需要在绘制二维图形同时通过隐藏物体的不可见部分来辅助展现三维立体形态;(2)消隐是生成真实感图形的重要组成部分,它为后续的光照模型设置、表面渲染(包括纹理映射)提供了基础。
消隐方法至今研究众多。面对迄今为止众多的消隐算法研究,分类方法也有所不同,可归纳如下:(1)根据消隐方法分类,包括物空间消隐和像空间消隐;(2)根据消隐对象分类,包括线消隐和面消隐;(3)根据实现途径分类,包括计算机软件实现和硬件实现。现有多采用第一种和第二种分类方法,特别是第一种分类方法。具体的,物空间消隐以三维场景中对象为处理单元,在所有对象之间进行比较,除去不可见部分。物空间消隐多用于线消隐,也用于面消隐。像空间消隐以构成图形的每一个像素为处理单元,针对场景中所有在该像素上有投影的表面,确定其中相对于观察点的可见表面,用该表面颜色填充该像素。像空间消隐多用于面消隐。
自从Robert于1963年提出处理隐藏线、Weiler等于1977年提出处理隐藏面的算法以来,消隐算法层出不穷。针对现有大量的针对消隐处理的文献研究,往往采用像空间、物空间、像空间和物空间结合这三个分类。
针对基于像空间的诸多消隐算法,其中Z缓冲器算法最为有名,它也是最为目前常用的作用于像空间的隐藏面消除算法,它在工业界被广泛采用,可通过硬件实现。例如,OpenGL作为工业界事实上的标准,其采用的就是Z缓冲器算法。针对基于像空间的消隐算法,以像素为基本研究单位,与完全基于物空间的消隐算法相比其涉及计算几何内容较少,其本质上属于图形图像学领域。故而,完全基于像空间的消隐算法、结合像空间和物空间的消隐算法不是本发明的研究重点,基于物空间的消隐算法才是本发明的借鉴对象。
此外,针对完全基于像空间、结合像空间和物空间的消隐方法,它们的算法复杂度与环境复杂度无关(如与三维实体包含了多少面片、多少线段无关),只与输出设备的像素分辨率有关,故而无法在图像缩放时依然保持足够清晰度,可视化效果不理想;相对的,针对完全基于物空间的消隐方法(包括Apprel方法、Loutrel方法、Galimberti方法、Mononari方法等)的空间复杂度,都与环境复杂度的平方呈现正相关,在图像缩放时依然保持足够清晰度,可视化效果理想。这也是本发明的重点参考对象是基于物空间的消隐方法的原因。
按照不同消隐客体分类,还包括针对机械零件、针对曲面、针对地形、针对地质栅栏等消隐。还有许多研究关注如何设计应用于消隐的数据模型或数据结构,基于现有不同数据结构能够实现一定程度的物空间消隐,但各自存在局限性,因为受本身数据结构的局限较大(之后详述)。
由上可见,有的研究注重消隐方法的输入数据类型(如针对机械零件、针对曲面、针对地形、针对地质栅栏),有的研究注重输出结果的表达形式(如P缓冲器算法中输出结果的不同类型表达),有的研究注重应用于消隐的数据结构设计(如半边结构、B-rep结构、B-rep与CSG结合、有限元组织形式),更多的研究关注消隐方法的设计原理(如各类物空间算法、像空间算法、物空间与像空间结合算法)。
综上所述,每一个消隐方法事实上都可以从它们共同拥有的五个方面着手给予归纳,即每一个消隐方法可以看成是一个五元组集合,即:HA=(I,O,D,P,S)。其中:HA是一个消隐方法,I(Input)为要进行消隐处理的三维对象的集合,简称输入;O(Output)为经过消隐处理的二维对象的集合,简称输出;D(Data Structure)为进行消隐处理时采用的数据结构,简称数据结构;P(Procedure)为进行消隐所需基本操作过程的集合,主要包括:分类、排序、三维坐标变换、透视投影变换,基本图形元素的求交计算,两个区域重叠判断,点与区域的包含测试,面的朝向测试,简称过程;S(Strategy)为消隐策略,即规定P(Procedure)中各操作过程被采用的先后次序,简称策略。
消隐方法之所以不同,主要在于因素I,D,P,S,其次在于因素O。针对I,只有保证输入数据是正确的,才有可能通过正确的消隐过程得出正确的消隐结果。针对D,即消隐处理时采用的数据结构,针对同一消隐方法往往可以采用不同的数据结构进行算法实现,算法效率有所差异,如BSP树算法就是利用了二叉树来分割和显示场景从而加速消隐速度;再如针对采用边界表达模型组织的实体,可以用半边结构(Half-edge)组织,还可以用翼边结构(Winged-edge)组织,采用何种结构对算法效率有影响。因素I与因素D密切相关。针对P(即分类、排序、包含性测试、可见性测试)和S(即P中各基本操作过程被采用的先后次序),它们也紧密相关,共同描述了消隐算法的基本原理,从根本上影响算法正确性。针对O,其对输出结果的可视化效果产生影响,但不影响算法正确性。故而,认为因素I,D,P,S是决定因素,因素O是辅助因素,且I与D关系紧密,P与S关系紧密。可进一步如下归纳:
正确的输入I(合适的数据结构D)+正确的处理过程P与S=正确的输出O
尽管如此,现有的文献与研究极少深入分析消隐方法的I(Input),特别是针对众多的物空间消隐方法,没有深入分析输入数据中各类基元的特征,尤其包括用于消隐的线是怎么样的线、面是怎么样的面、体是怎么样的体,同时没有系统归纳这些基元之间的拓扑关系,尤其是体与体之间拓扑关系的分类。哪些算法有能力实现单个凸多面体的消隐、哪些算法能实现单个凹多面体的消隐、哪些算法能够实现带洞的多面体的消隐、哪些算法能够实现多个凸多面体的消隐(包括凸体与凸体之间可能分离、可能相邻等)、哪些算法能够实现多个凹多面体的消隐(凹体与凹体之间可能分离、可能相邻等)、哪些算法能够实现凹多面体与凸多面体混合时的消隐处理(凸体与凹体可能分离、可能相邻等),这些在现有研究与文献中都没有给予系统归纳(本发明中稍后归纳);同时,能够实现以上消隐处理的各个数据模型或结构有何特点、有何约束,消隐算法各自又有何区别,现有文献或研究均没有深入分析。是否能够给出一种能够既能实现凸多面体消隐、又能实现凹多面体消隐、而且这样的体是集群的(体与体之间包括分离、相邻于点、相邻于边、相邻于面等)的统一消隐算法,更是值得深入考虑。这正是本发明的研究重点。
本发明为“一种顾及拓扑的三维实体集群的线消隐方法”,其着眼点在于“顾及拓扑关系”。故而,在给予发明内容的详细阐述前,首先回顾当前三维空间数据模型的研究现状,之后分析当前拓扑关系的研究现状,然后给予几个当前成熟的标准和三维软件中模型及其拓扑关系的现状分析。具体包括:
一.当前三维空间数据模型的研究现状
至今为止,组织三维空间数据的模型研究众多,典型的包括三维形式化数据模型(3D FDS,3D Formal Data Structure)、简化空间模型(SSM,Simplified Spatial Model)、城市数据模型(UDM,Urban Data Model)、面向对象的三维数据模型(OO3D,Object-oriented 3D Data Model)。更为具体的,3D FDS提出最早,但针对点、线、面、体存在诸多约束;在SSM中,基本组织单元是面,面由弧段构成(而弧段由顶点封闭),面封闭了体;在UDM中,基本组织单元仍然是面,但面直接由顶点序列表达(省略了弧段),面封闭了体;在OO3D中,基本组织单元也是面,但约定面必须是三角面片(即三角形),每个三角面片由三个顶点构成,三角面片封闭了体。除了以上常见的三维空间数据模型外,还存在许多其它数据模型:
(1)国内外学者提出的服务于学术研究的三维空间数据模型
典型的包括自定义的、服务于学术研究的三维空间数据模型;
(2)作为业内或国际标准的三维空间数据模型
典型的包括在ISO和GML3中的数据模型;
(3)应用于商业软件的三维空间数据模型
典型的包括在Oracle中使用的三维空间数据模型。
无论是以上哪种三维空间数据模型,都强调单个三维实体内部各类基元如何构造。换言之,即都遵循“0维基元(如点)-1维基元(如弧段)-2维基元(如面)-3维基元(如体)”的层次性构造标准,只是不同数据模型中0维、1维、2维、3维基元有所不同。
二.当前空间实体间拓扑关系的研究现状
描述空间实体之间拓扑关系的方法众多,包括四交模型(4IM,4-Intersection Model)、九交模型(9IM,9-Intersection Model)、基于维数扩展的九交模型(DE9IM,Dimension-Extended9-Interseciton Model)、基于区域连接理论(如RCC-8)等。其中,前三种都是基于点集拓扑学原理,应用最为典型和广泛。特别是基于九交模型,针对三维实体之间拓扑关系给予分类,则面与面之间共有38种拓扑关系,体与体之间共有8种拓扑关系,面与体之间共有19种拓扑关系。其中,体与体之间的8种拓扑关系是研究重点,即相离(disjoint)、相遇(meet)、包含(contain)、包含于(inside)、覆盖(covers)、被覆盖(coveredBy)、相等(equal)、重叠(overlap)。
同时,在现实世界中要求三维空间是完全剖分的,最为典型的是三维产权体与三维产权体之间不能发生交叉或叠置情况,其类似于二维空间中宗地与宗地之间不能发生交叉或叠置情况,否则会在相交的二维(三维)宗地部分产生权利二义性,进而产生法律上冲突,这是必须禁止的。故而,以上约束会造成:在这8种拓扑关系中,包含(contain)与包含于(inside)、覆盖(covers)与被覆盖(coveredBy)、相等(equal)、重叠(overlap)是不被允许的。于是,只有相离(disjoint)和相遇(meet)是被允许的。同时,相离(disjoint)关系中两个三维实体之间没有任何交集,拓扑关系的构造与维护对象只是单个三维实体,相对简单。此时,只剩余相遇(meet)关系,在相遇(meet)关系中两个相邻实体之间存在共享的基元。
以上为点集拓扑学理论。进一步的,针对相交基元,如果采用相交基元的维度代替是否相交,则以上点集拓扑学理论中罗列的拓扑关系还可再次细分。针对三维实体与三维实体之间的相遇(meet)情况,可分三大类:相遇于点(meet at 0D)、相遇于线(meet at 1D)、相遇于面(meetat 2D)。从相遇于点、到相遇于线、再到相遇于面,这是一个连通性逐渐增强的过程。之后为阐述直观,相遇于点也称“点相邻”(或“共享点”)、相遇于线也称“线相邻”(或“边相邻”、“共享边”、“共享线”)、相遇于面也称“面相邻”(或共享面)。针对存在点相邻、或线相邻、或面相邻的三维实体集群,在现实世界中很常见,典型的如三维建筑体集群或三维宗地集群。如何针对这样的三维实体集群实现消隐处理,正是本发明的研究重点。
三.若干成熟的标准和软件中三维数据模型及其拓扑关系
(1)在OpenGL中的模型及拓扑
在图形可视化标准OpenGL中,存在两种模式绘制三维实体,一种是OpenGL的实用工具库(GLUT)直接提供了若干绘制三维实体的API,如glutSolidSphere、glutSolid等;另一种是采用二维图元的集合来模拟三维实体,典型的包括由三角形集(GL_TRIANGLES)、三角形带(GL_TRIANGLE_STRIP)、三角形扇(GL_TRIANGLE_FAN)、四边形集(GL_QUADS)所模拟的三维实体,虽然如此模拟的结果贴上纹理等信息后可以非常逼真地模拟三维实体,但从拓扑上不能够保证所模拟的三维实体的有效性。
(2)在ESRI ArcScene 3D中的模型及拓扑
采用MultiPatch要素类型来组织三维模型。MultiPatch在ESRI ArcScene中如下定义:描述三维表面的元素集合,最常见的包括;三角扇(TriangleFan)、三角带(TriangleStrip)、环组(Rings)。可见,采用MultiPatch通过表面建模方式来模拟三维实体与OpenGL中情况类似,同样没有三维实体的概念,没有实体间拓扑关系的明确定义,不能保证所模拟的三维实体的有效性。同时,值得指出的是,ESRI ArcScene 3D的可视化机制基于OpenGL(详见ArcGIS 10Help)。
(3)Google Sketchup中三维数据模型及拓扑
在Google Sketchup中,组织三维数据的模型基元包括点(Point)、边(Edge)、使用边(EdgeUse)、面片(Face)、组(Group)。值得指出的是,这里的“使用边(EdgeUse)”描述了“边(Edge)”的使用情况,其类似于三维组合图中的“投射(dart)”,其能够组织存在分离、点相邻、线相邻、面相邻的三维实体集群。然而,在Google Sketchup中,并没有真正的三维实体(3D Solid)概念,其用组(Group)来模拟三维实体(3D Solid),换言之,组(Group)可以是边(Edge)的集合,也可以是面(Face)的集合,故而作为面片(Face)集合的组(Group)不能够保证其模拟的三维实体一定是有效的三维实体,可能存在悬挂面/边、孤立面/边等奇异情况。
同时,在Google Sketchup中,针对三维实体的可视化框架提供了透视投影(PerspectiveProjection)和平行投影(Parallel Projection)两种模式,其中透视投影还可以选择单点透视(One-Point Perspective)或两点透视(Two-Point Perspective)。在以上模式中,在Google Sketchup中可以实现三维实体的消隐处理(Tools/View/Toolbar/Face Style/Hidden Line)。尽管如此,Google Sketchup的可视化机制同样基于OpenGL。进一步的,由于OpenGL中实现消隐是基于像空间的;所以Google Sketchup中无法针对隐藏线单独设置可视化样式。
(4)CGAL(计算几何算法库)中的模型及拓扑
CGAL全称“计算几何算法库(Computational Geometry Algorithm Library)”。在CGAL中,最为有名的是半边(Half-edge)和翼边(Winged-edge)数据结构。
针对半边(Half-edge)数据结构(Bronnimann,H.(2001).Designing and Implementing aGeneral Purpose Half-edge Data Structure.Algorithm Engineering,Springer Berlin Heidelberg,pp.51-60),其可以组织三维实体,由于半边结构的核心是半边,因此其构造层次性为“顶点-半边-面-体”。然而,半边结构只适用于组织有向二维流形(oriented 2-manifold)类型的实体,包括二维空间中的多边形实体集合、三维空间中单个三维实体、三维空间中彼此分离(disjoint)或只存在点相邻(meet at 0D)的三维实体集群。之所以如此,是由每条半边(Half-edge)只能相接于两个面片的特征所决定(Armstrong,M.A.(1979).Basic Topology[M],London:McGraw-Hill.),即这两个相接面片的可见性共同决定了该半边的可见性。换言之,半边结构不能组织三维流形(3-manifold)。
翼边(Winged-edge)数据结构(Baumgart,B.G.(1975).Winged-edge Polyhedron Representationfor Computer Vision.National Computer Conference,7p)同样能够组织二维流形(2-manifold)类型的实体,但不能组织三维流形(3-manifold)类型的实体,情况与半边相似。
相对的,作为半边(Half-edge)结构向高维空间的拓展,三维组合图(3D Combinatorial Map)结构可以组织三维流形(3D-manifold)。三维流形是指独立的d-cells通过(d-1)-cells以粘贴方式构成的对象,该结构中的核心空间单元称为“投射(dart)”,类似于“半边(Half-edge)”(CGAL v4.0,http:www.cgal.org;Brisson,(1990).Representation of d-Dimensional Geometric Objects.Ph.DThesis)。针对三维空间中的相遇(meet)情况,三维组合图可以组织存在点相邻(meet at 0D)、线相邻(meet at 1D)、面相邻(meet at 2D)关系的三维实体集群。尽管如此,根据笔者目前文献搜索,至今尚未有文献明确指出通过三维组合图组织的三维实体如何实现消隐,典型的包括相接于多个面片的投射(dart)如何根据其多个(>2)相接面片的可见性决定该投射(dart)的可见性。
(5)ISO 19107‘Spatial Schema’,GML3,CityGML中的模型及拓扑
值得注意的是,针对点相邻、线相邻、面相邻,它们在不同文献与标准中有着不同表达,如在ISO 19107‘Spatial Schema’、GML3、CityGML中的表达。其中,ISO 19107‘Spatial Schema’中是一个抽象规范,其拓扑关系也只是抽象定义;而OGC中的GML3是作为抽象的ISO 19107‘Spatial Schema’的具体实现;而CityGML的空间特征由GML3的几何模型对象表达,可见CityGML同样基于ISO 19107‘Spatial Schema’,事实上,CityGML只用了GML3几何模型的一部分。在GML3和CityGML中,组合实体可细分为聚合(Aggregate)、复形(Complex)、复合(Composite)三类,三者之间并不互斥,而是继承关系。更为具体的,
(i)聚合(Aggregate)
针对聚合(Aggregate),组件之间的空间关系不受约束,它们可以是分离、叠置、接触或连接。特别的,在三维空间中称为MultiSolid。由于MultiSolid中体与体可以叠置,故而不是研究重点;
(ii)复形(Complex)
与聚合相比,复形(Complex)在拓扑上受到约束,它的部件不能叠置,但可以分离或者沿着共同边界接触。特别的,在三维空间中,体与体之间不能叠置,但可以分离、可以共享面/线/点。换言之,包含了分离、点相邻、线相邻、面相邻这四种情况。
(iii)复合(Composite)
复合(Composite)是一种特殊的复形。它包含的元素必须是同一维度的。其组件的内部可以分离,但必须沿着共同边界拓扑连接。特别的,在三维空间中称为复合实体(CompositeSolid)。在复合实体(CompositeSolid)中,体与体之间必须沿着公共面/边/点拓扑连接。换言之,包含了点相邻、线相邻、面相邻这三种情况。
(6)在Oracle Spatial中的模型及拓扑
在商业软件Oracle中,Oracle Spatial模块用于组织二维与三维空间数据。其中,在组织三维实体数据时,实体间拓扑关系同样极大地参考了GML/ISO规范,但具体分类上有所区别:在Oracle中,三维实体可分为复合实体(Composite Solid)与实体集合(Collection)两类。
其中,复合实体(Composite Solids)是简单实体(Simple Solid)的组合,也称组合实体(Combined Solid)。复合实体(Composite Solids)通过简单实体彼此共享拓扑基元聚合而成,这里的共享拓扑基元只能是2维的面,因为:在定义上,复合实体(Composite Solids)通过去除共享拓扑基元必须能够转换为简单实体(Simple Solid),也即复合实体是连通的。换言之,只包含了面相邻该单一情况。构造复合实体的简单实体可以是凸多面体,也可以是凹多面体。
而针对实体集合(Collection),可分为同质实体集合(Homogeneous Collection)与异质实体集合(Heterogeneous Collection)。同质实体集合(Homogeneous Collection)由相同类型的实体聚集而成,包括多点、多线、多面、多实体,同质实体集合的构造元素类型从名称上便可辨别。异质实体集合(Heterogeneous Collection)是由不同类型的实体混合而成。如上所述,针对在三维空间中的同质实体集合,称为多实体。多实体与以上提及的复合实体(Composite Solids)有所区别,因此多实体增加了分离性的判别,也即多实体不仅禁止体与体之间相交,而且禁止用于封闭体的面与面之间相交。故而,在多实体中,实体与实体之间的共享基元只允许是1维线或0维点。换言之,只包含了分离、点相邻、线相邻这三种情况。
由上可见,针对三维实体之间拓扑关系,无论是采用聚合、复形、复合的分类体系,还是采用复合实体、实体集合的分类体系,本质上都归结于如何处理相离(disjoint)、点相邻(meetat 0D)、线相邻(meet at 1D)、面相邻(meet at 2D)这四种最基本拓扑类型。
以上分析了三维实体如何组织以及实体间拓扑关系如何分类,以下重点针对“现有的事实上涉及到各类拓扑关系的实体消隐研究”给予深入分析与归类。具体包括:
(1)涉及单个凸多面体的消隐研究
如上所述,Roberts算法于1963年提出,它是已知最早提出的消隐算法,它是一种线消隐算法,但其处理对象只局限于凸多面体对象、
(2)涉及单个凹多面体的消隐研究
涉及单个凹多面体消隐处理的研究包括(Rappaport,D.(1986).A Linear Algorithm forEliminating Hidden-lines from a Polygonal Cylinder.The Visual Computer,no.2,pp.44-53;Stroud,I.A.,Nagy,H.(2011).The CAD Interface and Graphical Output[M].Solid Modelling and CADSystems,Springer London,pp.339-365.;Kettner,L.,Welzl,E.(1997).Contour Edge Analysis forPolyhedron Projections[M].Springer Berlin Heidelberg;张佩翎.(1989).凹多面体表面的图示规律及在消隐处理中的应用.吉林化工学院学报,6(3):60-67;卓守鹏.(1982).利用棱线的图示规律处理凹多面体的隐藏线[J].浙江工业大学学报,(3):9-24;洪炳镕,张栋,范义文.(1980).多面体有效隐藏相关面的自动判定算法[J].哈尔滨工业大学学报,(6):40-45;张栋.(1988).关于计算隐线消除算法的研究.硕士学位论文,哈尔滨工业大学;洪炳镕,张栋.(1989).基于相关遮蔽面的多面体隐线消除的快速算法[J].哈尔滨工业大学学报,(6):25-31,42;洪炳镕,张栋.(1989).一种基于相关遮蔽面的多面体隐线消除算法[J].计算机学报,(9):717-720.)。值得指出的是,所谓被别的多面体遮蔽,实际上即被别的多面体的前向面遮蔽。
(3)涉及多个凸多面体的消隐研究
当前消隐研究中,有的消隐对象涉及多个凸多面体。这些凸多面体之间事实上存在多种拓扑关系,其中以分离关系居多,典型的包括(de Berg,M.,Gray,C.(2007).Computing theVisibility Map of Fat Objects.Springer Berlin Heidelberg,pp.251-262;毛峡,沈巍,赵兴圆.(2009).基于点线关系的透视图消隐算法[J].北京航空航天大学学报,35(8):925-928,937;高升宇.(2002).三维空间多面体消隐问题中可见子段的求解与归并[J].渭南师范学院学报,17(5):64-66)。
针对三维柱状图的消隐算法众多,事实上每个柱状实体都是凸多面体,而这些柱状实体之间基本呈现分离、面相邻、边相邻这三类关系。
其它研究还包括三维实体相互贯穿情况(即相交情况)下的消隐方法(曾接贤,高满屯,李建军.(1998).一种复杂形体消隐的新方法[J].南昌航空工业学院学报,1:22-27)。事实上,这种贯穿(相交)情况是不被允许的。
(4)涉及多个凹多面体的消隐研究
还有的消隐对象涉及多个凹多面体。事实上,这些凹多面体之间存在多种拓扑关系,其中以分离、面相邻这两类居多。
特别的,朱仁芝等阐述了针对带洞的三维实体如何消隐处理,但研究对象只是个别凹体对象,并不是针对大量实体集群对象,并不具备普遍适用性(朱仁芝,太美花,邓益民.(1996).凹体轮廓线算法及实现[J].计算机科学,23(2):58-60;朱仁芝,江涌,陶涛,刘磊.(1998).利用3维重建技术进行线框模型消隐的算法[J].计算机工程与应用,5:19-20;朱仁芝,太美花,邓益民.(1992).三维形体消隐和相贯线的一种新算法[J].中国科学技术大学学报,22(3):295-302;朱仁芝,刘磊,江涌,陶涛,卢继军.(1999).由表面模型表达的三维形体的一种消隐算法[J].计算机工程与设计,20(1):56-60.)
(5)涉及凸多面体和凹多面体混合集合的消隐处理
涉及凸多面体和凹多面体混合集合的消隐处理,具体包括(袁超.(2006).多个凹凸形多面体的深度消隐算法研究[J].四川理工学院学报(自然科学版),19(4):104-107;袁超.(2006).多个凹凸形多面体的深度优先消隐算法研究[J].计算机工程与应用,28(9):97-99,102.)。这些凹体与凸体之间可能存在多种拓扑关系,往往包括分离、边相邻、面相邻等关系。
可见,现有三维实体集合的众多消隐方法,对集合中每个三维实体的形态有所局限(即大多研究都要求三维实体是不带穿洞的体,只有少量研究允许体有穿洞),同时集合中体与体之间的拓扑基元如何实现消隐的研究并不系统与全面,往往只允许体与体之间分离、点相邻、线相邻、面相邻中的一种或几种,并没有给予以上关系并存时三维实体集群如何实现消隐的完善方案。
发明内容
为克服现有技术缺陷,本发明提供一种顾及拓扑的三维实体群的线消隐方法,该线消隐方法的着眼点在于“顾及拓扑”。
本发明的技术方案提供一种顾及拓扑的三维地理空间实体群的线消隐方法,所述三维地理空间实体群的三维空间数据模型包括点、边、环、平面片和体这5类基元,其中,点是0维基元,边与环是1维基元,平面片是2维基元,体是3维基元;
预设的规则如下,
规则1,待消隐的每个实体必须是剖分完全的;
规则2,当某体与另一个体存在的公共元素为2维时,称只共面;
规则3,当某体与另一个体存在的公共元素为1维时,称只共边;
规则4,当某体与另一个体存在的公共元素为0维时,称只共点;
规则5,当某体与另两个体存在的公共元素分别为2维时,称共面面,按照只共面的情况处理;
规则6,当某体与另两个体存在的公共元素分别为1维与2维时,称共边面,按照只共面的情况处理;
规则7,当某体与另多个体存在的公共元素分别为1维时,称共边边,按照只共边的情况处理;
规则8,当某体与另两个体存在的公共元素分别为0维与2维时,称共点面,按照只共面的情况处理;
规则9,当某体与另两个体存在的公共元素分别为0维与1维时,称共点边,按照只共边的情况处理;
规则10,当某体与另多个体存在的公共元素分别为0维时,称共点点,按照只共点的情况处理;
基于以上预设规则,进行消隐过程,包括以下步骤,
步骤1,顾及拓扑关系的消隐预处理,包括进行平面片的分类和边的分类,
进行平面片的分类如下,
(i)针对体与体之间存在只共面情况时,设定公共面为不可见面;
(ii)针对体与体之间存在只共边情况时,本步骤不做处理;
(iii)针对体与体之间存在只共点情况时,本步骤不做处理;
进行边的分类如下,
(i)针对体与体之间存在只共面情况时,公共面包含的边暂设定为可见边;
(ii)针对体与体之间存在只共边情况时,暂设定公共边为可见边;
(iii)针对体与体之间存在只共点情况时,本步骤不做处理;
步骤2,扩展的第一类线消隐处理,包括子步骤如下,
步骤2.1,进行后向面剔除,包括找到法向量与视线方向一致的平面片,这些平面片称后向面,后向面设定为不可见面,不参与后续步骤3;找到法向量与视线方向不一致的平面片,这些平面片称前向面,前向面设定为可见面;
步骤2.2,进行平面片的分类如下,
(i)将通过后向面剔除找到的所有不可见面,加上步骤1所得所有不可见面,取和得到完整的不可见面簇;
(ii)根据通过后向面剔除找到的可见面得到完整的可见面簇。
步骤2.3,针对仅相接于2个面的边,进行边的可见性判定如下,
(i)相接于2个不可见面的边,设定为不可见边;
(ii)相接于1个可见面和1个不可见面的边,暂设定为可见边;
(iii)相接于2个可见面的边,暂设定为可见边;
步骤2.4,进行边的分类,包括将步骤2.3得到的所有可见边,加上步骤1得到的所有可见边,取和得到完整的可见边簇,步骤2.3得到的所有不可见边为完整的不可见边簇;
步骤3,扩展的第二类线消隐处理,包括子步骤如下,
步骤3.1,边的细分,包括以步骤2.4所得完整可见边簇中的每条边为潜在可见边,判断潜在可见边是否被可见面遮挡,当被可见面部分遮挡时,对此边根据与平面片的相交情况进进行裁切,裁切后的最终每条边称为最简边;
步骤3.2,最简边的可见性判定,包括采用最简边的中点的可见性来代表整条最简边的可见性。
而且,步骤3.2,中判断最简边的中点的可见性如下,
最简边的中点为三维空间中的点,沿着视线方向所在的空间直线,三维空间中的点在平面片所在超平面片中一定有一个投影点;此时,投影点和平面片位于同一个超平面中,通过判断投影点是否位于二维多边形内,得到最简边的中点的可见性。
而且,根据消隐过程所得结果,最终可视化效果中可见线的样式和不可见线的样式都采用自定义设置。
与现有三维实体集合线消隐的相关技术相比,本发明能够实现三维实体集群的线消隐处理,其中,每个三维实体既可以是凸的、也可以是凹的,每个三维实体既可以带穿洞、也可以不带穿洞,同时这些三维实体之间的拓扑关系可以是分离的、点相邻、线相邻、面相邻并存(也即该三维实体集群可以是二维流形或三维流形的形式)。此外,最终可视化效果中线段的样式(包括可见线的样式、不可见线的样式)都可以自定义设置,对实体的各种情况都能准确进行处理。本发明提出的线消隐方法,主要可应用于三维产权证设计中的图形可视化部分。三维产权证是地籍管理领域中针对三维产权体的产权证书,三维产权证的设计是实现三维地籍的重要环节,而三维地籍的建设是地籍管理领域至关重要。针对三维产权证,由于要通过二维图面来展示三维宗地的立体形态,故而通过消隐处理增强真实感尤为关键。本发明隶属于三维地籍建设的相关项目(名称为“土地空间使用权管理关键技术及规范研究”),涉及本发明内容的三维产权证设计是该项目的一部分。
附图说明
图1为本发明实施例采用的三维空间数据模型中各类基元示意图,其中图1(a)为顶点示意图,图1(b)为边示意图,图1(c)为平面片示意图,附图1(d)为体示意图。
图2为本发明实施例三维空间直角坐标系的解析原理示意图。
图3为本发明实施例规则1示意图,其中图3(a)为完全剖分前示意图,图3(b)为完全剖分后示意图。
图4为本发明实施例规则2-4示意图,其中图4(a)为规则2示意图,图4(b)为规则3示意图,图4(c)为规则4示意图。
图5为本发明实施例规则5-10示意图,其中图5(a)为规则5示意图,图5(b)为规则6示意图,图5(c)为规则7示意图,图5(d)为规则8示意图,图5(e)为规则9示意图,图5(f)为规则10示意图。
图6为本发明实施例规则2-10的解释示例示意图,其中图6(a)为解释示例的体信息示意图,图6(b)为解释示例的顶点信息示意图。
图7为本发明实施例典型案例的消隐过程示意图,其中图7(a)为输入数据(线框模式)示意图,图7(b)为完全消隐后的输出数据示意图,图7(c)为第一类隐藏线(采用虚线表达)示意图,图7(d)为第二类隐藏线(采用虚线表达)示意图。
图8为本发明实施例应用于卓越世纪中心的消隐过程示意图,其中图8(a)为输入数据(线框模式)示意图,图8(b)为完全消隐后的输出数据示意图,图8(c)为第一类隐藏线(采用虚线表达)示意图,图8(d)为第二类隐藏线(采用虚线表达)示意图。
图9为本发明实施例应用于西部通道的消隐过程示意图,其中图9(a)为输入数据(线框模式)示意图,图9(b)为完全消隐后的输出数据示意图,图9(c)为放大后局部图(采用线框模式)示意图,图9(d)为局部图完全消隐后的输出结果示意图,图9(e)为局部图的第一类隐藏线(采用虚线表达)示意图,图9(f)为局部图的第二类隐藏线(采用虚线表达)示意图。
图10为本发明实施例应用于供电局的消隐过程示意图,其中图10(a)为输入数据(线框模式)示意图,图10(b)为完全消隐后的输出数据示意图,图10(c)为第一类隐藏线(采用虚线表达)示意图,图10(d)为第二类隐藏线(采用虚线表达)示意图。
图11为本发明实施例应用于华润万象城的消隐过程示意图,其中图11(a)为输入数据(线框模式)示意图,图11(b)为完全消隐后的输出数据示意图,图11(c)为第一类隐藏线(采用虚线表达)示意图,图11(d)为第一类隐藏线(采用点点表达)示意图,图11(e)为第二类隐藏线(采用虚线表达)示意图,图11(f)为第二类隐藏线(采用点线表达)示意图。
图12为本发明实施例应用于会展中心的消隐过程示意图,其中图12(a)为输入数据(线框模式)示意图,图12(b)为完全消隐后的输出数据示意图,图12(c)为第一类隐藏线(采用虚线表达)示意图,图12(d)为第一类隐藏线(采用点点表达)示意图,图12(e)为第二类隐藏线(采用虚线表达)示意图,图12(f)为第二类隐藏线(采用点线表达)示意图。
图13为本发明实施例应用于瀚盛花园B1建筑体的消隐过程示意图,其中图13(a)为输入数据(线框模式)示意图,图13(b)为完全消隐后的输出数据示意图,图13(c)为第一类隐藏线(采用虚线表达)示意图,图13(d)为第二类隐藏线(采用虚线表达)示意图。
图14为本发明实施例应用于瀚盛花园B3建筑体的消隐过程示意图,其中图14(a)为输入数据(线框模式)示意图,图14(b)为完全消隐后的输出数据示意图,图14(c)为第一类隐藏线(采用虚线表达)示意图,图14(d)为第二类隐藏线(采用虚线表达)示意图。
图15为本发明实施例应用于瀚盛花园B4建筑体的消隐过程示意图,其中图15(a)为输入数据(线框模式)示意图,图15(b)为完全消隐后的输出数据示意图,图15(c)为第一类隐藏线(采用虚线表达)示意图,图15(d)为第二类隐藏线(采用虚线表达)示意图。
具体实施方式
本发明提供的方法可基于计算机技术实现自动运行。以下结合附图和实施例详细说明本发明技术方案。
本发明的研究内容属于完全基于物空间的消隐方法。本发明提出的消隐方法,是在传统线消隐方法的基础上发展而来。但本发明提出的消隐方法又不同于传统线消隐方法,它既能实现二维流形(2-manifold)类型、又能实现三维流形(3-manifold)类型的三维实体集群的消隐处理。之所以如此,是因为本发明考虑了:
(1)单个三维实体形体的特殊性
在本发明中,作为消隐处理对象的三维实体可以是凸的,也可以是凹的,还可以是带“穿洞(through-hole)”的。同时,这里的“穿洞”可以是单个三维实体先天具备的,也可以是后天由于体与体之间叠置后的缝隙发展而来。针对这些情况,现有文献与研究几乎不曾考虑。
(2)三维实体之间拓扑关系的特殊性
在本发明中,作为消隐处理对象的三维实体之间可以是相离、点相邻、线相邻、面相邻。现有的文献与研究或者重点研究单个三维实体的消隐,或者关注处于相离关系的三维实体集合的消隐,或者涉及存在分离、面相邻的三维实体集合的消隐,但没有针对同时存在分离、点相邻、线相邻、面相邻关系的三维实体集合如何消隐提出解决方案。
本发明是具备重要意义,因为在三维建筑体集群、三维产权体集群、三维楼栋集群中,针对建筑体与建筑体之间、产权体与产权体之间、房屋与房屋之间,存在着大量的分离、点相邻、线相邻、面相邻关系,如何实现这些三维实体集群实际案例的消隐处理,对于地籍管理以及房产可视化都具有重大价值。
本发明实现消隐采用的三维空间数据模型参见附图1。该模型包括节点、边、环、平面片、体这5类基元。其中,点是0维基元,边与环是1维基元,平面片是2维基元,体是3维基元,该模型同样遵循“0维基元-1维基元-2维基元-3维基元”的层次性构造原则,即“点-边-环-平面片-体”的构造层次性。该模型中,高维基元使用针对低维基元的引用。该模型是在“面向地籍的三维空间数据模型”的基础上发展而来,详见(郭仁忠,应申,李霖.(2012).基于面片集合的三维地籍产权体的拓扑自动构建[J].测绘学报,41(4):620-626;Guo,R.Z.,Yu,C.B.,Zhao,Z.G.,Li,L.,Ying,S.(2012).Logical Design and Implementation of the Data Model for 3D Cadastrein China.3rd International Workshop on 3D Cadastres:Developments and Practices,25-26October,Shenzhen,China,pp.113-136.)。具体如下:
(1)节点(Point)
节点是嵌入在三维空间中的一类0维基元,它记录了X,Y,Z坐标。
节点在数据库中一般也称Node。节点在欧拉公式中一般记为Vertex。
(2)边(Edge)
边是嵌入在三维空间中的一类1维基元,它是由起始节点和终止节点封闭的一条有向直线段。边的物理方向由起始节点指向终止节点。边的起始节点与终止节点不能够是同一个点。
边通常也记为弧段(Arc)或段(Segment)。边同胚于1维流形。
(3)环(Ring)
环是嵌入三维空间中的一类1维基元,它由至少3条边封闭而成,这些边形成一个集合,称为环的构造边集合。环是1维基元,边是1维基元,且环是边的聚合。环是封闭的,即构成环的第一条边和最后一条边具有公共节点。
尽管以上没有显式约束环的所有构造边必须位于同一个平面上,但直接引用环对象的只有平面片对象,而平面片上所有点在同一平面上,所以默认环的所有构造边位于同一个平面上。环通常也记为循环(Loop)或圈(Cycle)。
(4)平面片(Facet)
平面片是嵌入于三维空间中的一类2维基元,它是由唯一外环、零至多个内环共同封闭而成的区域。平面片的边界是环。平面片的唯一外环上的边和所有内环上的边共同形成了一个集合,该集成称为平面片的构造边集合。一个平面片至少包含3条边。平面片是相对简单多边形,可以是凸的,可以是凹的。当一个平面片只由3条边构成时,平面片退化为三角形。
平面片具有法向量。在平面片中任意一个环内,其构造边排序是有序的,即构造边集合有一定的走向,也即前一条边与后一条边一定有公共节点。如下指定:唯一外环的走向为逆时针,内环的走向为顺时针。同时,每条边本身有物理方向,即从边的起始节点指向边的终止节点。但在同一个环内,并不是所有边的方向都一致,也即前一条边的终止节点与后一条边的起始节点并不一定是同一个点。因此,需要一个统一规则来决定平面片的法向量,通常采用右手定则(即四指方向为平面片的唯一外环中边的环绕方向,大拇指方向为法向量方向)。进一步的,当平面片的唯一外环的边集合确定后,该边集合的环绕方向就与每条边的本身方向作比较,如如一致则该条边标记为“+”,否则该边标记为“-”。
任一平面片都具有两侧。因为每个平面片都有一个所在超平面。该超平面片将三维空间分为两个部分,一般把平面片法向量所在一侧称为正面,把异于平面片法向量所在一侧称为背面。
(5)体(Body)
体是嵌入于三维空间中一类3维基元,它由至少4个平面片封闭而成。体的边界是平面片,它们形成一个集合,称体的构造平面片集合。针对每个体,由于其内部不存在其它基元,所以体也称为最小体。
本发明中消隐方法采用的三维空间数据模型中各类基元的详细情况如上所述。更为具体的,附图1给出了该模型中各类基元的直观图形解释。更为具体的,附图1(a)描述顶点实体v;附图1(b)描述边实体e,其起点为v1,其终点为v2;附图1(c)描述平面片中外环走向以及如何标记边的方向,其中,该平面片的唯一外环走向为逆时针(即1-2-3-4-5-6-7-8-9),边e1包含于该外环,且边e1本身方向为3-4,边e1方向与唯一外环走向一致,故而标记为+,边e2的方向与唯一外环走向同样一致而标记为+,边e3的方向与唯一外环走向不一致而记为-,以此类推。附图1(d)描述体body1和体body2之间的平面片fact1,该平面片的唯一外环走向为逆时针(即p-q-r-s),其法向量朝上,平面片fact1法向量朝向体body1的外部,故而此时平面片fact1作为前向面,体body1作为后向体;平面片fact1法向量朝向体body2的内部,故而此时平面片fact1作为后向面,体body2作为前向体。
具体实施时,本领域技术人员可根据元素自行设定相应类图,例如:投影前的三维节点(Vertex)包含初始X值(_3d_x)、初始Y值(_3d_y)、初始Z值(_3d_z)等成员;投影后的二维节点(Point)包含平面X值(x)、平面Y值(y)等成员;边(Segment)包含起始节点(beginVertex)、终止节点(endVertex)、邻接平面片集合(ajoinFace)、可见性(visibility)等成员;平面片(Face)包含唯一外环(outerRing)、零至多个内环(innerRings)、所有边集合(listSegment)、所在超平面的平面方程(equation)、可见性(visibility)等成员;体(Body)包含平面片集合(listFace)、边集合(listSegment)等成员;拓扑基元容器(TopoElementCollection)包含节点集合(listVertex)、边集合(listSegment)、平面片集合(listFace)、体集合(listBody)、只共享面情况时所有公共面个数(spec1_Face)、只共享面情况时所有公共面包含的边个数(spec1_Segment)、只共享边情况时所有公共边个数(spec2_Segment)、只共享点情况时所有点公共点个数(spec3_Vertex)、可见面总个数(vlistFace)、不可见面总个数(ivlistFace)、可见边总个数(vlistSegment)、不可见边总个数(ivlistSegment)等成员。
本发明的着眼点为“顾及拓扑”,针对顾及拓扑的三维实体群的线消隐,本发明提出10条规则。后续的具体实施方式遵循该10条规则发展而来。
需要注意的是,以下会频繁地用到“共面”、“共边”、“共点”,而称呼“共面(边、点)”,是指共享的最高维度的基元是“面(边、点)”。之所以这样做,是因为面是2维基元、边是1维基元、点是0维基元,而基于高一维度的基元相邻必然包括基于低一维度的基元相邻。例如,共“面”时,必然存在共“边(即面包含的边)”以及共“点(面包含的点)”,此时称“既共面又共边还共点”,是没有意义的,故而只称“共面”;又如,共“边”时,必然存在共“点(即边包含的点)”,此时称“既共边又共点”,同样没有意义,故而只称“共点”。简而言之,如果存在公共2维基元,则称存在“共面”;如果存在公共1维基元,则称存在“共边”;如果存在公共0维基元,则称存在“共点”。
由以上定义可知,1维基元除了‘边’还有‘环’。那存在公共1维基元时,是否还需要称存在“共环”?事实上,针对任意一个平面片,其包含的每个环本质上都是由边构成,且其唯一外环包含的边与所有内环包含的边在给予消隐时采用相同方法对待,故而以下无论是唯一外环包含的边还是所有内环包含的边都简称边,而且存在公共1维基元时,只称存在“共边”而不称“共环”。这样,本发明能够解决体中有“穿洞”的情况。
同时解释几个重要名词。其中,“簇(Cluster)”指具备相同特性的同类实体形成的集合,如可见面簇、不可见面簇、可见边簇、不可见边簇。“潜在可见边”指的是当前可见、但通过进一步判断不一定可见的边。
本发明采用的规则具体如下:
规则1(剖分完全规则):待消隐的每个实体必须是剖分完全的。所谓剖分完全,是指:若体A的平面片与相邻体B的平面片存在相交,则以上平面片与平面片之间应该剖分完全,即相交部分应该是唯一的,也即公共平面片只存储一次但可被引用多次;若体A的边与相邻体B的边存在相交,则以上边与边之间应该也是剖分完全的,即相交部分应该也是唯一的,即公共边只存储一次但可被引用多次;若体A的顶点与相邻体B的顶点重合,则相交部分应该也是惟一的,即重合顶点只存储一次但可被引用多次。总而言之,存在相交情况的则必须给予打断,打断后的相同基元只应该存储一次,更高维的基元只使用对于低维基元的引用。
直观地,如附图3(a)所示,体1的平面片e1e2e3e4(用构成边表示,或者用构成点表示的v1v2v3v4)与体2的平面片e5e6e7e8(也即v5v6v7v8)相交,体1的e1和e2与体2的e8和e5分别相交,需要完全剖分。当剖分结束后,如图3(b)所示,体1的边e1分剖分为边e11和边e12,体1的边e2被剖分为边e21和边e22,体2的边e5被剖分为边e51和边e52,体2的边e8被剖分为边e81和边e82;同时,体1的平面片e1e2e3e4被剖分为2个小平面片,体2的平面片e5e6e7e8也被剖分为2个小平面片,其中,平面片e12e21e51e81为体1和体2剖分后的公共平面片,体1中另一个剖分后的平面片是e11e81e51e22e3e4,体2中另一个剖分后的平面片是e12e21e52e6e7e82;此外,体1和体3共享一个顶点,剖分前,该共享顶点在体1中被存储为v2并在体3中被存储为v9,剖分后,它们合并为一个顶点(记为v10),体1和体3都只使用对于v10的引用。
值得注意的是,以上采用的三维空间数据模型事实上是一种建立在完全剖分基础的三维拓扑数据结构,即若平面片与平面片相交则剖分平面片、若线段与线段相交则打断线段、剖分之后相同实体(公共点、公共边、公共面)只存储一次时但被多次引用。换言之,以上采用的三维空间数据模型默认满足“规则1(完全剖分规则)”。如果需要主动实现“规则1”,详见(贺彪.(2011).三维地籍空间数据模型及拓扑构建算法研究[D].博士论文,武汉大学,159p;贺彪.李霖,郭仁忠,史云飞.(2011).赵志刚.(2012).三维地籍空间数据拓扑构建、维护及应用研究[D].博士论文,武汉大学,191p;夏俊.(2011).三维地籍中计算几何相关问题研究[Msc.].硕士论文,53p.)。
规则2(只共面):当某体与另一个体存在的公共元素为2维时,称只共面。
具体的,针对两个相邻的体,如果存在公共平面片,则称这两个体只共面。存在1个公共平面片,存在2个公共平面片,直至存在多个公共平面片,都称为只共面。只共面的情况简记为spec1。针对只共面情况(spec1),认为公共面不可见,公共面包含的边潜在可见。
直观的,如附图4(a)所示,体1和体2之间存在公共平面片e1e2e3e4,则称体1和体2只共享面e1e2e3e4。此时,公共平面片e1e2e3e4不可见,其包含的边集(即e1,e2,e3,e4)潜在可见。
规则3(只共边):当某体与另一个体存在的公共元素为1维时,称只共边。
具体的,针对两个相邻的体,如果存在公共边,但不存在公共平面片,则称这两个体只共边。存在1条公共边,存在2条公共边,直至存在多条公共边,都称为只共边。只共边的情况简记为spec2。针对只共边(spec2)情况,认为公共边潜在可见。
直观的,如附图4(b)所示,体1和体2之间存在公共边e,但体1和体2之间不存在任何公共平面片,则称体1和体2只共享边e。共享边e潜在可见。
规则4(只共点):当某体与另一个体存在的公共元素为0维时,称只共点。
具体的,针对两个相邻的体,如果存在公共顶点,但既不存在公共边,也不存在公共平面片,则称这两个体只共点。存在1个公共顶点,存在2个公共顶点,直至存在多个公共顶点,都称为只共点。只共点的情况简记为spec3。针对只共点(spec3)情况,其不影响输出结果(因为输出结果为边的显示/隐藏,而这里指示公共点情况)。
直观的,如附图4(c)所示,体1和体2之间存在公共顶点v,但既不存在公共边,也不存在公共平面片,则称两个体只共享点v。
以上是比较纯粹的或只共面、或只共边、或只共点的情况。事实上,实际情况中体与体之间往往共面、共边、共点3种情况同时存在,或者其中任意2种情况同时存在。针对共面、共边、共点可能同时存在的情况,需要进一步简化,具体如下:
规则5(共面面):当某体与另两个体存在的公共元素分别为2维时,称共面面。
具体的,针对某体,如果存在两个相邻的体,与其中一个相邻体只共面,与其中另一个相邻体也只共面,并且以上两个公共面存在交集,该交集称为共同边,则以上共同边是否可见只判断一次(只在判断以上任意一个公共面包含的边集是否可见时才考虑)。换言之,即按照只共面(spec1)的情况处理以上共同边的可见性。
直观的,如附图5(a)所示,针对体1,体1与体2共平面片e1e2e3e4,同时体1与体3共平面片e1e5e6e7,并且以上两个平面片存在交集,该交集即边e1,则边e1是否可见只判断一次——具体的,只在判断公共平面片e1e2e3e4包含的边集(即e1,e2,e3,e4)是否可见时才考虑,而在判断公共平面片e1e5e6e7包含的边集(即e5,e6,e7)是否可见时不考虑;或者,只在判断公共平面片e1e5e6e7包含的边集(即e1,e5,e6,e7)是否可见时才考虑,在判断公共平面片e1e2e3e4包含的边集(即e2,e3,e4)是否可见时不考虑。
规则6(共边面):当某体与另两个体存在的公共元素分别为1维与2维时,称共边面。
具体的,针对某体,如果存在两个相邻的体,且与其中一个相邻体只共边,与其中另一个相邻体只共面,并且以上公共边包含于以上公共面的边集中,则以上公共边是否可见只判断一次(只在判断以上公共面包含的边集是否可见时才考虑)。换言之,即按照只共面(spec1)的情况处理以上公共边的可见性。
直观的,如附图5(b)所示,针对体1,体1与体2共平面片e1e2e3e4,同时,体1与体3共边e1,并且以上公共边e1存在于公共平面片e1e2e3e4包含的边集(即e1,e2,e3,e4)中,则判断公共边e1是否可见只判断一次——具体的,只在判断公共平面片e1e2e3e4包含的边集(即e1,e2,e3,e4)是否可见时才考虑。
规则7(共边边):当某体与另多个体(两个或两个以上)存在的公共元素分别为1维时,称共边边。
具体的,针对某体,如果存在两个相邻的体,且与其中一个相邻体只共边,与其中另一个相邻体也只共边,同时以上两个相邻体之间也只共边而不共面,则以上两个公共边集的交集称共同公共边。同样的,当有新的相邻体加入时,即针对某体,如果存在两个上相邻的体,则所有相邻体也只共边而不共面(共边存在于共同公共边中);那么,以上所有体的共同公共边是否可见只判断一次,且按照只共边(spec2)的情况处理以上共同公共边的可见性。
直观的,如附图5(c)所示,体1与体2共边e1,体1与体3也共边e1,体2与体3也只共边不共面(共边e1),则称边e1为共同公共边,且共同公共边e1的可见性只判断一次。
规则8(共点面):当某体与另两个体存在的公共元素分别为0维与2维时,称共点面。
具体的,针对某体,如果存在两个相邻的体,与其中一个相邻体只共点,且与其中另一个相邻体只共面,并且以上公共点属于以上公共面的包含点集,则以上公共点只存储一次,以上公共面包含的点集中只使用对于该公共点的引用。换言之,即归结于只共面(spec1)情况。事实上,这种情况并不影响输出结果(因为输出结果是边的显示/隐藏,而这里指示公共点情况)。
直观的,如附图5(d)所示,针对体1,体1与体3共顶点v,同时,体1与体2共平面片e1e2e3e4,且以上公共顶点v属于以上公共平面片包含的点集,则以上公共顶点只存储一次,以上公共面e1e2e3e4只使用针对v的引用。
规则9(共点边):当某体与另两个体存在的公共元素分别为0维与1维时,称共点边。
具体的,针对某体,如果存在两个相邻的体,与其中一个相邻体只共点,且与其中另一个相邻体只共边,并且以上公共点属于以上公共边包含的点集,则以上公共点只存储一次,以上公共边包含的点集中只使用对于该公共点的引用。换言之,即归结于只共边(spec2)情况。事实上,这种情况并不影响输出结果(因为输出结果是边的显示/隐藏,而这里指示公共点情况)。
直观的,如附图5(e)所示,针对体1,体1与体3共顶点v,同时,体1与体2共边e1,且以上公共顶点v属于以上公共边包含的点集,则以上公共顶点只存储一次,以上公共边e1只使用针对v的引用。
规则10(共点点):当某体与另多个体(两个或两个以上)存在的公共元素分别为0维时,称共点点。
具体的,针对某体,如果存在两个相邻的体,与其中一个体只共点,与其中另一个体也只共点,同时以上两个相邻体之间也只共点,则它们共同的公共点称共同公共点。同样的,当有新的相邻体加入时,即针对某体,如果存在两个以上相邻的体,与所有相邻体也只共点于共同公共点;那么以上共同公共点只存储一次,以上所有相邻体中只存储对共同公共点的引用。换言之,即归结于只共点(spec3)情况。事实上,这种情况并不影响输出结果(因为输出结果是边的显示/隐藏,而这里指示公共点情况)。
直观的,如附图5(f)所示,针对体1,体1与体3共顶点v,同时,体1与体2也共顶点v,且体2与体3之间也只共点v,则v称为共同公共点,体1体2体3都只使用对于v的引用。
针对其余情况,即多个体(两个或两个以上)之间同时存在多个公共面(两个或两个以上公共面)、多个公共边(两个或两个以上公共边)、多个公共点(两个或两个以上公共点)的情况,均可分解为规则2-10给予处理。附图6给出了一个分解实例,其中图6(a)为解释示例的体信息示意图,图6(b)为解释示例的顶点信息示意图。该实例中,8个体相邻,其中上层包括体1体2体3体4,下层包括体5体6体7体8;其中,体1由顶点A,B,D,E,J,K,M,N构成,体2由顶点B,C,E,F,K,L,N,O构成,体3由顶点D,E,G,H,M,N,P,Q构成,体4由顶点E,F,H,I,N,O,Q,R构成,体5由顶点J,K,M,N,S,T,V,W构成,体6由顶点K,L,N,O,T,U,W,X构成,体7由顶点M,N,P,Q,V,W,Y,Z构成,体8由顶点N,O,Q,R,W,X,Z,A2构成。这8个体存在许多共点、共边、共面情况,而且不是纯粹的只共点(spec3)、只共边(spec2)。具体情况如下,
(1)体7与体8之间共面QNWZ,体7与体3之间共面PQNM,体7与体5之间共面MNWV,这些都是只共面(spec1)情况。类似的只共面(spec1)情况还有很多,包括体5与体6之间、体6与体2之间、体6与体8之间等。
(2)体1与体3之间存在共边情况(即共边EN)。但这不是纯粹的只共边情况,因为边EN同时也属于体1与体2的公共面EBKN包含的边集(即边BK、边KN、边EN、边BE)。按照规则6(共边面)处理,即归结于只共面(spec1)情况。类似的需要按照规则6(共边面)处理的情况还有很多,包括边MN、边QN、边ON、边KN等。
(3)同样的,针对边EN,还可以看作体1与体2的公共面(即EBKN)、体1与体3的公共面(即EDMN)的共同边。按照规则5(共面面)处理,同样归结于只共面(spec1)情况。类似的,边MN、边QN、边ON等也都可以按照规则5(共面面)处理。
(4)体1与体8之间共顶点N。但是这不是纯粹的只共顶点情况,因为顶点N还属于体1与体2的公共面EBKN包含的点集。按照规则8(共点面)情况处理,即归结于只共面(spec1)情况。同时,顶点N还可以看作体5与4、体3与体6、体7与体2的公共顶点,也都按照规则8(共点面)情况处理。
(5)如上所述,在该实例中,存在只共面(spec1)、共边面(归结于spec1)、共面面(归结于spec1)、共点面(归结于spec1)这4种情况,不存在只共边(spec2)、只共点(spec3)、共边边(归结于spec2)、共点边(归结于spec2)、共点点(归结于spec3)这5种情况。
如以上案例的实际例子还有许多,特别发生在三维产权体与三维产权体相邻、三维建筑体与三维建筑体相邻、三维宗地与三维宗地相邻的情况中。在这样的案例中,最终都归结于只共面(spec1)的方式处理(如下表1,表2,表3),但并不意味着没有共边、共点的情况发生,只是它们不是纯粹的只共边、只共点情况,采用以上规则2-10给予解决是合适的。
遵从以上提出的若干规则,下面详细阐述实施例中该线消隐方法。
实施例所提供针对顾及拓扑的三维实体群的线消隐,总共包含3个大步骤:步骤1.顾及拓扑关系的消隐预处理,其主要针对公共面、公共面包含的边、公共边的可见性给予初步判断;步骤2.扩展的第一类线消隐处理,其主要针对传统的第一类消隐情况给予扩展,也称自遮蔽(或自消隐、局部消隐),它发生在单个三维实体内部;步骤3.扩展的第二类线消隐处理,其主要针对传统的第二类消隐情况给予扩展,也称互遮挡(或互消隐、全局消隐),它发生在多个三维实体之间。
步骤1,顾及拓扑关系的消隐预处理
(1.1)平面片的分类
(i)针对体与体之间存在只共面情况时,设定公共面为不可见面。之所以这么,是因为:公共面一定被包含该公共面的相邻体所“自遮挡”,同时可能被位于视线更前方的其它体所“互遮挡”,不可能出现可见情况,所以这里设定为不可见。公共面的个数记为s1F。
(ii)针对体与体之间存在只共边情况时,相接于该公共边的面的可见性难以直接判断,本步骤不做处理。
(iii)针对体与体之间存在只共点情况时,相接于该公共点的面的可见性难以直接判断,本步骤不做处理。
(1.2)边的分类
(i)针对体与体之间存在只共面情况时,公共面包含的边暂设定为可见边(事实上潜在可见)。之所以这样,是因为:针对公共面包含的边,可能位于视线最前方而可见,也可能被包含该边的体所“自遮挡”,还可能被位于视线更前方的其它体所“互遮挡”,所以可能可见可能不可见,不失去一般性的,这里设定为可见,最终是否可见由计算后决定。该公共面包含的边潜在可见,所有这样的包含于公共面的潜在可见边的总个数记为s1E。
(ii)针对体与体之间存在只共边情况时,暂设定公共边为可见边(事实上潜在可见)。之所以这样,是因为:针对公共边,可能位于视线最前方而可见,也可能被包含该边的体所“自遮挡”,还可能被位于视线更前方的其它体所“互遮挡”,所以可能可见可能不可见,不失去一般性的,这里设定为可见,最终是否可见由计算后决定。该公共边潜在可见,所有这样的潜在可见的公共边的总个数记为s2E。
(iii)针对体与体之间存在只共点时,相接于该公共点的边的可见性难以直接判断,本步骤不做处理。
以上即对于三维流形(3-manifold)处相关面与边的消隐处理。针对以上公共面、公共面包含的边、公共边的消隐处理思想,在这里简称“消隐预处理策略”。本步骤不做处理的情况,在后续步骤可能再进行相关处理。
(1.1)平面片的分类和(1.2)边的分类的执行为并列关系,顺序不限。
步骤2,扩展的第一类线消隐处理(即“自遮挡”的处理),包括依次执行以下子步骤:
(2.1)后向面剔除
进行后向面剔除,包括找到法向量与视线方向一致的平面片,这些平面片称后向面,后向面设定为不可见面,不参与后续步骤3;找到法向量与视线方向不一致的平面片,这些平面片称前向面,前向面设定为可见面。之所以称“后向面剔除”,是因为找到的不可见的后向面不再参与第二类线消隐处理。
(2.2)平面片的分类
(i)将通过“后向面剔除”找到的所有不可见面,加上“消隐预处理”中的所有不可见面(即公共面),两者和即为完整的不可见面簇;
(ii)在“消隐预处理”中不存在可见面,通过“后向面剔除”找到的可见面即完整的可见面簇。
其中,只需要完整的可见面簇用于后续操作,即只需要可见面作为判断是否产生“互遮挡”的主体(客体为潜在可见边)。之所以这样,是因为:不可见面一定被可见面所遮挡,故而判断边是否被所有面(包括可见面、不可见面)遮挡可以简化,等价简化为判断边是否被可见面遮挡。
(2.3)边的可见性判定
边始终包含可见边、不可见边两类。
值得注意的是,这里处理的边只相接于2个平面片,即该边上任何上一点的邻域都符合“二维流形(2-manifold)”的特征。之所以这样,是因为:这里边的可见性由仅相接的2个平面片的情况决定,具体如下:
(i)相接于2个“不可见面”的边,设定为不可见边。
该边作为两个不可见区域的过渡区域,该区域尽管没有任何面积,但其遵守“连贯性(Coherence)”中的“面的连贯性(Face Coherence)”应该不可见。该边最终不可见。
(ii)相接于1个“可见面”和1个“不可见面”的边,暂设定为可见边(事实上潜在可见)。
该边作为可见区域和不可见区域的过渡区域,该区域无法通过“面的连贯性(FaceCoherence)”来判断可见性。该边可能位于视线最前方而可见,可能被包含该边的体所“自遮挡”,也可能被位于视线更前方的其它体所“互遮挡”,所以可能可见可能不可见,不失去一般性的,这里设定为可见,最终是否可见由计算后决定。该边是潜在可见的。
(iii)相接于2个“可见面”的边,暂设定为可见边(事实上潜在可见)。
该边作为两个可见区域的过渡区域,该区域尽管没有任何面积,但其遵守“面的连贯性(Face Coherence)”应该可见。该边可能位于视线最前方而可见,可能被位于视线更前方的其它体所“互遮挡”,所以可能可见可能不可见,不失去一般性的,这里设定为可见,最终是否可见由计算后决定。该边是潜在可见的。
针对以上仅相接于2个面的边的可见性判断策略,简称“第一类消隐策略”。
(2.4)边的分类
边始终包含可见边、不可见边两类。具体的,
将以上(2.3)得到的所有可见边,加上“消隐预处理”得到的所有可见边,两者之和才是完整的可见边簇;由于“消隐预处理”没有得到不可见边,故而以上(2.3)得到的所有不可见边即为完整的不可见边簇。其中,只需要完整的可见边簇用于后续操作,即只需要这些边作为判断是否产生“互遮挡”的客体(主体是可见面)。
步骤3,扩展的第二类线消隐处理(即“互遮挡”的处理),包括依次执行以下子步骤:
(3.1)边的细分
此处判断每条潜在可见边(即步骤(2.4)中所得的完整可见边簇中的每条边)是否被可见面遮挡。一条边是否被一个面遮挡,可能存在三种情况:
(i)一条边被该面完全遮挡;
(ii)一条边被该面完全不遮挡;
(iii)一条边被该面部分遮挡:即出现部分遮挡、部分不遮挡的情况。
当遇到情况(i)和(ii)时,边不需要进一步细分;只有遇到情况(iii)时,边才需要进一步细分。当边需要进一步细分时,如何细分由边如何被平面片裁切所决定。从原则上讲,每一条可见边与每一个平面片都需要判交,而且一条边可能被平面片裁切为若干段。边被平面片裁切的过程,可以进一步简化为边与平面片包含的边给予求交的过程。裁切后的最终每条边称“最简边”(这种类型实体在英文文献中常称“Span(跨越)”)。之所以称“最简”,是因为这样的边上每一点的可见性一致。此处利用的是“边的连贯性(Edge Coherence)”。
边与边的相交操作(也称打断操作)在此不再赘述,因为在诸多文献中涉及。
(3.2)最简边的可见性判定
最简边上每一个点的可见性都一样。此处,采用最简边的中点的可见性来代表整条最简边的可见性。由此,针对“在三维空间中判断最简边是否被平面片遮蔽”被简化为“在三维空间中判断点是否被平面片遮蔽”。针对“在三维空间中判断点是否被平面片遮蔽”,是一个三维空间问题,还可进一步简化为二维空间问题,具体如下:沿着视线方向所在的空间直线,三维空间中的点在平面片所在超平面片中一定有一个投影点;此时,投影点和平面片位于同一个超平面中(尽管嵌入于三维空间)。换言之,若将以上嵌入于三维空间中的平面片通过刚性变换(包括平移、旋转等)变换到XOY平面,该同样刚性变换后的投影点一定也位于XOY平面,因为刚性变换具有拓扑不变性。此时,以上问题简化为“判断变换后的投影点是否位于变换后的二维多边形内”,即点的投影结果是否位于面的投影结果。判断投影点是否位于二维多边形内之后,若否则最简边的中点可见(也就是最简边可见),是则不可见。而“在二维空间中判断点是否位于多边形内”算法成熟,包括可以采用“角度和判别法”或“水平/垂直交叉数判别法”或“面积判别法”等现有技术判断。
以上通过“判断最简边是否被平面片遮蔽”从而给定最简边的可见性的过程,简称“第二类消隐策略”。
具体实施时,消隐方法可采用投影来辅助。投影变换指的是将三维的物体投影到二维的平面上。传统上,投影变换分为平行投影(Parallel Projection)和透视投影(PerspectiveProjection)。其中,平行投影(Parallel Projection)是投影方向垂直于观察平面的投影方式,也称正投影;透视投影(Perspective Projection)是视线相交于灭点的投影方式,若相交于一个灭点,则称单点透视投影,也简称透视投影,若相交于两个灭点,则称两点透视投影。投影变换的本质,是从三维空间点转换为二维投影点。消隐的本质,是在以上转换过程中将被遮蔽的线要素(或面要素)给予特别标识(如虚线表达)。投影变换具备唯一性,即一个三维空间点经过投影变换后存在且只存在一个二维投影点;相对的,投影变换的逆向过程可称为反投影变换,反投影变换不具备唯一性,即一个二维投影点经过反投影变换处理可能存在多个三维空间点,而比较同一个二维投影位置上多个三维空间点的深度信息是实现物空间消隐的重要环节,这是实现物空间消隐的重要环节。在本发明实施例中,采用的投影方式为平行投影,但不是常规的正平行投影,而是采用一种自定义的斜平行投影。之所以这样做,是因为针对本发明中诸多实际案例采用该投影方式可观察相对全面(正面、上面、侧面均包括部分),事实上本发明所述消隐方法可通过任意投影方式辅助。具体的,实施例投影方式由于属于平行投影,所以不需要规定视点位置(Viewing Position);以上投影的视线方向(Viewing Direction)可由表达。相应的,其坐标变换公式为:
_2d_x=_3d_y+_3d_x×Cos(π×(45.0/180.0))                (1)
_2d_y=_3d_z+_3d_x×Sin(π×(45.0/180.0))                (2)
其中,针对任意一个点,_3d_x,_3d_y,_3d_z分别为变换前该点在三维空间坐标中的X值、Y值、Z值,而_2d_x,_2d_y分别为变换后该点在二维空间坐标中的横坐标值、纵坐标值。以上坐标变换过程也可以采用三维坐标系直观解析,如附图2所示,x0,y0,z0分别是变换前三维点在X,Y,Z轴上的坐标,B点为投影变换后的点。该三维空间直角坐标系遵守四个基本原则:(1)坐标系原点为(0,0,0);(2)在三维空间中(即变换前),X轴、Y轴、Z轴相互垂直;(3)在二维空间中(即变换后),X轴与Y轴、X轴与Z轴的夹角均为45度;(4)X:Y:Z为1:1:1。
以上即顾及拓扑的三维实体群线消隐的具体实施方式,为便于技术人员理解起见,提供公式(3)-(25)如下,整个消隐过程满足公式(3)-(25)。值得注意的是,针对以下所有公式,是对以上文字形式的三大步骤的解释,这种解释是数学形式的,但内容与以上三大步骤一致。
其中,第一个大步骤(即“顾及拓扑关系的消隐预处理”)满足公式(3)-(7)。具体的,
colV≤sum(V)                          (3)
colE≤sum(E)                          (4)
colF≤sum(F)                          (5)
s1F<colF                             (6)
s1E+s2E<colE                         (7)
其中,colV指代容器中所有顶点的个数(All Vertices in the Collection),colE指代容器中所有边的个数(All Edges in the Collection),colF指代容器中所有平面片的个数(All Facets in theCollection).sum(V)指代每个体中顶点个数的累加和(Sum of Vertices in Each Body),sum(E)指代每个体中边个数的累加和(Sum of Edges in Each Body),sum(F)指代每个体中平面片个数的累加和(Sum of Facets in Each Body).s1F指代存在共享面情况时共享面的个数(Shared Facets inSpec1 that Solids are Adjacent by Facets),s1E指代存在共享面情况时共享面包含的边个数(Edges in Shared Facets in Spec1 that Solids are Adjacent by Facets),s2E指代存在共享边情况时共享边的个数(Shared Edges in Spec2 that Solids are adjacent by Edges).
其中,公式(3)阐述了判定是否存在共享点的过程。其中,若colV=V,则体与体之间一定是都相离关系;若colV<V,则体与体之间或存在点相邻、或存在边相邻、或存在面相邻。
公式(4)阐述了判定是否存在共享边的过程。其中,若colE=E,则体与体之间或都相离、或存在点相邻;若colE<E,则体与体之间或存在边相邻、或存在面相邻。
公式(5)阐述了判定是否存在共享面的过程。其中,若colF=F,则体与体之间或都相离、或存在点相邻、或存在边相邻;若colF<F,则体与体之间一定存在面相邻关系。
公式(6)表明共享面只是作为面集合的一部分存在。
公式(7)表明共享面包含的边和共享边只是作为边集合的一部分存在。
第二个大步骤(即“扩展的第一类线消隐处理”)满足公式(8)-(17)。具体的,
vF=fF                                             (8)
ivF=bF+s1F                                        (9)
s1E+s2E<t1vE                                      (10)
∃ e 1 ∃ f 1 ∃ f 2 , e 1 ∈ boundary ( f 1 ) , e 1 ∈ boundary ( f 2 ) , f 1 ∈ vF , f 2 ∈ vF , f 1 ≠ f 2 ⇒ e 1 ∈ t 1 vE - - - ( 11 )
∃ e 1 ∃ f 1 ∃ f 2 , e 1 ∈ boundary ( f 1 ) , e 1 ∈ boundary ( f 2 ) , f 1 ∈ vF , f 2 ∈ ivF ⇒ e 1 ∈ t 1 vE - - - ( 12 )
∃ e 1 ∃ f 1 ∃ f 2 , e 1 ∈ boundary ( f 1 ) , e 1 ∈ boundary ( f 2 ) , f 1 ∈ ivF , f 2 ∈ ivF , f 1 ≠ f 2 ⇒ e 1 ∈ t 1 ivE - - - ( 13 )
tF=vF+ivF=fF+(bF+s1F)=(fF+bF)+s1F               (14)
tE=t1vE+t1ivE                                     (15)
tF=colF                                           (16)
tE=colE                                           (17)
需要解释的是,在公式(11)(12)(13)中,f1和f2都是平面片;boundary(.)是指求取边界信息,则boundary(f)是指求取平面片f的边界(即边);e1是边。
其中,vF指代可见面簇的大小(Visible Facets),ivF指代不可见面簇的大小(Invisible Facets),fF指代前向面的个数(Front Facets),bF指代不可见面的个数(Back Facets).t1vE指代第一类可见边簇的大小(Type1 Visible Edges),t1ivE指代第一类不可见边簇的大小(Type1 Invisible Edges).tF指代所有面的个数(Total Facets),tE指代所有边的个数(Total Edges).
其中,公式(8)阐述了可见面簇仅由所有前向面构成,即步骤(2.2)中(ii)。
公式(9)阐述了共享面应该归为不可见面,即步骤(1.1)中(i);同时,阐述了不可见面簇不是仅由共享面构成,而是由所有后向面与共享面共同构成,即步骤(2.2)中(i)。
公式(10)阐述了共享面包含的边以及共享边应该归为可见边,即步骤(1.2)中(i)和(ii)。
公式(11)阐述了如何判定相接于两个可见面的边的可见性,即步骤(2.3)中(i);公式(12)阐述了如何判定相接于一个可见面和一个不可见面的边的可见性,即步骤(2.3)中(ii);公式(13)阐述了如何判定相接于两个不可见面的边的可见性,即步骤(2.3)中(iii)。
公式(11)(12)(13)共同组成了“第一类消隐策略”。
公式(14)阐述了面的细致分类,即步骤(2.2)。
公式(15)阐述了边的第一次细致分类的过程,其依据是“第一类消隐策略”,即步骤(2.4)。
公式(16)阐述了“第一类线消隐处理”不对面的总体个数产生影响,即不产生新面。
公式(17)阐述了“第一类线消隐处理”不对边的总体个数产生影响,即不产生新边。
第三个大步骤(即“扩展的第二类线消隐处理”)满足公式(18)-(25)。具体的,
splitF+splitL=splitT                                  (18)
newSE=t1vE+splitT=t1vE+(splitF+splitL)               (19)
newSE=t2vE+t2ivE                                      (20)
fvE=t2vE                                              (21)
fivE=t2ivE+t1ivE                                      (22)
ftE=tE+splitT=tE+(splitF+splitL)                            (23)
ftE=fvE+fivE=t2vE+(t1ivE+t2ivE)=(t2vE+t2ivE)+t1ivE         (24)
ftE=tE+splitT
=(t1vE+t1ivE)+splitT
=(t1vE+splitT)+t1ivE
=(t1vE+splitT-t2ivE)+(t1ivE+t2ivE)
=t2vE+five
=fvE+fivE
                             (25)
其中,splitF指代分割前一条边的次数(Times of Splitting Former Edges),splitL指代分割后一条边的次数(Times of Splitting Latter Edges),splitT指代总的分割次数(Total Times of SplittingEdges),newSE指代分割后边的个数(New Edges after Splitting),t2vE指代第二类可见边簇的大小(Type2 Visible Edges),t2ivE指代第二类不可见边簇的大小(Type2 Invisible Edges),fvE指代最终可见边的个数(Final Visible Edges),fivE指代最终不可见边的个数(Final Invisible Edges),ftE指代最终所有边的个数(Final Total Edges).
其中,公式(18)体现了步骤(3.1)的(iii)中“可见边被平面片包含的边裁切的过程”,包括“可见边”作为被裁切者以及“平面片包含的边”作为被裁切者这两种裁切可能情况。
公式(19)阐述了经过边与边的打断,不断产生新的“潜在可见边”的过程,即步骤(3.1)中(iii)。
公式(20)阐述了边的第二次细致分类的过程,其依据是“第二类消隐策略”。
公式(21)阐述了最终可见边的构成,即仅由第二类线消隐产生的可见边构成。
公式(22)阐述了最终不可见边的构成,即由第一类消隐产生的不可见边和第二类消隐产生的不可见边共同构成。
公式(23)阐述了“第二类线消隐处理”会对边的总体个数产生影响,即产生新边。
公式(24)阐述了最终所有边的构成,标志着边的细致分类的结束。值得注意的是,公式(24)可由公式(23)及以上公式共同推导得到,具体推导过程如公式(25)所示。
值得注意的是,vE(可见边,Visible Edges)和ivE(不可见边,Invisible Edges)这两个变量一直没有在公式中出现;相反的,t1vE(第一类可见边)、t1ivE(第一类不可见边)、t2vE(第二类可见边)、t2ivE(第二类不可见边)、tE(所有边)、ftE(最终所有边)这些概念频繁出现在公式中。原因是,vE和ivE如果作为集合理解,则它们都是一类具备相同特性的实体集合,该集合的大小一直在变化,呈现“此消彼长”的现象,尽管两者之和基本不变。换言之,vE和ivE是更应该当作抽象性质理解,这也是使用“簇(cluster)”来表达的原因。而t1vE,t1ivE,t2vE,t2ivE,tE,ftE都是作为以上抽象的具体实现,其集合大小是确定的。相对的,vF(可见面,Visible Facets)和ivF(不可见面,Invisible Facets)在第一类消隐处理的初始(即公式(7)和公式(8))便已确定,之后不再发生变化,故而将vF和ivF作为两个变量直接在公式中使用。
为了给予更为具体形象的阐述说明,以下通过一个典型案例给予说明。具体的,如附图7所示,图7(a)为输入数据(线框模式)示意图,图7(b)为完全消隐后的输出数据示意图,图7(c)为第一类隐藏线(采用虚线表达)示意图,图7(d)为第二类隐藏线(采用虚线表达)示意图。体1是一个本身带穿洞的凸多面体,体2是一个凹多面体,体3也是一个凹多面体,体4、体5、体6都是长方体(凸多面体),不过体6的顶面有2个平面片,其中一个带内环。体1与体4之间通过公共边相邻(如虚线框所示),体1和体5之间通过公共顶点相邻(如虚线框所示),体1和体3之间通过公共面相邻(如虚线框所示),体3和体6之间通过公共边相邻(如虚线框所示),体1和体6之间通过公共面相邻(一个带内环的面)。与体1本身带穿洞不同,体3本身不带穿洞,但由于体3和体1之间发生叠置会产生穿洞。在这个典型案例中,存在多处“自遮蔽”和“互遮蔽”。针对“自遮蔽”,体1的穿洞处、体2和体3的凹面处、体4(或体5)的3个前向面挡住3个后向面,这些都是典型的“自遮蔽”现象;针对“互遮蔽”现象,与体1处于相离关系的体2挡住体1部分、体1挡住体3部分、体1挡住体6部分,这些都是典型的“互遮蔽”现象。
同时,本发明给出了更多实际案例,有利于理解本发明技术效果。这些案例数据都来自中国广东省深圳市,案例数据类型包括三维宗地集群、三维产权体集群、三维建筑物集群。更为具体的,案例名称包括(1)卓越世纪中心(如附图8中图8(a)、图8(b)、图8(c)、图8(d)所示);(2)深港西部通道(如附图9中图9(a)、图9(b)、图9(c)、图9(d)、图9(e)、图9(f)所示所示);(3)供电局(如附图10中图10(a)、图10(b)、图10(c)、图10(d)所示);(4)华润万象城(如附图11中图11(a)、图11(b)、图11(c)、图11(d)、图11(e)、图11(f)所示);(5)会展中心(如附图12中图12(a)、图12(b)、图12(c)、图12(d)、图12(e)、图12(f)所示);(6)福田区香梅北路附近的瀚盛花园B1建筑体(如附图13中图13(a)、图13(b)、图13(c)、图13(d)所示)、B3建筑体(如附图14中图14(a)、图14(b)、图14(c)、图14(d)所示)、B4建筑体(如附图15中图15(a)、图15(b)、图15(c)、图15(d)所示)。在这些案例中,存在着大量点相邻、边相邻、面相邻的拓扑关系。同时,存在大量穿洞(如在瀚盛花园B4建筑体案例中,体本身存在穿洞;如在西部通道案例中,存在体与体之间通过叠置发展而来的穿洞)。由于本发明技术方案属于物空间消隐的一种,最终可视化效果中线段的样式(包括可见线的样式、不可见线的样式)都可以自定义设置,例如针对(4)华润万象城和(5)会展中心案例,其隐藏线采用不同样式表达,包括第一类隐藏线采用虚线或点点表达,第二隐藏线采用虚线或点线表达。
此外,表1描述了以上实际案例的详细初始信息(包括典型案例),表2描述了针对以上案例数据(包括典型案例)的扩展的第一类消隐处理过程,表3描述了针对以上案例数据(包括典型案例)的扩展的第二类消隐处理过程。3个表中的变量即公式(2)-(24)中所述变量。
表1案例数据的详细初始信息
表2扩展的第一类线消隐处理
表3扩展的第二类线消隐处理
上述实例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其它的任何未违背本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (3)

1.一种顾及拓扑的三维地理空间实体群的线消隐方法,其特征在于:所述三维地理空间实体群的三维空间数据模型包括点、边、环、平面片和体这5类基元,其中,点是0维基元,边与环是1维基元,平面片是2维基元,体是3维基元;
预设的规则如下,
规则1,待消隐的每个实体必须是剖分完全的;
规则2,当某体与另一个体存在的公共元素为2维时,称只共面;
规则3,当某体与另一个体存在的公共元素为1维时,称只共边;
规则4,当某体与另一个体存在的公共元素为0维时,称只共点;
规则5,当某体与另两个体存在的公共元素分别为2维时,称共面面,按照只共面的情况处理;
规则6,当某体与另两个体存在的公共元素分别为1维与2维时,称共边面,按照只共面的情况处理;
规则7,当某体与另多个体存在的公共元素分别为1维时,称共边边,按照只共边的情况处理;
规则8,当某体与另两个体存在的公共元素分别为0维与2维时,称共点面,按照只共面的情况处理;
规则9,当某体与另两个体存在的公共元素分别为0维与1维时,称共点边,按照只共边的情况处理;
规则10,当某体与另多个体存在的公共元素分别为0维时,称共点点,按照只共点的情况处理;
基于以上预设规则,进行消隐过程,包括以下步骤,
步骤1,顾及拓扑关系的消隐预处理,包括进行平面片的分类和边的分类,
进行平面片的分类如下,
(i)针对体与体之间存在只共面情况时,设定公共面为不可见面;
(ii)针对体与体之间存在只共边情况时,本步骤不做处理;
(iii)针对体与体之间存在只共点情况时,本步骤不做处理;
进行边的分类如下,
(i)针对体与体之间存在只共面情况时,公共面包含的边暂设定为可见边;
(ii)针对体与体之间存在只共边情况时,暂设定公共边为可见边;
(iii)针对体与体之间存在只共点情况时,本步骤不做处理;
步骤2,扩展的第一类线消隐处理,包括子步骤如下,
步骤2.1,进行后向面剔除,包括找到法向量与视线方向一致的平面片,这些平面片称后向面,后向面设定为不可见面,不参与后续步骤3;找到法向量与视线方向不一致的平面片,这些平面片称前向面,前向面设定为可见面;
步骤2.2,进行平面片的分类如下,
(i)将通过后向面剔除找到的所有不可见面,加上步骤1所得所有不可见面,取和得到完整的不可见面簇;
(ii)根据通过后向面剔除找到的可见面得到完整的可见面簇;
步骤2.3,针对仅相接于2个面的边,进行边的可见性判定如下,
(i)相接于2个不可见面的边,设定为不可见边;
(ii)相接于1个可见面和1个不可见面的边,暂设定为可见边;
(iii)相接于2个可见面的边,暂设定为可见边;
步骤2.4,进行边的分类,包括将步骤2.3得到的所有可见边,加上步骤1得到的所有可见边,取和得到完整的可见边簇,步骤2.3得到的所有不可见边为完整的不可见边簇;
步骤3,扩展的第二类线消隐处理,包括子步骤如下,
步骤3.1,边的细分,包括以步骤2.4所得完整可见边簇中的每条边为潜在可见边,判断潜在可见边是否被可见面遮挡,当被可见面部分遮挡时,对此边根据与平面片的相交情况进进行裁切,裁切后的最终每条边称为最简边;
步骤3.2,最简边的可见性判定,包括采用最简边的中点的可见性来代表整条最简边的可见性。
2.如权利要求1所述顾及拓扑的三维地理空间实体群的线消隐方法,其特征在于:步骤3.2,中判断最简边的中点的可见性如下,
最简边的中点为三维空间中的点,沿着视线方向所在的空间直线,三维空间中的点在平面片所在超平面片中一定有一个投影点;此时,投影点和平面片位于同一个超平面中,通过判断投影点是否位于二维多边形内,得到最简边的中点的可见性。
3.如权利要求1或2所述顾及拓扑的三维地理空间实体群的线消隐方法,其特征在于:根据消隐过程所得结果,最终可视化效果中可见线的样式和不可见线的样式都采用自定义设置。
CN201410583209.5A 2014-10-27 2014-10-27 顾及拓扑的三维地理空间实体群的线消隐方法 Expired - Fee Related CN104392489B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410583209.5A CN104392489B (zh) 2014-10-27 2014-10-27 顾及拓扑的三维地理空间实体群的线消隐方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410583209.5A CN104392489B (zh) 2014-10-27 2014-10-27 顾及拓扑的三维地理空间实体群的线消隐方法

Publications (2)

Publication Number Publication Date
CN104392489A CN104392489A (zh) 2015-03-04
CN104392489B true CN104392489B (zh) 2015-09-02

Family

ID=52610387

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410583209.5A Expired - Fee Related CN104392489B (zh) 2014-10-27 2014-10-27 顾及拓扑的三维地理空间实体群的线消隐方法

Country Status (1)

Country Link
CN (1) CN104392489B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104715507B (zh) * 2015-04-09 2016-03-02 武汉大学 一种基于曲面片的三维地理实体自动构建方法
CN107045732B (zh) * 2016-02-06 2020-05-19 高德软件有限公司 数字地面模型化简方法及装置
CN109582748A (zh) * 2018-10-16 2019-04-05 浙江大学宁波理工学院 整合3d gis和bim的三维空间数据模型的构建方法
CN111462305B (zh) * 2020-03-17 2022-08-02 中国电建集团昆明勘测设计研究院有限公司 应用于农村房地一体的三维不动产管理方法
CN113628102A (zh) * 2021-08-16 2021-11-09 广东三维家信息科技有限公司 实体模型消隐方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6636212B1 (en) * 2000-11-14 2003-10-21 Nvidia Corporation Method and apparatus for determining visibility of groups of pixels
CN101339667A (zh) * 2008-05-27 2009-01-07 中国科学院计算技术研究所 一种虚拟动态群体的可见性判断方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6636212B1 (en) * 2000-11-14 2003-10-21 Nvidia Corporation Method and apparatus for determining visibility of groups of pixels
CN101339667A (zh) * 2008-05-27 2009-01-07 中国科学院计算技术研究所 一种虚拟动态群体的可见性判断方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
多个凹凸形多面体的深度消隐算法研究;袁超;《四川理工学院学报》;20060831;第19卷(第4期);摘要,引言,第1.2、2节,图2、3 *

Also Published As

Publication number Publication date
CN104392489A (zh) 2015-03-04

Similar Documents

Publication Publication Date Title
CN104392489B (zh) 顾及拓扑的三维地理空间实体群的线消隐方法
CN104463948B (zh) 三维虚拟现实系统与地理信息系统的无缝可视化方法
US7561156B2 (en) Adaptive quadtree-based scalable surface rendering
Sheffer et al. Robust spherical parameterization of triangular meshes
Domínguez et al. Semiautomatic detection of floor topology from CAD architectural drawings
Zhao Application of 3D CAD in landscape architecture design and optimization of hierarchical details
KR20140142470A (ko) 나무 모델과 숲 모델 생성 방법 및 장치
CN112528508B (zh) 电磁可视化方法和装置
CN115346012B (zh) 路口面的生成方法、装置、设备、存储介质和程序产品
CN104299255A (zh) 一种三维地形模型的渲染方法
She et al. 3D building model simplification method considering both model mesh and building structure
Gal et al. Fast and accurate visibility computation in a 3D urban environment
KR101032397B1 (ko) 구면 좌표계를 사용하는 3차원 형상 표현장치 및 방법
Kada Aggregation of 3D buildings using a hybrid data approach
He et al. All range and heterogeneous multi-scale 3D city models
CN117113493A (zh) 一种施工平台设计方法及系统
CN107767458B (zh) 不规则三角网曲面几何拓扑一致分析方法及系统
Delame et al. From a medial surface to a mesh
Filippovska et al. Space partitioning for privacy enabled 3D city models
Wang et al. A 3-D city model data structure and its implementation in a relational database
Pasko et al. Implicit curved polygons
Bae et al. User‐guided volumetric approximation using swept sphere volumes for physically based animation
Arroyo Ohori et al. Visualising higher-dimensional space-time and space-scale objects as projections to R^3
Engel et al. Optimizing tree distribution in virtual scenarios from vector data
Mulder Automatic repair of geometrically invalid 3D city building models using a voxel-based repair method

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150902

Termination date: 20181027

CF01 Termination of patent right due to non-payment of annual fee