CN106600697A - 一种面向3d场景的导航网格地图表示方法 - Google Patents
一种面向3d场景的导航网格地图表示方法 Download PDFInfo
- Publication number
- CN106600697A CN106600697A CN201611143856.XA CN201611143856A CN106600697A CN 106600697 A CN106600697 A CN 106600697A CN 201611143856 A CN201611143856 A CN 201611143856A CN 106600697 A CN106600697 A CN 106600697A
- Authority
- CN
- China
- Prior art keywords
- region
- level plane
- point
- summit
- triangle
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/30—Polynomial surface description
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Algebra (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供的一种面向3D场景的导航网格地图表示方法,抽取3D场景中的可行走层次平面,得到可行走层次平面集合,将孤立的平面以及不可行走的平面去除;抽象可行走层次平面内寻路角色的初始不可通过区域,能够实现将3D场景中的模型抽象为不可通过区域;对初始不可通过区域中的多边形进行区域合并得到最终不可通过区域;合并初始不可通过区域中相交的区域,形成最终不可通过区域。对层次平面内的约束进行约束Delaunay三角形剖分,形成一个三角形集合;所有可行走层次平面内的三角形集合共同构成了最终的导航网格。最终的导航网格能够将障碍物和可行走区域充分分离。本发明是应用在数字媒体技术领域中,有效地保证了障碍物与可行走区域的分离。
Description
技术领域
本发明属于数字媒体技术领域,特别涉及一种面向3D场景的导航网格地图表示方法。
背景技术
3D大型场景给用户带来的视觉冲击和体验是2D场景难以比拟的,随着近几年显卡等硬件的不断升级,越来越多的大型3D场景游戏不断涌现,与此同时,人工智能技术大量应用于游戏中,对提高游戏逼真性起着至关重要的作用,而智能寻路技术又是游戏人工智能的重要组成部分。然而,传统的寻路技术无法适应3D场景的复杂性,迫切需要能够在3D场景下高效完成智能寻路的相关技术。
3D场景是由一系列的美术模型组合而成,模型之间没有特定关系,因而需要将场景用一种数据结构来抽象表示其相互之间的关系。搜索技术大都是基于图的搜索,因而可以将场景抽象成图结构,将一些模型抽象成图中的结点,这样便于之后的路径搜索,场景地图的表示方法是智能寻路技术中必不可少的一步。
目前的传统的场景表示方法,分为栅格法、四叉树法、八叉树法、可见点法以及导航网格法。栅格法是最简便的表示方法,但是仅能够适应早期的二维场景,不能适应三维场景。四叉树法是早期基于二维场景下的栅格法的改进,同样不能适应三维场景。八叉树法则是基于三维场景下的四叉树法的推广,该表示方法符合三维模型的空间结构,但是这种地图表示方案对于复杂的三维场景会消耗较多的存储空间。可见点法需要在场景中人工设置经过的路径点,因为需要较多的人工操作,所以此方法适用于较小的室内场景,在大型的3D场景很难应用此方法。导航网格表示方法与可见点法的不同点在于,导航网格可以铺满整个场景的可行走区域,并且仅需要很少量的人工操作,行走路线更加逼真,增加游戏体验,所以能够适应3D场景。导航网格的表示方法采用凸多边形集合,可以是三角形,也可以是六边形等,但是目前的研究最多的就是三角形集合,因为三角形是边数最少的凸多边形,划分粒度较小,能够完全铺满整个行走区域,降低不规则凸多边形的个数,但是导航网格表示也有一些缺点,一是需要消耗大量内存存储结点。二是难以适应动态场景。可见上述的传统的场景地图表示方法仅仅能够适应2D场景以及早期的简单3D场景,不能适应大型3D场景。
发明内容
针对现有技术存在的问题,本发明提供一种面向3D场景的导航网格地图表示方法。
本发明的技术方案如下:
一种面向3D场景的导航网格地图表示方法,包括:
步骤1、抽取3D场景中的可行走层次平面,得到可行走层次平面集合;
步骤2、抽象可行走层次平面内寻路角色的初始不可通过区域;
步骤3、对初始不可通过区域中相交区域进行区域合并得到最终不可通过区域;
步骤4、对层次平面内的约束进行约束Delaunay三角剖分;
步骤5、层次平面集合内所有层次平面的三角形构成了最终的3D场景导航网格。
所述步骤1,包括:
步骤1.1、将3D场景中Y轴为0的层次平面F0作为初始可行走层次平面,将层次平面F0添加到可行走层次平面集合F中,接着执行步骤1.2;
步骤1.2、选择可行走层次平面集合F中第一个未遍历的层次平面Fi,循环遍历与层次平面Fi相连的未加入层次平面集合F的层次平面:若存在满足距离层次平面Fi的高度小于寻路角色能够跨过的最大高度H或者坡度β小于寻路角色能够行走的最大坡度α的层次平面Fj,并且层次平面Fj的宽度和长度均大于2R时,层次平面Fj为可行走层次平面,初始化层次平面Fj的边界,并将可行走层次平面Fj添加到可行走层次平面集合F中,接着执行步骤1.3;R为寻路角色能够通过的最小狭窄区域的宽度;
步骤1.3、不断循环执行步骤1.2,直至所有层次平面被遍历,遍历结束后,执行步骤1.4;
步骤1.4、输出可行走层次平面集合F={F0,F1,…,Fi}。
所述步骤2,包括:
步骤2.1、抽象出可行走层次平面内的静态障碍物不可通过区域:将3D场景中静态障碍物模型与可行走层次平面进行交运算得到多个交点,这些交点组成的闭合多边形区域即是障碍物不可通过区域;
步骤2.2、抽象出可行走层次平面内的低门洞不可通过区域:可行走层次平面与静态障碍物模型相交得到多个交点,再将层次平面向上平移一个阈值H得到新的层次平面,将新的层次平面与当前静态障碍物模型的交点向平移前的层次平面投影得到投影点,平移前的层次平面与静态障碍物模型得到的交点与所述投影点组成的闭合多边形区域即低门洞不可通过区域;
步骤2.3、抽象出可行走层次平面内的狭窄不可通过区域:通过作垂线计算两个不可通过区域中的一个不可通过区域的每个顶点到另一个不可通过区域的各边的距离,当距离的最小值小于寻路角色能够通过的最小狭窄区域的宽度R时,则此时这两个不可通过区域之间的两个最短距离对应的垂线与两条边组成的闭合多边形区域作为狭窄不可通过区域;
步骤2.4、可行走层次平面内的静态障碍物不可通过区域、低门洞不可通过区域、狭窄不可通过区域共同构成了初始不可通过区域。
所述步骤2.2,包括:
步骤2.2.1、将层次平面F0与静态障碍物模型相交得到M个交点,层次平面F0向上平移一个阈值H得到的层次平面F0h与当前静态障碍物模型相交得到N个交点;如果M和N均为0,则执行步骤2.2.6;否则,将这M+N个交点以Y轴为轴进行顺时针排序;从第一个交点开始,将第一个交点作为当前点开始循环执行步骤2.2.2,直至遍历结束,遍历结束后执行步骤2.2.5;
步骤2.2.2、获得当前点,以及当前点的下一个点,如果当前点和下一个点均是在层次平面F0内,则增加一个不可通过线段,接着选择下一个点作为当前点,继续执行步骤2.2.2;否则,如果当前点和下一个点这两个点中有一个在层次平面F0内,假定当前点在层次平面F0内,下一个点不在层次平面F0内,则执行步骤2.2.3;如果当前点和下一个点均在层次平面F0h内,则执行步骤2.2.4;
步骤2.2.3、查找静态障碍物模型中是否存在一个点(x,y,z)在当前点f和下一个点g之间,即满足f.x<x<g.x,f.y<y<g.y,f.z<z<g.z,如果存在这样的点,则将g点向层次平面F0做投影得到g’点,新增加不可通过线段fg’,接着选择g点作为当前点,继续执行步骤2.2.2;如果不存在这样的点则不做处理,直接选择g点作为当前点,继续执行步骤2.2.2;
步骤2.2.4、查找静态障碍物模型中是否存在一个点(x,y,z)满足该点在层次平面F0h的下方,并且f.x<x<g.x,f.z<z<g.z,如果存在这样的点则将f、g两点均向层次平面F0做投影得到f’、g’两点,新增加不可通过线段f’g’,接着选择g点作为当前点,继续执行步骤2.2.2;如果不存在这样的点则不做处理,直接选择g点作为当前点,继续执行步骤2.2.2;
步骤2.2.5、遍历结束后,得到若干不可通过线段,继续遍历与层次平面F0h相交的N个交点,将这N个交点按顺时针排序,依次遍历相邻的两个点k、m,查找静态障碍物模型中是否存在一个点(x,y,z)满足该点在层次平面F0h的下方,并且k.x<x<m.x,k.z<z<m.z,如果存在这样的点则将k、m两点均向层次平面F0做投影得到k’、m’两点,新增加不可通过线段k’m’,直至遍历结束,若干不可通过线段及约束边组成的闭合多边形区域作为低门洞不可通过区域;
步骤2.2.6、获得不与层次平面F0、层次平面F0h相交的静态障碍物模型中Y值最高的点和Y值最低的点,如果两个点均在两个层次平面F0和F0h之间,则获得该静态障碍物模型在层次平面F0的投影区域,将这个投影区域作为一个低门洞不可通过区域,否则不作处理。
所述步骤3中采用Weiler-Atherton多边形裁剪算法对初始不可通过区域中的多边形进行区域合并得到最终不可通过区域,包括:
步骤3.1、将初始不可通过区域中的多边形的顶点顺时针处理,保证相邻顶点的连线为多边形的边;
步骤3.2、从初始不可通过区域中的多边形P1中的任一不在多边形P2内的顶点A出发,沿着多边形P1的顶点A顺时针方向检测多边形P1每一条边:如果顶点A与下一顶点B所构成的边是与多边形P2不相交的,则顶点B作为合并后的区域中一个顶点;如果顶点B与下一顶点C所构成的边是与多边形P2相交的,则交点V1为合并后的区域中一个顶点;然后顺时针方向继续检测多边形P2的约束边,直至返回到多边形P1中的顶点A,找到的所有合并后的区域中的顶点,依次连接形成最终不可通过区域。
所述步骤4中采用增量式约束Delaunay三角剖分方法对层次平面内的约束进行约束Delaunay三角形剖分,层次平面Fi边界的顶点以及最终不可通过区域的顶点为约束顶点,层次平面Fi边界的边以及最终不可通过区域的边为约束边,约束顶点和约束边合称为约束,所述步骤4包括:
步骤4.1、求得能包含层次平面Fi的所有约束的Delaunay三角形,形成一个约束Delaunay三角形集合Ti,此时约束Delaunay三角形集合Ti中只包含一个三角形;
步骤4.2、利用增量式约束Delaunay三角剖分方法向约束Delaunay三角形集合Ti中插入约束顶点和约束边,直至插入结束执行步骤4.3;
步骤4.3、删除掉层次平面Fi边界之外的三角形,以及最终不可通过区域内的三角形,从而得到层次平面Fi的最终约束Delaunay三角形集合Ti。
所述步骤4.2包括:
步骤4.2.1、向约束Delaunay三角形集合Ti中插入约束顶点P;
步骤4.2.1.1、在约束Delaunay三角形集合Ti中,定位约束顶点P所在的三角形t;
步骤4.2.1.2、连接约束顶点P及其所在三角形t的三个顶点,将三角形t分成三个三角形t1、t2、t3;
步骤4.2.1.3、分别判断三角形t1、t2、t3中约束顶点P的对边是否为约束边:是,则约束边不做更改,否则进行步骤4.2.1.4;
步骤4.2.1.4、根据Lawson局部优化算法优化三角形t1、t2、t3,形成新的约束Delaunay三角形集合Ti,执行步骤4.2.1.1,直到所有约束顶点均已插入完成,得到新的约束Delaunay三角形集合Ti,执行步骤4.2.2;
步骤4.2.2、向约束Delaunay三角形集合Ti中插入约束边:插入约束边ab到约束Delaunay三角形集合Ti中;
步骤4.2.2.1、删除约束Delaunay三角形集合Ti中被约束边ab切割的三角形t1、t2、…、tk,从而形成新的约束Delaunay三角形集合Ti和一个多边形区域;
步骤4.2.2.2、将约束边ab添加到这个多边形区域中,将多边形区域分割成了约束边ab的左右两个多边形区域;
步骤4.2.2.3、分别在约束边ab的左右两个多边形区域内,利用外接圆准则重新对这两个多边形区域进行约束Delaunay三角形剖分,分别得到两个约束Delaunay三角形集合,将这两个约束Delaunay三角形集合添加到步骤4.2.2.1中的约束Delaunay三角形集合Ti中得到新的约束Delaunay三角集合Ti,执行步骤4.2.2.1,直到所有约束边均已插入完成,得到新的约束Delaunay三角形集合Ti,即得到当前层次平面的三角形。
有益效果:
本发明提供的一种面向3D场景的导航网格地图表示方法,首先抽取3D场景中的可行走层次平面,得到可行走层次平面集合,将孤立的平面以及不可行走的平面去除;抽象可行走层次平面内寻路角色的初始不可通过区域,能够实现将3D场景中的模型抽象为不可通过区域;对初始不可通过区域中的多边形进行区域合并得到最终不可通过区域;合并初始不可通过区域中相交的区域,形成最终不可通过区域,提高效率。对层次平面内的约束进行约束Delaunay三角形剖分,形成一个三角形集合;最终导航网格的构建,所有可行走层次平面内的三角形集合共同构成了最终的导航网格。最终的导航网格能够将障碍物和可行走区域充分分离。本发明是应用在数字媒体技术领域中,将增量式约束Delaunay三角剖分方法应用到3D场景中,从而达到对3D场景利用导航网格进行地图表示的目的。本发明有效地保证了障碍物与可行走区域的分离。
附图说明
图1为本发明具体实施方式的面向3D场景的导航网格地图表示方法的流程图;
图2为本发明具体实施方式的静态障碍物不可通过区域示意图;
图3为本发明具体实施方式的低门洞不可通过区域识别示意图;
图4为本发明具体实施方式的狭窄不可通过区域识别示意图;
图5为本发明具体实施方式的区域合并算法描述示意图,其中(a)为合并之前的区域示意图,(b)为合并之后的区域示意图;
图6为本发明具体实施方式的图4进行区域合并之后的结果图。
图7为本发明具体实施方式的获得包含平面内所有约束的大三角形示意图。
图8为本发明具体实施方式的Lawson局部优化示意图,其中(a)为Lawson局部优化前的示意图,(b)为Lawson局部优化后的示意图;
图9为本发明具体实施方式的插入约束边示意图,其中(a)为被ab切割的三角形集合示意图,(b)为构成PL和PR两个多边形区域示意图,(c)为重新对PL和PR多边形区域进行剖分之后的结果图;
图10为本发明具体实施方式的构成最终导航网格示意图;
图11为本发明具体实施方式的步骤1的流程图;
图12为本发明具体实施方式的步骤2的流程图;
图13为本发明具体实施方式的步骤4的流程图。
具体实施方式
下面结合附图对本发明的具体实施方式做详细说明。
一种面向3D场景的导航网格地图表示方法,方法的流程图如图1所示,包括:
步骤1、抽取3D场景中的可行走层次平面,得到可行走层次平面集合;
所述步骤1,如图11所示,包括:
步骤1.1、将3D场景中Y轴为0的层次平面F0(地面)作为初始可行走层次平面,将层次平面F0添加到可行走层次平面集合F中,接着执行步骤1.2;
3D场景可能有多个层次平面,寻路角色可以在不同层次平面上行走,但是层次平面与层次平面之间是连通的,可以通过斜坡连接,没有孤立的层次平面,即所有的层次平面是连通的。要抽取当前场景的层次平面。
步骤1.2、选择可行走层次平面集合F中第一个未遍历的层次平面Fi,循环遍历与层次平面Fi相连的未加入层次平面集合F的层次平面:若存在满足距离层次平面Fi的高度小于寻路角色能够跨过的最大高度H或者坡度β小于寻路角色能够行走的最大坡度α的层次平面Fj,并且层次平面Fj的宽度和长度均大于2R时,层次平面Fj为可行走层次平面,初始化层次平面Fj的边界,并将可行走层次平面Fj添加到可行走层次平面集合F中,接着执行步骤1.3;R为寻路角色能够通过的最小狭窄区域的宽度;
步骤1.3、不断循环执行步骤1.2,直至所有层次平面被遍历,遍历结束后,执行步骤1.4;
步骤1.4、输出可行走层次平面集合F={F0,F1,…,Fi}。
步骤2、抽象可行走层次平面内寻路角色的初始不可通过区域;
所述步骤2,如图12所示,包括:
步骤2.1、抽象出可行走层次平面内的静态障碍物不可通过区域:将3D场景中静态障碍物模型与可行走层次平面进行交运算得到多个交点,这些交点组成的闭合多边形区域即是障碍物不可通过区域,图2为一个层次平面内的障碍物不可通过区域示意图,两个多边形A、B为两个静态障碍物不可通过区域;
步骤2.2、抽象出可行走层次平面内的低门洞不可通过区域:可行走层次平面与静态障碍物模型相交得到多个交点,再将层次平面向上平移一个阈值H得到新的层次平面,将新的层次平面与当前静态障碍物模型的交点向平移前的层次平面投影得到投影点,平移前的层次平面与静态障碍物模型得到的交点与所述投影点组成的闭合多边形区域即低门洞不可通过区域;
所述步骤2.2,包括:
步骤2.2.1、将层次平面F0与静态障碍物模型相交得到M=4个交点,如图3所示,分别是x1、x2、x3、x4,层次平面F0向上平移一个阈值H得到的层次平面F0h与当前静态障碍物模型相交得到N=4个交点,分别是y1、y2、y3、y4;如果M和N均为0,则执行步骤2.2.6;否则,将这M+N=8个交点以Y轴为轴进行顺时针排序,排序的结果为x1、x2、y2、y4、x4、x3、y3、y1;从第一个交点x1开始,将第一个交点x1作为当前点开始循环执行步骤2.2.2,直至遍历结束,遍历结束后执行步骤2.2.5;
步骤2.2.2、获得当前点f,以及当前点的下一个点g,如果点f和点g均是在层次平面F0内,则增加一个不可通过线段fg,接着选择g点作为当前点,继续执行步骤2.2.2;否则,如果f点和g点两个点中有一个在层次平面F0内,假定f点在层次平面F0内,g点不在层次平面F0内,则执行步骤2.2.3;如果f点和g点均在层次平面F0h内,则执行步骤2.2.4;
步骤2.2.3、查找静态障碍物模型中是否存在一个点(x,y,z)在f点和g点之间,即满足f.x<x<g.x,f.y<y<g.y,f.z<z<g.z,如果存在这样的点,则将g点向层次平面F0做投影得到g’点,新增加不可通过线段fg’,接着选择g点作为当前点,继续执行步骤2.2.2;如果不存在这样的点则不做处理,直接选择g点作为当前点,继续执行步骤2.2.2;
步骤2.2.4、查找静态障碍物模型中是否存在一个点(x,y,z)满足该点在层次平面F0h的下方,并且f.x<x<g.x,f.z<z<g.z,如果存在这样的点则将f、g两点均向层次平面F0做投影得到f’、g’两点,新增加不可通过线段f’g’,接着选择g点作为当前点,继续执行步骤2.2.2;如果不存在这样的点则不做处理,直接选择g点作为当前点,继续执行步骤2.2.2;
步骤2.2.5、遍历结束后,得到若干不可通过线段,如图3所示,新增加线段x1y1’,y3’x3,x3x4,x4y4’,y2’x2,x2x1共6条线段。继续遍历与层次平面F0h相交的N个交点,将这N个交点按顺时针排序,依次遍历相邻的两个点k、m,查找静态障碍物模型中是否存在一个点(x,y,z)满足该点在层次平面F0h的下方,并且k.x<x<m.x,k.z<z<m.z,如果存在这样的点则将k、m两点均向层次平面F0做投影得到k’、m’两点,新增加不可通过线段k’m’,直至遍历结束,若干不可通过线段及约束边组成的闭合多边形区域作为低门洞不可通过区域,如图3所示,遍历结束后新增加两条约束边y1’y2’以及y3’y4’,由此这8条组成两个闭合多边形区域x1x2y1’y2’以及x3x4y3’y4’;
步骤2.2.6、获得不与层次平面F0、层次平面F0h相交的静态障碍物模型中Y值最高的点和Y值最低的点,如果两个点均在两个层次平面F0和F0h之间,则获得该静态障碍物模型在层次平面F0的投影区域,将这个投影区域作为一个低门洞不可通过区域,否则不作处理。
步骤2.3、抽象出可行走层次平面内的狭窄不可通过区域:通过作垂线计算两个不可通过区域中的一个不可通过区域的每个顶点到另一个不可通过区域的各边的距离,当距离的最小值小于寻路角色能够通过的最小狭窄区域的宽度R时,则此时这两个不可通过区域之间的两个最短距离对应的垂线与两条边组成的闭合多边形区域作为狭窄不可通过区域;如图4所示,区域B的顶点c和顶点d到区域A的距离小于R,则垂线ce和df与边ab和cd共同构成的闭合多边形cefd为一个狭窄不可通过区域。
步骤2.4、可行走层次平面内的静态障碍物不可通过区域、低门洞不可通过区域、狭窄不可通过区域共同构成了初始不可通过区域。
步骤3、对初始不可通过区域中相交区域进行区域合并得到最终不可通过区域;
所述步骤3中采用Weiler-Atherton多边形裁剪算法对初始不可通过区域中的相交区域进行区域合并得到最终不可通过区域,包括:
步骤3.1、将初始不可通过区域中的多边形的顶点顺时针处理,保证相邻顶点的连线为多边形的边;如图5(a)的区域P1的顶点逆时针处理后的顶点顺序为ABCDE;
步骤3.2、如图5(a)所示,从初始不可通过区域中的多边形P1中的任一不在多边形P2内的顶点A出发,沿着多边形P1的顶点A顺时针方向检测多边形P1每一条边:如果顶点A与下一顶点B所构成的边是与多边形P2不相交的,则顶点B作为合并后的区域中一个顶点;如果顶点B与下一顶点C所构成的边是与多边形P2相交的,则交点V1为合并后的区域中一个顶点;然后顺时针方向继续检测多边形P2的约束边,直至返回到多边形P1中的顶点A,找到的所有合并后的区域中的顶点,依次连接形成最终不可通过区域。如图5(b)为图5(a)的区域合并后构成的区域即最终不可通过区域。如图6为图4的三个初始不可通过区域进行合并之后的最终不可通过区域,图4中区域A、B以及cefd,三个区域合并之后构成了图6中一个最终不可通过区域。
步骤4、对层次平面内的约束进行约束Delaunay三角剖分;
所述步骤4中采用增量式约束Delaunay三角剖分方法对层次平面内的约束进行约束Delaunay三角形剖分,层次平面Fi边界的顶点以及最终不可通过区域的顶点为约束顶点,层次平面Fi边界的边以及最终不可通过区域的边为约束边,约束顶点和约束边合称为约束,
如图13所示,所述步骤4具体步骤包括:
步骤4.1、求得能包含层次平面Fi的所有约束的Delaunay三角形,形成一个约束Delaunay三角形集合Ti,此时约束Delaunay三角形集合Ti中只包含一个三角形,如图7所示,最外围的大三角形即为包含所有约束的三角形;
步骤4.2、利用增量式约束Delaunay三角剖分方法向约束Delaunay三角形集合Ti中插入约束顶点和约束边,直至插入结束执行步骤4.3;
所述步骤4.2包括:
步骤4.2.1、向约束Delaunay三角形集合Ti中插入约束顶点P;
如图13所示,步骤4.2.1具体步骤如下:
步骤4.2.1.1、在约束Delaunay三角形集合Ti中,定位约束顶点P所在的三角形t;
步骤4.2.1.2、连接约束顶点P及其所在三角形t的三个顶点,将三角形t分成三个三角形t1、t2、t3,如图8(a)所示;
步骤4.2.1.3、分别判断三角形t1、t2、t3中约束顶点P的对边是否为约束边:是,则约束边不做更改,否则进行步骤4.2.1.4;
步骤4.2.1.4、根据Lawson局部优化算法优化三角形t1、t2、t3,形成新的约束Delaunay三角形集合Ti,如图8(a)所示为Lawson局部优化前示意图,图8(b)为Lawson局部优化后示意图。执行步骤4.2.1.1,直到所有约束顶点均已插入完成,得到新的约束Delaunay三角形集合Ti,执行步骤4.2.2;
步骤4.2.2、向约束Delaunay三角形集合Ti中插入约束边:插入约束边ab到约束Delaunay三角形集合Ti中;
步骤4.2.2.1、删除约束Delaunay三角形集合Ti中被约束边ab切割的三角形t1、t2、…、t5,如图9(a)所示,从而形成新的约束Delaunay三角形集合Ti和一个多边形区域;
步骤4.2.2.2、将约束边ab添加到这个多边形区域中,将多边形区域分割成了约束边ab的左右两个多边形区域,如图9(b)所示的PL和PR两个多边形区域;
步骤4.2.2.3、分别在约束边ab的左右两个多边形区域内,利用外接圆准则重新对这两个多边形区域进行约束Delaunay三角形剖分,分别得到两个约束Delaunay三角形集合,将这两个约束Delaunay三角形集合添加到步骤4.2.2.1中的约束Delaunay三角形集合Ti中得到新的约束Delaunay三角集合Ti,如图9(c)所示为重新剖分之后构成的三角形集合示意图,执行步骤4.2.2.1,直到所有约束边均已插入完成,得到新的约束Delaunay三角形集合Ti,即得到当前层次平面的三角形。
步骤4.3、删除掉层次平面Fi边界之外的三角形,以及最终不可通过区域内的三角形,从而得到层次平面Fi的最终约束Delaunay三角形集合Ti。
步骤5、层次平面集合内所有层次平面的三角形构成了最终的3D场景导航网格。如图10所示,为最终的3D场景导航网格示意图,图中的所有三角形组成的集合即为最终的导航网格。
Claims (7)
1.一种面向3D场景的导航网格地图表示方法,其特征在于,包括:
步骤1、抽取3D场景中的可行走层次平面,得到可行走层次平面集合;
步骤2、抽象可行走层次平面内寻路角色的初始不可通过区域;
步骤3、对初始不可通过区域中相交区域进行区域合并得到最终不可通过区域;
步骤4、对层次平面内的约束进行约束Delaunay三角剖分;
步骤5、层次平面集合内所有层次平面的三角形构成了最终的3D场景导航网格。
2.根据权利要求1所述的方法,其特征在于,所述步骤1,包括:
步骤1.1、将3D场景中Y轴为0的层次平面F0作为初始可行走层次平面,将层次平面F0添加到可行走层次平面集合F中,接着执行步骤1.2;
步骤1.2、选择可行走层次平面集合F中第一个未遍历的层次平面Fi,循环遍历与层次平面Fi相连的未加入层次平面集合F的层次平面:若存在满足距离层次平面Fi的高度小于寻路角色能够跨过的最大高度H或者坡度β小于寻路角色能够行走的最大坡度α的层次平面Fj,并且层次平面Fj的宽度和长度均大于2R时,层次平面Fj为可行走层次平面,初始化层次平面Fj的边界,并将可行走层次平面Fj添加到可行走层次平面集合F中,接着执行步骤1.3;R为寻路角色能够通过的最小狭窄区域的宽度;
步骤1.3、不断循环执行步骤1.2,直至所有层次平面被遍历,遍历结束后,执行步骤1.4;
步骤1.4、输出可行走层次平面集合F={F0,F1,…,Fi}。
3.根据权利要求1所述的方法,其特征在于,所述步骤2,包括:
步骤2.1、抽象出可行走层次平面内的静态障碍物不可通过区域:将3D场景中静态障碍物模型与可行走层次平面进行交运算得到多个交点,这些交点组成的闭合多边形区域即是障碍物不可通过区域;
步骤2.2、抽象出可行走层次平面内的低门洞不可通过区域:可行走层次平面与静态障碍物模型相交得到多个交点,再将层次平面向上平移一个阈值H得到新的层次平面,将新的层次平面与当前静态障碍物模型的交点向平移前的层次平面投影得到投影点,平移前的层次平面与静态障碍物模型得到的交点与所述投影点组成的闭合多边形区域即低门洞不可通过区域;
步骤2.3、抽象出可行走层次平面内的狭窄不可通过区域:通过作垂线计算两个不可通过区域中的一个不可通过区域的每个顶点到另一个不可通过区域的各边的距离,当距离的最小值小于寻路角色能够通过的最小狭窄区域的宽度R时,则此时这两个不可通过区域之间的两个最短距离对应的垂线与两条边组成的闭合多边形区域作为狭窄不可通过区域;
步骤2.4、可行走层次平面内的静态障碍物不可通过区域、低门洞不可通过区域、狭窄不可通过区域共同构成了初始不可通过区域。
4.根据权利要求3所述的方法,其特征在于,所述步骤2.2,包括:
步骤2.2.1、将层次平面F0与静态障碍物模型相交得到M个交点,层次平面F0向上平移一个阈值H得到的层次平面F0h与当前静态障碍物模型相交得到N个交点;如果M和N均为0,则执行步骤2.2.6;否则,将这M+N个交点以Y轴为轴进行顺时针排序;从第一个交点开始,将第一个交点作为当前点开始循环执行步骤2.2.2,直至遍历结束,遍历结束后执行步骤2.2.5;
步骤2.2.2、获得当前点,以及当前点的下一个点,如果当前点和下一个点均是在层次平面F0内,则增加一个不可通过线段,接着选择下一个点作为当前点,继续执行步骤2.2.2;否则,如果当前点和下一个点这两个点中有一个在层次平面F0内,假定当前点在层次平面F0内,下一个点不在层次平面F0内,则执行步骤2.2.3;如果当前点和下一个点均在层次平面F0h内,则执行步骤2.2.4;
步骤2.2.3、查找静态障碍物模型中是否存在一个点(x,y,z)在当前点f和下一个点g之间,即满足f.x<x<g.x,f.y<y<g.y,f.z<z<g.z,如果存在这样的点,则将g点向层次平面F0做投影得到g’点,新增加不可通过线段fg’,接着选择g点作为当前点,继续执行步骤2.2.2;如果不存在这样的点则不做处理,直接选择g点作为当前点,继续执行步骤2.2.2;
步骤2.2.4、查找静态障碍物模型中是否存在一个点(x,y,z)满足该点在层次平面F0h的下方,并且f.x<x<g.x,f.z<z<g.z,如果存在这样的点则将f、g两点均向层次平面F0做投影得到f’、g’两点,新增加不可通过线段f’g’,接着选择g点作为当前点,继续执行步骤2.2.2;如果不存在这样的点则不做处理,直接选择g点作为当前点,继续执行步骤2.2.2;
步骤2.2.5、遍历结束后,得到若干不可通过线段,继续遍历与层次平面F0h相交的N个交点,将这N个交点按顺时针排序,依次遍历相邻的两个点k、m,查找静态障碍物模型中是否存在一个点(x,y,z)满足该点在层次平面F0h的下方,并且k.x<x<m.x,k.z<z<m.z,如果存在这样的点则将k、m两点均向层次平面F0做投影得到k’、m’两点,新增加不可通过线段k’m’,直至遍历结束,若干不可通过线段及约束边组成的闭合多边形区域作为低门洞不可通过区域;
步骤2.2.6、获得不与层次平面F0、层次平面F0h相交的静态障碍物模型中Y值最高的点和Y值最低的点,如果两个点均在两个层次平面F0和F0h之间,则获得该静态障碍物模型在层次平面F0的投影区域,将这个投影区域作为一个低门洞不可通过区域,否则不作处理。
5.根据权利要求1所述的方法,其特征在于,所述步骤3中采用Weiler-Atherton多边形裁剪算法对初始不可通过区域中的多边形进行区域合并得到最终不可通过区域,包括:
步骤3.1、将初始不可通过区域中的多边形的顶点顺时针处理,保证相邻顶点的连线为多边形的边;
步骤3.2、从初始不可通过区域中的多边形P1中的任一不在多边形P2内的顶点A出发,沿着多边形P1的顶点A顺时针方向检测多边形P1每一条边:如果顶点A与下一顶点B所构成的边是与多边形P2不相交的,则顶点B作为合并后的区域中一个顶点;如果顶点B与下一顶点C所构成的边是与多边形P2相交的,则交点V1为合并后的区域中一个顶点;然后顺时针方向继续检测多边形P2的约束边,直至返回到多边形P1中的顶点A,找到的所有合并后的区域中的顶点,依次连接形成最终不可通过区域。
6.根据权利要求1所述的方法,其特征在于,所述步骤4中采用增量式约束Delaunay三角剖分方法对层次平面内的约束进行约束Delaunay三角形剖分,层次平面Fi边界的顶点以及最终不可通过区域的顶点为约束顶点,层次平面Fi边界的边以及最终不可通过区域的边为约束边,约束顶点和约束边合称为约束,所述步骤4包括:
步骤4.1、求得能包含层次平面Fi的所有约束的Delaunay三角形,形成一个约束Delaunay三角形集合Ti,此时约束Delaunay三角形集合Ti中只包含一个三角形;
步骤4.2、利用增量式约束Delaunay三角剖分方法向约束Delaunay三角形集合Ti中插入约束顶点和约束边,直至插入结束执行步骤4.3;
步骤4.3、删除掉层次平面Fi边界之外的三角形,以及最终不可通过区域内的三角形,从而得到层次平面Fi的最终约束Delaunay三角形集合Ti。
7.根据权利要求6所述的方法,其特征在于,所述步骤4.2包括:
步骤4.2.1、向约束Delaunay三角形集合Ti中插入约束顶点P;
步骤4.2.1.1、在约束Delaunay三角形集合Ti中,定位约束顶点P所在的三角形t;
步骤4.2.1.2、连接约束顶点P及其所在三角形t的三个顶点,将三角形t分成三个三角形t1、t2、t3;
步骤4.2.1.3、分别判断三角形t1、t2、t3中约束顶点P的对边是否为约束边:是,则约束边不做更改,否则进行步骤4.2.1.4;
步骤4.2.1.4、根据Lawson局部优化算法优化三角形t1、t2、t3,形成新的约束Delaunay三角形集合Ti,执行步骤4.2.1.1,直到所有约束顶点均已插入完成,得到新的约束Delaunay三角形集合Ti,执行步骤4.2.2;
步骤4.2.2、向约束Delaunay三角形集合Ti中插入约束边:插入约束边ab到约束Delaunay三角形集合Ti中;
步骤4.2.2.1、删除约束Delaunay三角形集合Ti中被约束边ab切割的三角形t1、t2、…、tk,从而形成新的约束Delaunay三角形集合Ti和一个多边形区域;
步骤4.2.2.2、将约束边ab添加到这个多边形区域中,将多边形区域分割成了约束边ab的左右两个多边形区域;
步骤4.2.2.3、分别在约束边ab的左右两个多边形区域内,利用外接圆准则重新对这两个多边形区域进行约束Delaunay三角形剖分,分别得到两个约束Delaunay三角形集合,将这两个约束Delaunay三角形集合添加到步骤4.2.2.1中的约束Delaunay三角形集合Ti中得到新的约束Delaunay三角集合Ti,执行步骤4.2.2.1,直到所有约束边均已插入完成,得到新的约束Delaunay三角形集合Ti,即得到当前层次平面的三角形。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611143856.XA CN106600697B (zh) | 2016-12-13 | 2016-12-13 | 一种面向3d场景的导航网格地图表示方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611143856.XA CN106600697B (zh) | 2016-12-13 | 2016-12-13 | 一种面向3d场景的导航网格地图表示方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106600697A true CN106600697A (zh) | 2017-04-26 |
CN106600697B CN106600697B (zh) | 2019-10-11 |
Family
ID=58599143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611143856.XA Active CN106600697B (zh) | 2016-12-13 | 2016-12-13 | 一种面向3d场景的导航网格地图表示方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106600697B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107982917A (zh) * | 2017-11-21 | 2018-05-04 | 北京广同川临场互动科技有限公司 | 一种3d游戏的人物路径搜索方法 |
CN108334080A (zh) * | 2018-01-18 | 2018-07-27 | 大连理工大学 | 一种针对机器人导航的虚拟墙自动生成方法 |
CN109260709A (zh) * | 2018-09-11 | 2019-01-25 | 深圳市创梦天地科技有限公司 | 一种动态路线的生成方法及装置 |
CN109668561A (zh) * | 2017-10-13 | 2019-04-23 | 中兴通讯股份有限公司 | 一种室内路径规划方法、终端及可读存储介质 |
CN109685903A (zh) * | 2018-12-29 | 2019-04-26 | 深圳市柠檬互动科技有限公司 | 一种超大地图移动优化方法 |
CN109741458A (zh) * | 2019-01-24 | 2019-05-10 | 苏明 | 一种基于Unity3D快速构建复杂多边形平面的方法 |
CN110523081A (zh) * | 2019-08-08 | 2019-12-03 | 腾讯科技(深圳)有限公司 | 导航寻路路径的规划方法及装置 |
CN110543721A (zh) * | 2019-09-04 | 2019-12-06 | 南京林业大学 | 一种面向室内位置服务的导航网络构建方法 |
CN110917624A (zh) * | 2019-12-06 | 2020-03-27 | 珠海海鸟科技有限公司 | 路径确定方法、装置及设备 |
CN111035930A (zh) * | 2019-12-06 | 2020-04-21 | 珠海海鸟科技有限公司 | 地图数据处理方法及装置 |
CN111830998A (zh) * | 2020-06-05 | 2020-10-27 | 科沃斯机器人股份有限公司 | 作业方法、虚拟墙添加方法、设备及存储介质 |
CN112121435A (zh) * | 2020-09-18 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 游戏寻路方法、装置、服务器和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7088362B2 (en) * | 1999-10-15 | 2006-08-08 | Kabushiki Kaisha Toshiba | Graphic computing apparatus |
CN101504776A (zh) * | 2009-03-17 | 2009-08-12 | 北京像素软件科技股份有限公司 | 一种3d场景的寻路方法和寻路装置 |
CN103234539A (zh) * | 2013-04-22 | 2013-08-07 | 南京师范大学 | 面向大型购物中心的三维可视化室内导航方法 |
-
2016
- 2016-12-13 CN CN201611143856.XA patent/CN106600697B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7088362B2 (en) * | 1999-10-15 | 2006-08-08 | Kabushiki Kaisha Toshiba | Graphic computing apparatus |
CN101504776A (zh) * | 2009-03-17 | 2009-08-12 | 北京像素软件科技股份有限公司 | 一种3d场景的寻路方法和寻路装置 |
CN103234539A (zh) * | 2013-04-22 | 2013-08-07 | 南京师范大学 | 面向大型购物中心的三维可视化室内导航方法 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109668561A (zh) * | 2017-10-13 | 2019-04-23 | 中兴通讯股份有限公司 | 一种室内路径规划方法、终端及可读存储介质 |
CN109668561B (zh) * | 2017-10-13 | 2023-04-14 | 中兴通讯股份有限公司 | 一种室内路径规划方法、终端及可读存储介质 |
CN107982917B (zh) * | 2017-11-21 | 2020-10-16 | 北京广同川临场互动科技有限公司 | 一种3d游戏的人物路径搜索方法 |
CN107982917A (zh) * | 2017-11-21 | 2018-05-04 | 北京广同川临场互动科技有限公司 | 一种3d游戏的人物路径搜索方法 |
CN108334080A (zh) * | 2018-01-18 | 2018-07-27 | 大连理工大学 | 一种针对机器人导航的虚拟墙自动生成方法 |
CN109260709A (zh) * | 2018-09-11 | 2019-01-25 | 深圳市创梦天地科技有限公司 | 一种动态路线的生成方法及装置 |
CN109260709B (zh) * | 2018-09-11 | 2022-02-22 | 深圳市创梦天地科技有限公司 | 一种动态路线的生成方法及装置 |
CN109685903A (zh) * | 2018-12-29 | 2019-04-26 | 深圳市柠檬互动科技有限公司 | 一种超大地图移动优化方法 |
CN109685903B (zh) * | 2018-12-29 | 2023-09-29 | 网易(杭州)网络有限公司 | 一种超大地图移动优化方法 |
CN109741458A (zh) * | 2019-01-24 | 2019-05-10 | 苏明 | 一种基于Unity3D快速构建复杂多边形平面的方法 |
CN110523081B (zh) * | 2019-08-08 | 2022-07-29 | 腾讯科技(深圳)有限公司 | 导航寻路路径的规划方法及装置 |
CN110523081A (zh) * | 2019-08-08 | 2019-12-03 | 腾讯科技(深圳)有限公司 | 导航寻路路径的规划方法及装置 |
CN110543721B (zh) * | 2019-09-04 | 2020-07-03 | 南京林业大学 | 一种面向室内位置服务的导航网络构建方法 |
CN110543721A (zh) * | 2019-09-04 | 2019-12-06 | 南京林业大学 | 一种面向室内位置服务的导航网络构建方法 |
CN111035930A (zh) * | 2019-12-06 | 2020-04-21 | 珠海海鸟科技有限公司 | 地图数据处理方法及装置 |
CN110917624A (zh) * | 2019-12-06 | 2020-03-27 | 珠海海鸟科技有限公司 | 路径确定方法、装置及设备 |
CN110917624B (zh) * | 2019-12-06 | 2024-01-23 | 珠海海鸟科技有限公司 | 路径确定方法、装置及设备 |
CN111035930B (zh) * | 2019-12-06 | 2024-04-19 | 珠海海鸟科技有限公司 | 地图数据处理方法及装置 |
CN111830998A (zh) * | 2020-06-05 | 2020-10-27 | 科沃斯机器人股份有限公司 | 作业方法、虚拟墙添加方法、设备及存储介质 |
CN112121435A (zh) * | 2020-09-18 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 游戏寻路方法、装置、服务器和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106600697B (zh) | 2019-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106600697A (zh) | 一种面向3d场景的导航网格地图表示方法 | |
Caesar et al. | Coco-stuff: Thing and stuff classes in context | |
CN101930623B (zh) | 一种三维道路模型化方法及装置 | |
Meyer | An overview of morphological segmentation | |
CN110220521B (zh) | 一种高精地图的生成方法和装置 | |
CN104899357B (zh) | 一种基于AutoCAD平面交叉口工程图的拓扑数据提取方法 | |
CN101944239A (zh) | 三维模型分割方法、装置以及包含该装置的图像处理系统 | |
CN103714575B (zh) | 一种sph与动态表面网格相结合的流体仿真方法 | |
CN103400372B (zh) | 一种基于Reeb图描述的三维拓扑信息提取方法 | |
CN102819865A (zh) | 一种大地电磁三维地质结构模型的建模方法 | |
CN106582023A (zh) | 一种游戏寻路方法和装置 | |
CN105389850A (zh) | 一种大规模三维场景的新型可见性生成方法 | |
CN102324041B (zh) | 像素归类方法、关节体姿态识别方法及鼠标指令生成方法 | |
CN105222793A (zh) | 一种基于矢量地图数据模型的城市层次化区域划分方法 | |
Oner et al. | Promoting connectivity of network-like structures by enforcing region separation | |
CN110404261A (zh) | 游戏中虚拟路网的构建方法及装置 | |
CN105139750B (zh) | 电子地图的展示方法和装置 | |
De Carli et al. | Procedural generation of 3D canyons | |
CN102903149B (zh) | 地质模型的成块成体方法以及装置 | |
CN104090945B (zh) | 一种地理空间实体构建方法及系统 | |
CN108090155A (zh) | 一种2d网格寻路方法、装置及存储介质 | |
CN105512194A (zh) | 一种游戏场景的管理方法和装置 | |
CN113129443A (zh) | 一种拓扑关系保持的三维建筑物简化方法及系统 | |
CN107067446B (zh) | 一种等高线邻近关系判断及方向自动调整方法 | |
CN109741451A (zh) | 一种基于地形图构建三维地表bim模型的系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220621 Address after: No. 860-3, shangshengou village, Hunnan District, Shenyang City, Liaoning Province Patentee after: Shenyang Xinsong virtual reality Industry Technology Research Institute Co.,Ltd. Address before: 110819 No. 3 lane, Heping Road, Heping District, Shenyang, Liaoning 11 Patentee before: Northeastern University |
|
TR01 | Transfer of patent right |