一种三维虚拟场景下的导航路径最优选择的方法转让专利

申请号 : CN201910005575.5

文献号 : CN109737965B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡学友赵一张圆蔡佳蕙沈浩张笑钦钱乐旦

申请人 : 温州大学

摘要 :

本发明提供一种三维虚拟场景下的导航路径最优选择的方法,包括将现实场景仿真成三维虚拟场景,并在三维虚拟场景中构建出导航路径的节点库,且进一步叠加到现实场景中;获取导航起点的实际位置坐标并映射成虚拟位置坐标,且进一步确定出目标点的虚拟位置坐标;根据导航起点和目标点的虚拟位置坐标,确定出导航起点和目标点二者的域号及二者间的最优域间路由,并遍历计算各自与域内的每一个节点的距离,得到各自距离最近的域内节点,且进一步根据各自距离最近的域内节点以及最优域间路由,得到导航起点至目标点的最优路径。实施本发明,能克服现有技术中遍历计算节点多且无法保证搜索路径最优的问题,提高了导航路径最优选择的准确性及速度。

权利要求 :

1.一种三维虚拟场景下的导航路径最优选择的方法,其特征在于,包括以下步骤:

步骤S1、将现实场景仿真成三维虚拟场景,并在所述三维虚拟场景中对所述现实场景的路径进行节点化处理,构建出导航路径的节点库,且进一步将已构建出节点库的三维虚拟场景叠加到所述现实场景中;其中,所述节点库包括域号表和域内节点表;所述域号表包括域号、邻接域号、邻域边界节点号、本域边界节点号及本域边界节点坐标;所述域内节点表包括域号、节点号、节点坐标、邻接节点号、邻接点欧氏距离值、所在域边界节点号和到边界节点的下一跳节点;

步骤S2、获取导航起点在所述现实场景中的实际位置坐标并映射到所述三维虚拟场景中,得到所述导航起点的虚拟位置坐标,且进一步在所述三维虚拟场景中确定出用户所选的目标点的虚拟位置坐标;

步骤S3、根据所述导航起点和所述目标点各自的虚拟位置坐标,在所述域号表中确定出所述导航起点和所述目标点二者的域号以及二者之间的最优域间路由,并遍历计算所述导航起点和所述目标点分别至各自所在域域内的每一个节点的距离,得到所述导航起点和所述目标点各自距离最近的域内节点,且进一步根据所述导航起点和所述目标点各自距离最近的域内节点以及所述导航起点至所述目标点的最优域间路由,在所述域号表及所述域内节点表中查询,得到所述导航起点至所述目标点的最优路径;

所述步骤S1具体包括:

利用三维建模软件将现实场景仿真成三维虚拟场景,并通过预设的顶点收缩算法对所述三维虚拟场景进行简化处理;

在所述简化处理后的三维虚拟场景进行区域划分,并根据所述现实场景的路径,在每一个区域中进行节点设置,构建出包括域号表和域内节点表的节点库,且进一步通过Vuforia将已构建出节点库的三维虚拟场景叠加到现实场景中。

2.如权利要求1所述的三维虚拟场景下的导航路径最优选择的方法,其特征在于,所述通过预设的顶点收缩算法对所述三维虚拟场景进行简化处理的具体步骤包括:设置所述三维虚拟场景中所有模型均由具有三个顶点的三角网格组成,且两个相邻的三角网格共用一个或两个顶点;其中,所述模型包括地面模型、正射影像和城市街道、建筑物及市政设施的三维立体模型;

将所述三维虚拟场景中所有模型的相邻两个顶点均收缩为一个顶点,得到简化处理后的三维虚拟场景,具体实现步骤如下:定义相邻两个顶点p1、p2收缩的代价变量为Δ,通过数值计算使Δp最小化,即可得到收缩后顶点p位置坐标,并重复即可得到简化处理后的三维虚拟场景;

首先,预先设置一个4x4的误差矩阵 将顶点p收缩的误差

转为二次项形式Δ(p)=pTQp,使得求最小化收缩代价Δ后的顶点p位置坐标等价于求解:

其中,由于模型是由三角面片组成,而面片与面片的交集形

成顶点,使得误差矩阵Q可通过计算顶点到平面的距离平方和得到;

其次,根据公式 得到Δ(p);其中,Ks

为二次误差矩阵,由平面方程ax+by+cz+d=0可知,S=[a  b  c  d]T,所以通过迭代收缩直到满足要求为止;

最后,根据Δ(p),得到收缩后顶点p位置坐标。

3.如权利要求1所述的三维虚拟场景下的导航路径最优选择的方法,其特征在于,所述步骤S2具体包括:在所述现实场景中,利用预设的GIS信息系统,获取导航起点的地理位置的经纬度信息,并通过计算得到所述导航起点以中央子午线和赤道交点为原点的地理位置二维平面坐标和通过气压传感数据计算出所述导航起点的海拔高度,得到所述导航起点的实际位置坐标 ;其中 ,所述 导航 起点的 实际 位置 坐标的 x 坐标 轴的值 ,根 据公式得到;所述导航起点的实际位置坐标的y坐标轴的值,根据公式y=r·cosθ·tan(L)得到;所述导航起点的实际位置坐标的z坐标轴的值,根据公式 得到;a为地球椭球的长半轴,b为短半轴,L为该导航起点经度减去中央经线L0后的值,P为当前大气压的值,P0为标准大气压值;

确定所述三维虚拟场景的坐标系,并设置所述现实场景的坐标系与所述三维虚拟场景的坐标系之间的线性变化关系,且进一步根据所设置的所述现实场景的坐标系与所述三维虚拟场景的坐标系之间的线性变化关系,将所述导航起点的实际位置坐标映射为所述三维虚拟场景中的虚拟位置坐标;

在所述三维虚拟场景中确定出用户所选的目标点的虚拟位置坐标。

4.如权利要求1所述的三维虚拟场景下的导航路径最优选择的方法,其特征在于,所述步骤S3具体包括:步骤311、在所述域号表中,找出各域边界节点号及各域边界节点坐标;

步骤312、将所述导航起点的虚拟位置坐标与各域边界节点坐标分别进行计算,得到所述导航起点分别至各域边界节点的欧氏距离值,并筛选出与所述导航起点欧氏距离值为最小时所对应的边界节点所在域域号作为所述导航起点的域号;

步骤313、将所述目标点的虚拟位置坐标与各域边界节点坐标分别进行计算,得到所述目标点分别至各域边界节点的欧氏距离值,并筛选出与所述目标点欧氏距离值为最小时所对应的边界节点所在域域号作为所述目标点的域号;

步骤314、根据所述导航起点的域号和所述目标点的域号,在所述域号表中确定出所述导航起点与所述目标点之间存在的所有域间路由,并根据各域边界节点坐标,计算出所述导航起点与所述目标点之间的每一条域间路由的欧氏距离值,且进一步筛选出所计算域间路由的欧氏距离值为最小时所对应的域间路由作为最优域间路由;

步骤315、在所述域号表中,找到位于所述最优域间路由上每一个域域号以及每一个域与其下一跳转域间发生跳转的边界节点;

步骤316、初始化最优路径列表和路由列表均为空,并将所述导航起点增加至所述最优路径列表中,以及将所述最优域间路由上的每一个域域号依序增加至所述路由列表中;

步骤317、将当前指针指向所述路由列表中所述导航起点所在域的域号,计算所述导航起点与其同域号内的各节点的欧氏距离值,得到同域号内与所述导航起点之间欧氏距离值为最小的域内节点作为所述导航起点的下一跳节点,并在所找到的位于所述最优域间路由上的每一个域与其下一跳转域间发生跳转的边界节点中,确定出位于所述最优域间路由上所述导航起点所在域的跳转边界节点,且进一步根据所述导航起点的下一跳节点以及位于所述最优域间路由上所述导航起点所在域的跳转边界节点,得到所述导航起点的下一跳节点的域内最优路径拓扑;其中,所述导航起点的下一跳节点的域内最优路径拓扑是通过查询所述域内节点表,所得到的所述导航起点的下一跳节点至域内位于所述最优域间路由上的跳转边界节点之间欧氏距离总值为最小的路径;

步骤318、依序将所述导航起点的下一跳节点的域内最优路径拓扑上的所有节点依次增加至所述最优路径列表中,且进一步在所述路由列表中,让当前指针下移一位;

步骤319、判断所述路由列表中当前指针指向的域号是否为所述目标点所在域的域号;

如果否,则执行下一步骤320;如果是,则跳转至步骤322;

步骤320、确定出上一指针指向域号的域内最优路径拓扑中处于末端的跳转边界节点作为参考节点,并根据所述域号表,在当前指针指向的域号中得到与所述参考节点对应跳转的边界节点作为本域起点,且在所找到的位于所述最优域间路由上的每一个域与其下一跳转域间发生跳转的边界节点中,确定出位于所述最优域间路由上当前指针指向的域号的跳转边界节点作为本域终点,进一步根据所确定出的本域起点及本域终点,得到当前指针指向的域号的域内最优路径拓扑;其中,所述当前指针指向的域号的域内最优路径拓扑是通过查询所述域内节点表,所得到的本域起点至域内位于所述最优域间路由上的本域终点之间欧氏距离总值为最小的路径;

步骤321、依序将所述当前指针指向的域号的域内最优路径拓扑上的所有节点依次增加至所述最优路径列表中,且进一步在所述路由列表中,让当前指针下移一位后返回步骤

319;

步骤322、计算所述目标点与其同域号内的各节点的欧氏距离值,得到同域号内与所述目标点之间欧氏距离值为最小的域内节点作为所述目标点的上一跳节点,并将所述最优路径列表中处于末端的节点作为所述目标点所在域的上一跳转域的边界节点,在所述域号表中筛选出所述目标点所在域中与所述最优路径列表中末端节点对应的边界节点,且进一步根据所述目标点的上一跳节点以及所述目标点所在域中所筛选出的边界节点,得到所述目标点的上一跳节点的域内最优路径拓扑;其中,所述目标点的上一跳节点的域内最优路径拓扑是通过查询所述域内节点表,所得到的所述目标点的上一跳节点至所述目标点所在域中所筛选出的边界节点之间欧氏距离总值为最小的路径;

步骤323、将所述目标点的上一跳节点的域内最优路径拓扑上的所有节点反序依次增加至所述最优路径列表中后,再将所述目标点作为最后一位增加至所述最优路径列表中,完成所述导航起点至所述目标点的最优导航路径选择。

说明书 :

一种三维虚拟场景下的导航路径最优选择的方法

技术领域

[0001] 本发明涉及三维虚拟现实技术领域,尤其涉及一种三维虚拟场景下的导航路径最优选择的方法。

背景技术

[0002] 虚拟现实技术是仿真技术的一个重要方向,是仿真技术与计算机图形学人机接口技术多媒体技术传感技术网络技术等多种技术的集合,主要包括模拟环境、感知、自然技能和传感设备等方面。模拟环境是由计算机生成的、实时动态的三维立体逼真图像。在实现导航的过程中,通过虚拟场景技术建立一个周围的环境的三维环境,用户在该环境中可以“全身心的”投入到导航路径之中,从而拓展用户的认知手段和领域,为导航路径的选择节约时间,提高效率和质量。
[0003] 对导航路径最优选择的算法已有较多的研究。A-star算法是启发式搜索,是一种基于现有信息的搜索策略,搜索过程中利用目前已知的诸如迭代步数,以及从初始状态和当前状态到目标状态估计所需的费用等信息。Dijkstra算法使用了广度优先搜索解决赋权有向图或者无向图的单源最短路径问题,该算法最终得到一个最短路径树。BFS算法根据启发式函数的推断,每次迭代最优的节点直到寻找到目标节点为止,本质上都是寻找局部最优。Floyd-Warshall算法是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包。
[0004] 可以看出,上述导航路径最优选择通常是基于启发函数的路径规划算法,在二维的场景中通过估价函数来决定下一步,通常求出的是局部最优,但是当存在多个最小值时不能保证搜索的路径最优,同时由于路径规划时遍历计算的节点很多,不仅不能计算负权边,还使得时间复杂度较高,因此导致效率较低并存在很多局限性。

发明内容

[0005] 本发明实施例所要解决的技术问题在于,提供一种三维虚拟场景下的导航路径最优选择的方法,能克服现有技术中遍历计算节点多且无法保证搜索路径最优的问题,提高了导航路径最优选择的准确性及速度。
[0006] 为了解决上述技术问题,本发明实施例提供了一种三维虚拟场景下的导航路径最优选择的方法,包括以下步骤:
[0007] 步骤S1、将现实场景仿真成三维虚拟场景,并在所述三维虚拟场景中对所述现实场景的路径进行节点化处理,构建出导航路径的节点库,且进一步将已构建出节点库的三维虚拟场景叠加到所述现实场景中;其中,所述节点库包括域号表和域内节点表;所述域号表包括域号、邻接域号、邻域边界节点号、本域边界节点号及本域边界节点坐标;所述域内节点表包括域号、节点号、节点坐标、邻接节点号、邻接点欧氏距离值、所在域边界节点号和到边界节点的下一跳节点;
[0008] 步骤S2、获取导航起点在所述现实场景中的实际位置坐标并映射到所述三维虚拟场景中,得到所述导航起点的虚拟位置坐标,且进一步在所述三维虚拟场景中确定出用户所选的目标点的虚拟位置坐标;
[0009] 步骤S3、根据所述导航起点和所述目标点各自的虚拟位置坐标,在所述域号表中确定出所述导航起点和所述目标点二者的域号以及二者之间的最优域间路由,并遍历计算所述导航起点和所述目标点分别至各自所在域域内的每一个节点的距离,得到所述导航起点和所述目标点各自距离最近的域内节点,且进一步根据所述导航起点和所述目标点各自距离最近的域内节点以及所述导航起点至所述目标点的最优域间路由,在所述域号表及所述域内节点表中查询,得到所述导航起点至所述目标点的最优路径。
[0010] 其中,所述步骤S1具体包括:
[0011] 利用三维建模软件将现实场景仿真成三维虚拟场景,并通过预设的顶点收缩算法对所述三维虚拟场景进行简化处理;
[0012] 在所述简化处理后的三维虚拟场景进行区域划分,并根据所述现实场景的路径,在每一个区域中进行节点设置,构建出包括域号表和域内节点表的节点库,且进一步通过Vuforia将已构建出节点库的三维虚拟场景叠加到现实场景中。
[0013] 其中,所述通过预设的顶点收缩算法对所述三维虚拟场景进行简化处理的具体步骤包括:
[0014] 设置所述三维虚拟场景中所有模型均由具有三个顶点的三角网格组成,且两个相邻的三角网格共用一个或两个顶点;其中,所述模型包括地面模型、正射影像和城市街道、建筑物及市政设施的三维立体模型;
[0015] 将所述三维虚拟场景中所有模型的相邻两个顶点均收缩为一个顶点,得到简化处理后的三维虚拟场景,具体实现步骤如下:
[0016] 定义相邻两个顶点p1、p2收缩的代价变量为Δ,通过数值计算使Δp最小化,即可得到收缩后顶点p位置坐标,并重复即可得到简化处理后的三维虚拟场景;
[0017] 首先,预先设置一个4x4的误差矩阵 将顶点p收缩的误差转为二次项形式Δ(p)=pTQp,使得求最小化收缩代价Δ后的顶点p位置坐标等价于求解: 其中,由于模型是由三角面片组成,而面片与面片的交
集形成顶点,使得误差矩阵Q可通过计算顶点到平面的距离平方和得到;
[0018] 其次,根据公式 得到Δ(p);其中,Ks为二次误差矩阵,由平面方程ax+by+cz+d=0可知,s=[a  b  c  d]T,所以通过迭代收缩直到满足要求为止;
[0019] 最后,根据Δ(p),得到收缩后顶点p位置坐标。
[0020] 其中,所述步骤S2具体包括:
[0021] 在所述现实场景中,利用预设的GIS信息系统,获取导航起点的地理位置的经纬度信息,并通过计算得到所述导航起点以中央子午线和赤道交点为原点的地理位置二维平面坐标和通过气压传感数据计算出所述导航起点的海拔高度,得到所述导航起点的实际位置坐标;其中 ,所述导航起点的实际位置坐标的 x坐标轴的值 ,根据公式得到;所述导航起点的实际位置坐标的y坐标轴的值,
根据公式y=r·cosθ·tan(L)得到;所述导航起点的实际位置坐标的z坐标轴的值,根据公式 得到;a为地球椭球的长半轴,b为短半轴,L为该点经度减去中央
经线L0后的值,P为当前大气压的值,P0为标准大气压值;
[0022] 确定所述三维虚拟场景的坐标系,并设置所述现实场景的坐标系与所述三维虚拟场景的坐标系之间的线性变化关系,且进一步根据所设置的所述现实场景的坐标系与所述三维虚拟场景的坐标系之间的线性变化关系,将所述导航起点的实际位置坐标映射为所述三维虚拟场景中的虚拟位置坐标;
[0023] 在所述三维虚拟场景中确定出用户所选的目标点的虚拟位置坐标。
[0024] 其中,所述步骤S3具体包括:
[0025] 步骤311、在所述域号表中,找出各域边界节点号及各域边界节点坐标;
[0026] 步骤312、将所述导航起点的虚拟位置坐标与各域边界节点坐标分别进行计算,得到所述导航起点分别至各域边界节点的欧氏距离值,并筛选出与所述导航起点欧氏距离值为最小时所对应的边界节点所在域域号作为所述导航起点的域号;
[0027] 步骤313、将所述目标点的虚拟位置坐标与各域边界节点坐标分别进行计算,得到所述目标点分别至各域边界节点的欧氏距离值,并筛选出与所述目标点欧氏距离值为最小时所对应的边界节点所在域域号作为所述目标点的域号;
[0028] 步骤314、根据所述导航起点的域号和所述目标点的域号,在所述域号表中确定出所述导航起点与所述目标点之间存在的所有域间路由,并根据各域边界节点坐标,计算出所述导航起点与所述目标点之间的每一条域间路由的欧氏距离值,且进一步筛选出所计算域间路由的欧氏距离值为最小时所对应的域间路由作为最优域间路由;
[0029] 步骤315、在所述域号表中,找到位于所述最优域间路由上每一个域域号以及每一个域与其下一跳转域间发生跳转的边界节点;
[0030] 步骤316、初始化最优路径列表和路由列表均为空,并将所述导航起点增加至所述最优路径列表中,以及将所述最优域间路由上的每一个域域号依序增加至所述路由列表中;
[0031] 步骤317、将当前指针指向所述路由列表中所述导航起点所在域的域号,计算所述导航起点与其同域号内的各节点的欧氏距离值,得到同域号内与所述导航起点之间欧氏距离值为最小的域内节点作为所述导航起点的下一跳节点,并在所找到的位于所述最优域间路由上的每一个域与其下一跳转域间发生跳转的边界节点中,确定出位于所述最优域间路由上所述导航起点所在域的跳转边界节点,且进一步根据所述导航起点的下一跳节点以及位于所述最优域间路由上所述导航起点所在域的跳转边界节点,得到所述导航起点的下一跳节点的域内最优路径拓扑;其中,所述导航起点的下一跳节点的域内最优路径拓扑是通过查询所述域内节点表,所得到的所述导航起点的下一跳节点至域内位于所述最优域间路由上的跳转边界节点之间欧氏距离总值为最小的路径;
[0032] 步骤318、依序将所述导航起点的下一跳节点的域内最优路径拓扑上的所有节点依次增加至所述最优路径列表中,且进一步在所述路由列表中,让当前指针下移一位;
[0033] 步骤319、判断所述路由列表中当前指针指向的域号是否为所述目标点所在域的域号;如果否,则执行下一步骤320;如果是,则跳转至步骤322;
[0034] 步骤320、确定出上一指针指向域号的域内最优路径拓扑中处于末端的跳转边界节点作为参考节点,并根据所述域号表,在当前指针指向的域号中得到与所述参考节点对应跳转的边界节点作为本域起点,且在所找到的位于所述最优域间路由上的每一个域与其下一跳转域间发生跳转的边界节点中,确定出位于所述最优域间路由上当前指针指向的域号的跳转边界节点作为本域终点,进一步根据所确定出的本域起点及本域终点,得到当前指针指向的域号的域内最优路径拓扑;其中,所述当前指针指向的域号的域内最优路径拓扑是过查询所述域内节点表,所得到的本域起点至域内位于所述最优域间路由上的本域终点之间欧氏距离总值为最小的路径;
[0035] 步骤321、依序将所述当前指针指向的域号的域内最优路径拓扑上的所有节点依次增加至所述最优路径列表中,且进一步在所述路由列表中,让当前指针下移一位后返回步骤319;
[0036] 步骤322、计算所述目标点与其同域号内的各节点的欧氏距离值,得到同域号内与所述目标点之间欧氏距离值为最小的域内节点作为所述目标点的上一跳节点,并将所述最优路径列表中处于末端的节点作为所述目标点所在域的上一跳转域的边界节点,在所述域号表中筛选出所述目标点所在域中与所述最优路径列表中末端节点对应的边界节点,且进一步根据所述目标点的上一跳节点以及所述目标点所在域中所筛选出的边界节点,得到所述目标点的上一跳节点的域内最优路径拓扑;其中,所述目标点的上一跳节点的域内最优路径拓扑是通过查询所述域内节点表,所得到的所述目标点的上一跳节点至所述目标点所在域中所筛选出的边界节点之间欧氏距离总值为最小的路径;
[0037] 步骤323、将所述目标点的上一跳节点的域内最优路径拓扑上的所有节点反序依次增加至所述最优路径列表中后,再将所述目标点作为最后一位增加至所述最优路径列表中,完成所述导航起点至所述目标点的最优导航路径选择。
[0038] 实施本发明实施例,具有如下有益效果:
[0039] 1、本发明引入计算机网络路由协议OSPF域的概念,使传统导航路径算法的遍历节点计算,转换为域间的计算,能极大的提高计算速度;
[0040] 2、本发明提出的模型顶点收缩算法,能极大的简化复杂精细模型,有效的提高大的三维虚拟场景中导航的运行速度,特别是复杂的城市地形环境。

附图说明

[0041] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,根据这些附图获得其他的附图仍属于本发明的范畴。
[0042] 图1为本发明实施例提出的一种三维虚拟场景下的导航路径最优选择的方法的流程图;
[0043] 图2为本发明实施例提出的一种三维虚拟场景下的导航路径最优选择的方法中步骤S3的流程图;
[0044] 图3为本发明实施例提出的一种三维虚拟场景下的导航路径最优选择的方法中基于Vuforia的AR实现的应用场景图;
[0045] 图4为本发明实施例提出的一种三维虚拟场景下的导航路径最优选择的方法中导航路径节点的区域划分的应用场景图。

具体实施方式

[0046] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
[0047] 如图1所示,为本发明实施例中,提出的一种三维虚拟场景下的导航路径最优选择的方法,包括以下步骤:
[0048] 步骤S1、将现实场景仿真成三维虚拟场景,并在所述三维虚拟场景中对所述现实场景的路径进行节点化处理,构建出导航路径的节点库,且进一步将已构建出节点库的三维虚拟场景叠加到所述现实场景中;其中,所述节点库包括域号表和域内节点表;所述域号表包括域号、邻接域号、邻域边界节点号、本域边界节点号及本域边界节点坐标;所述域内节点表包括域号、节点号、节点坐标、邻接节点号、邻接点欧氏距离值、所在域边界节点号和到边界节点的下一跳节点;
[0049] 具体过程为,步骤11、利用三维建模软件将现实场景仿真成三维虚拟场景,并通过预设的顶点收缩算法对所述三维虚拟场景进行简化处理;
[0050] 其中,为了提高三维虚拟场景导航系统的运行速度,通过预设的顶点收缩算法对三维虚拟场景进行简化处理的具体步骤包括:
[0051] 设置三维虚拟场景中所有模型均由具有三个顶点的三角网格组成,且两个相邻的三角网格共用一个或两个顶点;其中,模型包括地面模型、正射影像和城市街道、建筑物及市政设施的三维立体模型;
[0052] 将三维虚拟场景中所有模型的相邻两个顶点均收缩为一个顶点,得到简化处理后的三维虚拟场景,具体实现步骤如下:
[0053] 定义相邻两个顶点p1、p2收缩的代价变量为Δ,通过数值计算使Δp最小化,即可得到收缩后顶点p位置坐标,并重复即可得到简化处理后的三维虚拟场景;
[0054] 首先,预先设置一个4x4的误差矩阵 将顶点p收缩的误差转为二次项形式Δ(p)=pTQp,使得求最小化收缩代价Δ后的顶点p位置坐标等价于求解: 其中,由于模型是由三角面片组成,而面片与面片的交
集形成顶点,使得误差矩阵Q可通过计算顶点到平面的距离平方和得到;
[0055] 其次,根据公式 得到Δ(p);其中,Ks为二次误差矩阵,由平面方程ax+by+cz+d=0可知,s=[a  b  c  d]T,所以通过迭代收缩直到满足要求为止;
[0056] 最后,根据Δ(p),得到收缩后顶点p位置坐标。
[0057] 步骤12、在简化处理后的三维虚拟场景进行区域划分,并根据现实场景的路径,在每一个区域中进行节点设置,构建出包括域号表和域内节点表的节点库,且进一步通过Vuforia将已构建出节点库的三维虚拟场景叠加到现实场景中。
[0058] 其中,首先,导航路径的节点库是实现导航路径选择的基础,包括域号表(如下表1所示)和域内节点表(如下表2所示),具体所示如下:
[0059] 表1
[0060]
[0061] 表2
[0062]
[0063] 其次,导航路径的节点库的关键是如何进行路径节点的选取。本发明是采用人工选取路径节点,需要遵循以下几个规则:(1)道路的开始和结束需要设置节点;(2)道路的交叉口需要设置节点;(3)道路的弯曲部分需要设置节点。之后将整个三维虚拟场景按区域进行划分,区域划分的目的是减少路径选择的遍历计算。区域的划分遵循两个个规则:i)区域中的节点数控制在一定的范围内,不宜过大,如控制在8个节点内;ii)节点所属区域必须唯一性,不能出现一个节点属于两个区域。
[0064] 最后,通过Vuforia将已构建出节点库的三维虚拟场景叠加到现实场景中。
[0065] 步骤S2、获取导航起点在所述现实场景中的实际位置坐标并映射到所述三维虚拟场景中,得到所述导航起点的虚拟位置坐标,且进一步在所述三维虚拟场景中确定出用户所选的目标点的虚拟位置坐标;
[0066] 具体过程为,步骤21、在现实场景中,利用预设的GIS信息系统,获取导航起点的地理位置的经纬度信息,并通过计算得到所述导航起点以中央子午线和赤道交点为原点的地理位置二维平面坐标和通过气压传感数据计算出导航起点的海拔高度,得到导航起点的实际位置坐标;其中,导航起点的实际位置坐标的x坐标轴的值,根据公式得到;导航起点的实际位置坐标的y坐标轴的值,根据
公式y=r·cosθ·tan(L)得到;导航起点的实际位置坐标的z坐标轴的值,根据公式得到;a为地球椭球的长半轴,b为短半轴,L为该点经度减去中央经
线L0后的值,P为当前大气压的值,P0为标准大气压值;
[0067] 步骤22、确定三维虚拟场景的坐标系,并设置现实场景的坐标系与三维虚拟场景的坐标系之间的线性变化关系,且进一步根据所设置的现实场景的坐标系与三维虚拟场景的坐标系之间的线性变化关系,将导航起点的实际位置坐标映射为三维虚拟场景中的虚拟位置坐标;
[0068] 步骤23、在三维虚拟场景中确定出用户所选的目标点的虚拟位置坐标。
[0069] 步骤S3、根据所述导航起点和所述目标点各自的虚拟位置坐标,在所述域号表中确定出所述导航起点和所述目标点二者的域号以及二者之间的最优域间路由,并遍历计算所述导航起点和所述目标点分别至各自所在域域内的每一个节点的距离,得到所述导航起点和所述目标点各自距离最近的域内节点,且进一步根据所述导航起点和所述目标点各自距离最近的域内节点以及所述导航起点至所述目标点的最优域间路由,在所述域号表及所述域内节点表中查询,得到所述导航起点至所述目标点的最优路径。
[0070] 具体过程为,步骤311、在域号表中,找出各域边界节点号及各域边界节点坐标;
[0071] 步骤312、将导航起点的虚拟位置坐标与各域边界节点坐标分别进行计算,得到所述导航起点分别至各域边界节点的欧氏距离值,并筛选出与导航起点欧氏距离值为最小时所对应的边界节点所在域域号作为导航起点的域号;
[0072] 步骤313、将目标点的虚拟位置坐标与各域边界节点坐标分别进行计算,得到所述目标点分别至各域边界节点的欧氏距离值,并筛选出与目标点欧氏距离值为最小时所对应的边界节点所在域域号作为目标点的域号;
[0073] 步骤314、根据导航起点的域号和目标点的域号,在域号表中确定出导航起点与目标点之间存在的所有域间路由,并根据各域边界节点坐标,计算出导航起点与目标点之间的每一条域间路由的欧氏距离值,且进一步筛选出所计算域间路由的欧氏距离值为最小时所对应的域间路由作为最优域间路由;
[0074] 步骤315、在域号表中,找到位于最优域间路由上每一个域域号以及每一个域与其下一跳转域间发生跳转的边界节点;
[0075] 步骤316、初始化最优路径列表和路由列表均为空,并将导航起点增加至最优路径列表中,以及将最优域间路由上的每一个域域号依序增加至路由列表中;
[0076] 步骤317、将当前指针指向路由列表中导航起点所在域的域号,计算导航起点与其同域号内的各节点的欧氏距离值,得到同域号内与导航起点之间欧氏距离值为最小的域内节点作为导航起点的下一跳节点,并在所找到的位于最优域间路由上的每一个域与其下一跳转域间发生跳转的边界节点中,确定出位于最优域间路由上导航起点所在域的跳转边界节点,且进一步根据导航起点的下一跳节点以及位于最优域间路由上导航起点所在域的跳转边界节点,得到导航起点的下一跳节点的域内最优路径拓扑;其中,导航起点的下一跳节点的域内最优路径拓扑是通过查询域内节点表,所得到的导航起点的下一跳节点至域内位于最优域间路由上的跳转边界节点之间欧氏距离总值为最小的路径;
[0077] 步骤318、依序将导航起点的下一跳节点的域内最优路径拓扑上的所有节点依次增加至最优路径列表中,且进一步在路由列表中,让当前指针下移一位;
[0078] 步骤319、判断路由列表中当前指针指向的域号是否为目标点所在域的域号;如果否,则执行下一步骤320;如果是,则跳转至步骤322;
[0079] 步骤320、确定出上一指针指向域号的域内最优路径拓扑中处于末端的跳转边界节点作为参考节点,并根据域号表,在当前指针指向的域号中得到与参考节点对应跳转的边界节点作为本域起点,且在所找到的位于最优域间路由上的每一个域与其下一跳转域间发生跳转的边界节点中,确定出位于最优域间路由上当前指针指向的域号的跳转边界节点作为本域终点,进一步根据所确定出的本域起点及本域终点,得到当前指针指向的域号的域内最优路径拓扑;其中,当前指针指向的域号的域内最优路径拓扑是过查询域内节点表,所得到的本域起点至域内位于最优域间路由上的本域终点之间欧氏距离总值为最小的路径;
[0080] 步骤321、依序将当前指针指向的域号的域内最优路径拓扑上的所有节点依次增加至最优路径列表中,且进一步在路由列表中,让当前指针下移一位后返回步骤319;
[0081] 步骤322、计算目标点与其同域号内的各节点的欧氏距离值,得到同域号内与目标点之间欧氏距离值为最小的域内节点作为目标点的上一跳节点,并将最优路径列表中处于末端的节点作为目标点所在域的上一跳转域的边界节点,在所述域号表中筛选出目标点所在域中与最优路径列表中末端节点对应的边界节点,且进一步根据目标点的上一跳节点以及目标点所在域中所筛选出的边界节点,得到目标点的上一跳节点的域内最优路径拓扑;其中,目标点的上一跳节点的域内最优路径拓扑是通过查询域内节点表,所得到的目标点的上一跳节点至目标点所在域中所筛选出的边界节点之间欧氏距离总值为最小的路径;
[0082] 步骤323、将目标点的上一跳节点的域内最优路径拓扑上的所有节点反序依次增加至最优路径列表中后,再将目标点作为最后一位增加至最优路径列表中,完成导航起点至目标点的最优导航路径选择。
[0083] 如图3和图4所示,对本发明实施例中的三维虚拟场景下的导航路径最优选择的方法做做进一步说明:
[0084] 在图3中,将现场场景仿真成三维虚拟场景,并将已构建出节点库的三维虚拟场景叠加到现实场景中;图4中,通过人工选取节点和区域划分,得到下表3中具有具体数据的域号表和下表4中具有具体数据的域内节点表,具体如下:
[0085] 表3
[0086]
[0087]
[0088] 表4
[0089]
[0090] 利用GIS地理信息系统数据,计算出当前位置的实际坐标,利用线性法,将当前位置映射到虚拟三维场景中,实现如下:
[0091] 首先确定三维虚拟场景坐标系,将整个场景投射在(0,0,0)~(1,1,1)的立方空间中。坐标系原点(0,0,0),各轴取值范围(0,1)。寻出场景的各个极值点,在二维平面中,实际位置的极左点为虚拟场景原点的x,实际位置的极下点为虚拟场景原点的y,将场景最低海拔的位置设置为原点的z,即pr[min(x),min(y),min(z)]→pv0(0,0,0)。pr为点的实际坐标,pv虚拟坐标。同样,通过pr[max(x),max(y),max(z)]→pv1(1,1,1)得到(1,1,1)坐标点。
[0092] 获取当前点的实际坐标位置pr(x,y,z),通过现实场景的坐标系与三维虚拟场景的坐标系之间的线性变化关系进行线性变换,变成虚拟空间的坐标pv(x',y',z'),该点就是当前位置在虚拟场景中的定位。
[0093]
[0094] 根据图3,得到导航起点S的虚拟空间坐标后,在三维场景地图中设置一点作为目标点E,将E的坐标点由屏幕空间转换到虚拟三维场景的空间坐标,依据图形学的屏幕坐标转换即可完成。
[0095] 从S到E的路径规划,既要保证节点的跳数最少,也要保证d(S,E)最小,具体实现如下:
[0096] 首先,得到导航起点S和目标点E的坐标后,通过计算导航起点S和目标点E与各域的边界节点欧式距离值,比较得到最小欧式距离值的边界点所在域即为导航起点S和目标点E所在域,即可得到导航起点S和目标点E所在域的域号。
[0097] 具体计算如下:在域号表中,找出各域边界节点号及各域边界节点坐标,然后根据公式 算出导航起点S同各边界节点的欧式距离值,通过min(d(S,Pi))得出边界点Pi,其中,Pi的坐标查询域号表得到,然后通过查询域号表即可得出S点所在域的域号;
[0098] 同理,可以得出目标点E所在域的域号,图4中仿真显示导航起点S所在域的域号为A2,目标点E所在域的域号为A4。
[0099] 其次,调用域号表的域号路由,确定出导航起点S与目标点E之间存在的所有域间路由,发现A2→A4有两种方式实现,既A2→A3→A4和A2→A1→A5→A4。
[0100] 通过域号表的域互联边界节点的坐标,计算出域间距离d(A2,A1,A5,A4)>d(A2,A3,A4),即可得出最佳域间路由为A2→A3→A4。
[0101] 然后,根据最佳域间路由为A2→A3→A4,确定进一步确认域间的节点路由A2(P8)、A3(P9、P10、P13)和A4(P14、P17);
[0102] 接着,初始化最优路径列表L和路由列表Y均为空,此时增加导航起点S增加至最优路径列表L中,得到最优路径列表L={S},将最优域间路由上的每一个域域号依序增加至路由列表Y中,得到路由列表Y={A2、A3、A4};
[0103] 接着,路由列表Y当前指针指向A2,通过遍历导航起点S与A2域内各节点的欧式距离值,计算出离导航起点S欧式距离值最小的域内节点为P6,通过查询域号表,可知A2下一跳至A3的边界节点为P8,查询域内节点表得到P6→p8的路径为P6→P7→P8,即域内节点P6在A2域内的最优路径拓扑;此时,将P6、P7、P8依序增加至最优路径列表L中,得到最优路径列表L={S、P6、P7、P8},并将路由列表Y中的当前指针下移一位,指向A3;
[0104] 接着,判断出当前指针指向A3不是目标点E所在域的域号A4,找出P8为A3的上一跳转域A2的跳转边界节点,从而在A3(P9、P10、P13)的边界节点中筛选出与P8对应的跳转边界节点为P9,并把P9作为A3的本域起点,P10、P13作为A3的本域终点,查询域内节点表得到P9→p10的路径为P9→p10,P9→P13的路径为P9→P10→P13或P9→P11→P13,由于路径为P9→p10欧氏距离值最小,因此路径为P9→p10即为域内节点P9在A3域内的最优路径拓扑;此时,将P9、P10依序增加至最优路径列表L中,得到最优路径列表L={S、P6、P7、P8、P9、P10},并将路由列表Y中的当前指针下移一位,指向A4;
[0105] 然后,由于当前指针指向A4是目标点E所在域的域号A4,因此需要反向计算目标点E的最优路径拓扑。
[0106] 通过遍历目标点E与A4域内各节点的欧式距离值,计算出离目标点E欧式距离值最小的域内节点为P19。同时,由于最优路径列表L={S、P6、P7、P8、P9、P10}最后一位为P10,通过查询域号表得到该P10对应跳转位于A4域内的边界节点为P14。此时查询域内节点表得到P19→p14的路径为P19→P16→P15→p14,即域内节点P19在A4域内的最优路径拓扑;此时,将路径为P19→P16→P15→p14反序依次增加至最优路径列表L中,得到最优路径列表L={S、P6、P7、P8、P9、P10、P14、P15、P16、P19};
[0107] 最后,将目标点E增加至最优路径列表L中,得到最优路径列表L={S、P6、P7、P8、P9、P10、P14、P15、P16、P19、E},完成导航起点S至目标点E的最优导航路径选择。
[0108] 在整个路径选择的过程中,算法只涉及到导航起点所在域和目标点所在域的遍历计算,而中间域的路径选择都是通过预先存储的数据表查询所得(存储着相邻节点、边界节点等信息)。与传统的A*等算法相比,减少了大量的遍历计算。
[0109] 不同于传统的A*导航路径选择算法,本发明新增区域号(Area),将各路径的关键节点加入到各区域中,通过计算区域间的边界互联节点的距离,得出最优区域选择,事先定义好区域内各节点的拓扑结构,无需通过每节点的距离计算比较,提高了路径选择的速度,与传统A*算法的对比,请参看表5和表6所示;其中,表5为路径长度的对比表,表6为消耗时间的对比表。
[0110] 表5
[0111]
[0112] 表6
[0113]
[0114] 实施本发明实施例,具有如下有益效果:
[0115] 1、本发明引入计算机网络路由协议OSPF域的概念,使传统导航路径算法的遍历节点计算,转换为域间的计算,能极大的提高计算速度;
[0116] 2、本发明提出的模型顶点收缩算法,能极大的简化复杂精细模型,有效的提高大的三维虚拟场景中导航的运行速度,特别是复杂的城市地形环境。
[0117] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。
[0118] 以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。