CN102109353A - 一种实现三维导航的方法和装置 - Google Patents

一种实现三维导航的方法和装置 Download PDF

Info

Publication number
CN102109353A
CN102109353A CN 200910262383 CN200910262383A CN102109353A CN 102109353 A CN102109353 A CN 102109353A CN 200910262383 CN200910262383 CN 200910262383 CN 200910262383 A CN200910262383 A CN 200910262383A CN 102109353 A CN102109353 A CN 102109353A
Authority
CN
China
Prior art keywords
subregion
dimensional
scene models
dimensional scene
video camera
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
Application number
CN 200910262383
Other languages
English (en)
Other versions
CN102109353B (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.)
BYD Co Ltd
Original Assignee
BYD Co Ltd
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 BYD Co Ltd filed Critical BYD Co Ltd
Priority to CN 200910262383 priority Critical patent/CN102109353B/zh
Publication of CN102109353A publication Critical patent/CN102109353A/zh
Application granted granted Critical
Publication of CN102109353B publication Critical patent/CN102109353B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

本发明涉及地理位置导航技术领域,公开了一种实现三维导航的方法,对三维电子地图的三维场景进行分区并保存分区结果,建立用于保存每个三维场景的分区包含的三维场景模型特征信息的资源分区表;利用全球定位系统确定摄像机的当前位置坐标;根据所述当前位置坐标查询所述分区结果,确定摄像机的当前位置坐标所属的三维场景的分区并查询所述资源分区表,得到所述三维场景的分区包含的三维场景的特征信息;以及根据所得到的三维场景模型的特征信息加载所述预先定义的三维场景模型,并渲染三维场景。本发明还公开了用于实现三维导航的装置。本发明方案可以用较小的内存空间实现三维场景的导航,并且场景切换速度较高。

Description

一种实现三维导航的方法和装置
技术领域
本发明涉及地理位置导航技术领域,特别涉及一种实现三维导航的方法和装置。
背景技术
全球定位系统(Global Positioning System,GPS)是美国从本世纪70年代开始研制,历时20年,耗资200亿美元,于1994年全面建成,具有在海、陆、空进行全方位实时导航与定位能力的卫星导航与定位系统。GPS以全天候、高精度、自动化、高效率等显著特点及其所独具的定位导航、授时校频、精密测量等多方面的强大功能,已涉足众多的应用领域,使GPS成为继蜂窝移动通信(GSM)、互联网之后的全球第三个IT经济新增长点。
全球定位系统由空间部分、地面监控部分和用户接收机三大部分组成。用户接收机将得到的经纬度信息标注在预先设置好的电子地图上,使用户当前所处位置显示在电子地图上形成导航画面,从而实现位置导航。目前的电子地图主要采用二维形式,导航画面由点、线、面组成,与实际的三维地貌有很大的差距,使用起来不直观;特别是对于高架桥、高速路、立交桥等复杂立体路况难以正确显示。因此,三维导航技术应运而生。但是,三维导航所使用的三维电子地图的数据量极大,对于硬件数据处理性能要求很高,因此导致三维导航仪的价格昂贵,限制其推广应用。
发明内容
有鉴于此,本发明的目的在于,提出一种实现三维导航的方法和装置,能够以较低的数据处理量实现三维导航。
本发明实施例提出的一种实现三维导航的方法,预先定义三维电子地图中的三维场景模型,并建立三维电子地图的三维场景坐标系;以及对三维电子地图的三维场景进行分区并保存分区结果,建立用于保存每个三维场景的分区包含的三维场景模型特征信息的资源分区表;实现三维导航的过程包括如下步骤:
A、利用全球定位系统确定摄像机的当前位置坐标;
B、根据所述当前位置坐标查询所述分区结果,确定摄像机的当前位置坐标所属的三维场景的分区;
C、根据所确定的三维场景的分区查询所述资源分区表,得到所述三维场景的分区包含的三维场景的特征信息;以及
D、根据所得到的三维场景模型的特征信息加载所述预先定义的三维场景模型,并渲染三维场景。
其中,所述建立电子地图的三维场景坐标系包括:
确定每个三维场景模型的位置坐标以及三维场景模型的大小,具体包括:
确定三维场景模型的外接长方体,将所述外接长方体的对称中心坐标作为所述三维场景模型的位置坐标,所述外接长方体的长宽表示该三维场景模型的大小。
所述三维场景模型特征信息包括:三维场景模型的坐标位置、标识以及变换信息。
所述对电子地图的三维场景进行分区包括:
将三维场景在x-z平面上进行投影,确定投影轮廓的x值最小点min_x和最大点max_x,以及z值最小点min_z和最大点max_z,以这四个点确定投影轮廓的包围矩形;
设置分区的长度l=vt,宽度w=vt;其中,v表示摄像机移动速度的最大值,t表示设定的时间;
以所述分区长度l和宽度w分割所述投影轮廓的包围矩形,得到各个分区。
所述设定的时间t为2秒至4秒。
所述建立用于保存每个分区包含的三维场景模型特征信息的资源分区表包括如下步骤:
初始化一个二维矩阵,所述二维矩阵的每一个元素对应一个分区;
获取任一个三维场景模型x-z坐标(x1,z1);
根据公式
Figure G2009102623839D00031
计算该三维场景模型所属的分区在资源分区表中的序号,其中,floor[]表示对括号中的内容向上取整;
将所述三维场景模型的特征信息保存在所述二维矩阵的第i行、第j列的元素中。
所述建立用于保存每个分区包含的三维场景模型特征信息的资源分区表包括如下步骤:
初始化一个二维矩阵,所述二维矩阵的每一个元素对应一个分区;
获取三维场景模型在x-z平面上的投影,确定该投影面积实际占用的至少一个分区;
在所确定分区对应的二维矩阵元素中,分别记录该三维场景模型的特征信息。
较佳地,所述步骤B为:
B1、间隔预定的时间t,确定摄像机的当前位置坐标所属的三维场景的分区;
B2、判断摄像机是否从第一分区切换到与第一分区相邻的第二分区,若是,执行步骤C,否则返回步骤B1;
所述步骤C为:
查询所述资源分区表,得到所述第二分区的相邻分区包含的三维场景模型的特征信息;
所述步骤D为:
D1、确定所述第二分区的相邻分区包含的三维场景模型中、尚未被加载的三维场景模型,并加载所述尚未被加载的三维场景模型的数据;
D2、在已被加载的三维场景模型中,确定不属于第二分区以及第二分区的相邻分区的三维场景模型,并卸载所述三维场景模型的数据;
D3、根据已加载的三维场景模型的数据渲染三维场景。
所述步骤B2判断结果为是,则执行如下步骤B3,步骤B3执行完毕后执行步骤C:
B3、根据摄像机当前的速度,在第二分区的相邻分区中,确定摄像机在第二分区之后可能运动到的第三分区;
若根据步骤B3确定了所述第三分区,则:
所述步骤C进一步包括:查询所述资源分区表,得到所述第三分区的相邻分区包含的三维场景模型的特征信息;以及
所述步骤D1进一步包括:
确定所述第三分区的相邻分区包含的三维场景模型中、尚未被加载的三维场景模型,并加载所述尚未被加载的三维场景模型的数据。
较佳地,所述步骤B3为:
判断摄像机是否进入第二分区的预测区域,若是,则根据摄像机当前的位置和速度,在第二分区的相邻分区中,确定摄像机在第二分区之后可能运动到的第三分区,并继续执行步骤C,否则,摄像机位于第二分区的非预测区域,直接执行步骤C。
设第二分区为第i行第j列个分区,所述判断摄像机是否进入第二分区的预测区域为:判断摄像机的当前位置坐标(x1,z1)是否满足:
Figure G2009102623839D00041
,或
Figure G2009102623839D00042
,若是,则摄像机进入第二分区的预测区域,否则,摄像机位于第二分区的非预测区域,其中,l1、w1为预先设置的可调变量,满足条件:
所述确定摄像机在第二分区之后可能运动到的第三分区包括:
找到与摄像机速度方向最相近的四条划分资源分区的边界线,其中包括两条平行于x轴的直线line_x1、line_x2和平行于z轴的两条直线line_z1、line_z2;
根据摄像机的位置(x1,z1)和速度
Figure G2009102623839D00051
得到摄像机运动方向的直线f(x,z);
求出直线f(x,z)与line_x1、line_x2、line_z1、line_z2之间的全部交点;
找到全部交点中与摄像机位置(x1,z1)最近的两个点,计算这两个点的中点坐标;所述中点坐标所在的分区为摄像机在第二分区之后可能运动到的第三分区。
本发明实施例还提出一种实现三维导航的装置,包括用于利用全球定位系统确定摄像机的当前位置坐标的位置坐标模块,该装置还包括:
三维电子地图模块,用于存储预先定义的三维电子地图中的三维场景模型,并建立三维电子地图的三维场景坐标系;
分区模块,用于对所述三维电子地图模块中的三维场景进行分区并保存分区结果;还用于根据所述位置坐标模块得到的当前位置坐标查询所述分区结果,确定摄像机的当前位置坐标所属的三维场景的分区;
特征信息模块,用于建立并维护用于保存每个三维场景的分区包含的三维场景模型特征信息的资源分区表;还用于根据所述分区模块所确定的三维场景的分区查询所述资源分区表,得到所述三维场景的分区包含的三维场景的特征信息;
渲染模块,用于根据所述特征信息模块得到的三维场景的分区包含的三维场景的特征信息加载所述三维电子地图模块中预先定义的三维场景模型,并渲染三维场景。
较佳地,所述三维电子地图模块包括:
用于确定三维场景模型的外接长方体,将所述外接长方体的对称中心坐标作为所述三维场景模型的位置坐标,所述外接长方体的长宽表示该三维场景模型的大小的功能单元。
所述三维场景模型特征信息包括:三维场景模型的坐标位置、标识以及变换信息。
较佳地,所述分区模块包括:
用于将三维场景在x-z平面上进行投影,确定投影轮廓的x值最小点min_x和最大点max_x,以及z值最小点min_z和最大点max_z,以这四个点确定投影轮廓的包围矩形的功能单元;
用于设置分区的长度l=vt以及宽度w=vt的功能单元,其中,v表示摄像机移动速度的最大值,t表示设定的时间;以及
用于以所述分区长度l和宽度w分割所述投影轮廓的包围矩形,得到各个分区的功能单元。
所述设定的时间t为2秒至4秒。
较佳地,所述特征信息模块包括:
用于初始化一个二维矩阵,所述二维矩阵的每一个元素对应一个分区的功能单元;
用于获取任一个三维场景模型x-z坐标(x1,z1)的功能单元;
用于根据公式
Figure G2009102623839D00061
计算该三维场景模型所属的分区在资源分区表中的序号的功能单元,其中,floor[]表示对括号中的内容向上取整;以及
用于将所述三维场景模型的特征信息保存在所述二维矩阵的第i行、第j列的元素中的功能单元。
所述特征信息模块包括:
用于初始化一个二维矩阵,所述二维矩阵的每一个元素对应一个分区的功能单元;
用于获取三维场景模型在x-z平面上的投影,确定该投影面积实际占用的至少一个分区的功能单元;以及
用于在所确定分区对应的二维矩阵元素中,分别记录该三维场景模型的特征信息的功能单元。
较佳地,所述分区模块进一步包括:
时长为t的定时器;
分区单元,用于在所述定时器达到预定时长时,根据所述位置坐标模块得到的当前位置坐标查询分区结果,确定摄像机的当前位置坐标所属的三维场景的分区,并将所述定时器归零的功能单元;
判断单元,用于根据所述分区单元在相邻两次确定的三维场景分区是否相同,判断摄像机是否从第一分区切换到与第一分区相邻的第二分区,若是,则将所述第二分区的信息传送至特征信息模块;
所述特征信息模块根据所述第二分区的信息查询所述资源分区表,得到所述第二分区的相邻分区包含的三维场景模型的特征信息;
所述渲染模块包括:
加载单元,用于确定所述第二分区的相邻分区包含的三维场景模型中、尚未被加载的三维场景模型,并加载所述尚未被加载的三维场景模型的数据的功能单元;
卸载单元,用于在已被加载的三维场景模型中,确定不属于第二分区以及第二分区的相邻分区的三维场景模型,并卸载所述三维场景模型的数据的功能单元;以及
渲染单元,用于根据已加载的三维场景模型的数据渲染三维场景的功能单元。
较佳地,所述分区模块进一步包括:
预测单元,用于在所述判断单元判断出摄像机从第一分区切换到与第一分区相邻的第二分区时,根据摄像机当前的速度,在第二分区的相邻分区中,确定摄像机在第二分区之后可能运动到的第三分区,并将所述第二分区的信息传送至特征信息模块;
所述特征信息模块根据所述第三分区的信息查询所述资源分区表,得到所述第三分区的相邻分区包含的三维场景模型的特征信息;
所述渲染模块的加载单元进一步用于确定所述第三分区的相邻分区包含的三维场景模型中、尚未被加载的三维场景模型,并加载所述尚未被加载的三维场景模型的数据。
所述预测单元用于在所述判断单元判断出摄像机从第一分区切换到与第一分区相邻的第二分区后,判断摄像机是否进入第二分区的预测区域,若是,则根据摄像机当前的位置和速度,在第二分区的相邻分区中,确定摄像机在第二分区之后可能运动到的第三分区,并将所述第二分区的信息传送至特征信息模块。
较佳地,设第二分区为第i行第j列个分区,所述判断摄像机是否进入第二分区的预测区域为:判断摄像机的当前位置坐标(x1,z1)是否满足:
Figure G2009102623839D00081
,或
Figure G2009102623839D00082
,若是,则摄像机进入第二分区的预测区域,否则,摄像机位于第二分区的非预测区域,其中,l1、w1为预先设置的可调变量,满足条件:
Figure G2009102623839D00083
较佳地,所述确定摄像机在第二分区之后可能运动到的第三分区包括:
找到与摄像机速度
Figure G2009102623839D00084
方向最相近的四条划分资源分区的边界线,其中包括两条平行于x轴的直线line_x1、line_x2和平行于z轴的两条直线line_z1、line_z2;
根据摄像机的位置(x1,z1)和速度
Figure G2009102623839D00085
得到摄像机运动方向的直线f(x,z);
求出直线f(x,z)与line_x1、line_x2、line_z1、line_z2之间的全部交点;
找到全部交点中与摄像机位置(x1,z1)最近的两个点,计算这两个点的中点坐标;所述中点坐标所在的分区为摄像机在第二分区之后可能运动到的第三分区。
从以上技术方案可以看出,对电子地图的三维场景进行分区,建立用于保存每个三维场景的分区包含的三维场景模型特征信息的资源分区表,这样只需加载资源分区表而不需要加载全部的三维场景模型;根据摄像机当前位置坐标确定对应的分区,并根据所述资源分区表找到这些分区包含的三维场景的特征数据,根据这些特征数据来加载对应的三维场景模型数据。本发明方案可以用较小的内存空间实现三维场景的导航,并且场景切换速度较高。
附图说明
图1为本发明实施例提出的三维导航的实现流程图;
图2为本发明实施例定义的三维场景的长宽高与OpenGL坐标轴的关系示意图;
图3为本发明实施例定义的三维场景在OpenGL坐标系中的简化模型示意图;
图4为本发明实施例的摄像机可视范围内实际上需要的三维场景数据和整个三维场景数据的关系示意图;
图5为三维场景的摄像机与近截面、远截面和视野的关系示意图;
图6为三维场景在x-z平面上的投影示意图,其中,阴影部分为三维场景在x-z平面上有投影,非阴影部分表示三维场景在x-z平面上没有投影;
图7为对投影到x-z平面上的三维场景资源分区,每个区域的大小为l×w;
图8摄像机在y轴上高度为h对x-z平面可视范围为r的几何图形;
图9为最小三维场景资源的情况下需要加载的资源示意图;
图10为当一个三维场景模型在x-z平面上的投影占用多个分区的情况示意图;
图11为摄像机在x-z平面上投影的当前位置和加载资源分区的情况示意图;
图12为本发明实施例中摄像机进入相邻资源分区,重新加载资源的情况示意图;
图13为本发明实施例将资源分区分为预测区域和非预测区域的示意图;
图14为本发明实施例中,根据摄像机当前位置和速度方向预测将要到达的分区的几何图形示意图;
图15为根据本发明实施例方案出现资源分区预测错误的情况示意图。
图16为本发明实施例提出的三维导航装置的逻辑框图。
具体实施方式
本发明技术方案利用了与三维导航相关二维平面技术,根据二维平面区域切分和预知技术切分三维导航中的三维场景,预先定义三维电子地图中的三维场景模型,并建立电子地图的三维场景坐标系;以及对电子地图的三维场景进行分区,建立用于保存每个三维场景的分区包含的三维场景模型特征信息的资源分区表;实现三维导航的过程如图1所示,包括如下步骤:
步骤101:利用全球定位系统确定当前摄像机的位置坐标;
步骤102:确定摄像机的当前位置坐标所属的三维场景的分区;
步骤103:根据所确定的三维场景的分区查询所述资源分区表,得到所述三维场景的分区包含的三维场景的特征信息;以及
步骤104:根据所得到的三维场景模型的特征信息加载三维场景模型数据,并渲染三维场景。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明技术方案的各个要点作进一步的详细阐述。
要点一:定义导航所使用的三维电子地图中的三维场景模型。
本发明实施例方案的三维导航三维场景需要按照一定格式组织。以下给出一种按照xml语言描述的三维场景模型的位置信息:
    <scene>
        <entities>
             <entity      name=″building″hidden=″false″filename=″building.mesh″
CastShadows=″yes″ReceiveShadows=″yes″>
                    <position x=″0″y=″0″z=″0″/>
                    <rotation x=″0″y=″0″z=″0″w=″0″/>
                    <scale x=″0.1″y=″0.1″z=″0.1″/>
             </entity>
    ......
         </entities>
    </scene>
上述内容给出了一个三维场景模型的特征信息,包括位置、大小、旋转方向,以及显示相关信息,例如是否显示阴影等。
具体地说,“scene”表示该元素下的内容是三维场景内容,即定义该元素的属性是三维场景内容;“entities”表示该元素下的内容是三维场景模型内容。“entity”表示一个具体的模型内容,“name”为模型的名称,“hidden”表示该模型是否隐藏,“filename”表示该模型在物理磁盘上对应的文件名称,“CastShadows”表示在三维显示的时候是否显示出阴影,“ReceiveShadows”表示其他模型的阴影是否在该模型表面表示出来。“position”表示三维场景模型在三维场景中的三维坐标位置,“rotation”表示三维场景模型的旋转方向,“scale”表示三维场景模型在三维方向的缩放比例。
有了上述信息,就可以用OpenGL或者D3D的方式在三维场景渲染时将已经存储的每个三维场景模型定位到电子地图的坐标系中,最终渲染出三维场景的立体空间效果。
要点二:建立电子地图的三维场景坐标系。
建立三维场景坐标系最重要的一点是确定每个三维场景模型的位置坐标以及三维场景模型的大小。
整个三维场景模型的外观是不规则的,但是可以用三维场景模型的外接长方体来代表该三维场景模型,该外接长方体是能包含整个三维场景模型的最小长方体,具有确定的长度、宽度以及高度。可以形象地将该外接长方体称为三维场景包围盒。这里,三维场景在立体空间中,其长宽高此处用下面三种符号表示:
L:三维场景模型的长度;
W:三维场景模型的宽度;
H:三维场景模型的高度。
本实施例中,电子地图选取的立体空间三维坐标系为OpenGL坐标系。OpenGL使用右手坐标,从左到右,x递增,从下到上,y递增,从远到近,z递增。在OpenGL坐标系中,每一个三维场景模型可以用其外接长方体即三维场景包围盒表示,三维场景包围盒的大小就是L×W×H,其在OpenGL坐标系中的示意图如图2所示。
在三维导航系统中,一般情况都是在固定高度向下鸟瞰的,并且三维场景在高度上变化不大,所以可以不予考虑三维场景中模型的高度信息,所以三维场景模型在OpenGL坐标系中可以简化成如图3所示,x-z平面即水平面,所示长L宽W的矩形为三维场景模型的外接长方体在水平面内的投影。
这样,一个三维场景模型的位置坐标就可以用其三维场景包围盒的对称中心的坐标来表示,而三维场景包围盒的长宽高就表示了该三维场景模型的大小。简化情况下,三维场景模型的大小用长和宽表示。
要点三:对三维场景进行分区。
如果三维场景显示所需要的数据是一次性全部加载到内存中的,这样虽然提高了数据的处理速度,但是很多情况下,如图4所示,三维场景当前显示区域(以下将当前显示区域称为视野)只是三维场景中的某一小块局部区域(在图4中为小矩形表示的区域),而其他部分(在图4中为大矩形以内、小矩形以外的区域)都不在视野内,不在视野部分的数据就会造成存储空间的浪费。三维场景与视野的比值越大,浪费的内存空间越多,所以一般以这种方式载入所有资源的三维场景数据都不能无限大,都有一个最大值。如果三维场景数据超过最大值,就需要对三维场景进行分割,当从一个三维场景进入到另一个三维场景的时候,就会存在三维场景切换问题。三维场景切换的时候,需要等待程序将使用前的三维场景模型数据卸载掉,重新加载另一个需要使用的三维场景模型数据,一般这个过程耗时较多,存在较长的用户等待时间。
本发明的关键点之一就是基于大规模三维场景显示需要,特别是三维导航大的三维场景需要,对三维场景进行分割,使程序支持的三维场景范围不受内存等硬件条件的限制,而又不过度浪费内存,兼顾三维场景资源加载速度的一种方法。
首先解释一下三维场景中的摄像机,三维场景中的摄像机的概念和现实世界中的摄像机的概念一样,会放在一个合适的位置和方向,为三维场景进行“拍摄”每一帧的工作。摄像机有一个“可视区域”的概念,它的形状是一个顶点在摄像机位置上的棱锥,并夹在远截面和近截面之间的部分。图5所示为三维场景中的摄像机的可视区域的示意图。由图5可知,假如摄像机视角是固定的,如果摄像机的位置和当前可视方向确定,则摄像机的可视区域是唯一确定的。
当在导航的时候,摄像机在一定高度上且平行于x-z平面的平面内移动,当摄像机的位置和/或可视方向改变的时候,则可视区域发生改变,位于可视区域内的三维场景(即需要渲染的三维场景)随之改变,渲染当前摄像机可视区域内的三维场景对应需要用到的三维模型也需要改变。如果每次只加载一定范围内的三维场景模型,如果摄像机可视范围内的模型未能加载到内存中,该模型则不能渲染出来。因此需要对可视范围内的模型进行动态的维护,定时将超出摄像机范围的数据卸载,同时将摄像机范围内的数据加载进来。这样既可以保证内存中模型的数据量小,又可以保证不影响渲染三维场景的效率和效果。
因此,使用分区的方法动态加载摄像机所在资源分区的资源,卸载摄像机离开的资源分区的资源。
以下给出一种三维资源分区的详细实施方式的示例:
首先需要按照摄像机的位置对三维场景进行x-z平面上的分区。忽略y轴上的信息,将整个三维场景在x-z平面上进行投影,如图6所示,投影结果为阴影部分的区域,然后根据投影轮廓得到x值最小的点min_x和最大的点max_x,z值最小的点min_z和最大的点max_z,最后就可以得到投影三维场景的包围矩形的位置和大小了。矩形两对角在x-z平面上的坐标为:(min_x,min_z)和(max_x,max_z),长L=max_x-min_x,宽W=max_z-min_z;
然后对此投影得到的包围矩形分区,如图7,分区大小长为l、宽为w。现在需要计算出三维场景在x-z平面上的分区大小l和w的合适值。
要点四:计算三维场景在x-z平面上的分区大小,并得到资源分区数量。
设在h高度定点上摄像机可视方向垂直向下的最大视野为半径为r的圆,如图8所示。对此圆做一边平行于x轴,一边平行于z轴,宽为2r的外切正方形。在h高度垂直向下看到半径为r的圆视野内的模型时,所需显示的三维场景资源是所有情况中最小的。如图9所示,在所述最小三维场景资源的情况下,实际上需要加载的资源仅包括:与半径为r高度为h的圆柱体相交的三维场景模型(如图9中表示与圆柱体相交的长方体代表的三维场景模型)以及完全在圆柱体内部的三维场景模型(图9中完全在圆柱体内部的长方体代表的三维场景模型)的集合。
所以加载了如图8所示的视野外切矩形内部或相交的三维场景模型,就可以满足显示出当前三维场景。但此时的视野外切矩形为最小的三维场景资源分割区间,并不是最佳实施方式。
现在可以得到三维场景模型在x-z平面上分区大小应该满足的关系式:
r≤l≤L
r≤w≤W
那么到底l和w为多少的时候才合适呢?
已知摄像机在平行于x-z平面的平面内的运行最大速度大小为v,在此处设定运行t时间就需要切换资源分区。那么l和w就可以设定为l=w+λ1=vt+λ2,常规情况下将λ1和λ2设置0,此时分区大小就为:
Figure G2009102623839D00141
v在摄像机移动速度的最大值,为常数,t为变数,可以根据实际情况设定t值大小,当t越小,摄像机在三维场景中移动的时候,需要切换三维场景的频率越高,消耗的内存越少;当t越大,摄像机在三维场景中移动的时候,需要切换三维场景的频率越低,消耗的内存就越大。所以参数t应该根据计算机配置情况设定,一般情况,设定为2至4秒足够(根据内存和处理器等硬件情况可以调节该时间长短)。因为在导航过程中,摄像机以最快速度移动的机会较小,并且以最快速度,每3秒左右切换一次三维场景模型在导航过程中也算适中,此处v速度值为在导航过程中移动速度的最大值。
当设定好每个分区的大小为9v2时,整个大小L×W三维场景的资源分区数量即为:
m=floor(L/(3v))
n=floor(W/(3V))
资源分区的总数量即为m×n。
要点五:资源分区表初始化。
根据资源分区总数量为m×n,使用m×n的二维矩阵AREA记录每个分区应包含的三维场景模型特征信息,这个二维矩阵AREA就是一个资源分区表。
三维场景模型特征信息是指依照该特征信息从存储区加载三维场景模型数据到内存中,然后能够依照加载之后的数据对三维场景进行渲染,具体来说该特征信息包括:三维场景模型的坐标位置、三维场景模型的标识(包括三维场景模型在磁盘中的名称以及三维场景模型在程序中的名称),还包括三维场景模型的变换信息(如:朝向,在空间缩放程度)。
这些信息也即在定义三维场景模型时以xml格式保存的信息。每个模型的上述信息都记录在资源分区表中。资源分区表记录每个模型信息方式如下:
初始时,资源分区表的每一个元素都为空值NULL。从整个三维场景的第一个三维场景模型开始处理,当三维场景模型a1被判定(判定方法下面具体说明)为属于资源分区b1中时,该资源分区b1对应的资源分区表元素保存三维场景模型a1的特征信息,直到所有三维场景模型被处理完毕。
此时,资源分区表就记录了电子地图中全部三维场景模型的特征信息,该特征信息与三维场景模型的数据(指渲染并在显示界面上显示出一个三维模型需要用到的数据,如在磁盘上表现的3ds文件,max文件)比起来,占用的内存空间要小了许多。将所有三维场景模型的特征信息加载到内存中,相对于将所有三维场景模型的数据加载到内存中,所需的内存空间极大降低。
要点六:判定三维场景模型所属分区。
资源分区表为m×n的二维矩阵。确定了三维场景模型在二维矩阵AREA中的位置AREA(i,j),也就确定了三维场景模型所在分区了,i、j从AREA(0,0)开始,AREA(0,0)表示二维矩阵的第一个分区。
以下给出判定三维场景模型所属分区的两种实施方式,其中方式二复杂于方式一,更符合实际渲染对三维场景资源的需要。但本发明并未将判断三维场景模型所属分区的方式限定与此。
方式一:获取三维场景模型x-z坐标(x1,z1),那么该三维场景模型所属分区为
i=floor[(x1-min_x)/l]-1
j=floor[(z1-min_z)/w]-1
如果三维场景在x-z平面的坐标为(0,0)则放入资源分区表的第一个位置AREA(0,0)。
这种方法的优点是计算比较简单,并且较容易实现,消耗计算机资源较少。缺点就是很多情况下,如果三维场景模型大于所划分的单个资源分区,需要占用了多于一个资源分区时,此方法得出的结果只有三维场景模型坐标所在的资源分区,如果摄像机在其他本应该能渲染出该三维场景模型的分区中,用这种方法就渲染不出三维场景模型了。如图5.6-1所示,模型在x-z平面上的投影坐标在分区5中,则摄像机只有在分区5中,该模型才能被渲染出来。符合事实情况的是摄像机在与分区5相邻的其他7个分区都应该渲染出该三维场景模型。
方法二:得到三维场景模型在x-z平面上的投影,看投影面积实际占用哪几个分区,然后这几个分区分别记录下该三维场景模型的特征信息。
如图10所示:三维场景模型在x-z平面上的投影占用了9个资源分区,则这9个资源分区都应该记录下该三维场景模型的特征信息。
判断三维场景模型在x-z平面上的投影占用哪些分区方法有很多,下面介绍一种简单的实施方式:由于三维场景模型实际上是由三角网格组成,记录组成三维场景模型的每个三角网格在x-z平面上投影所属的分区,所记录的资源分区的集合就是该三维场景模型在x-z平面上投影所属的资源分区。
方法二主要是用于解决方法一无法解决的问题,能很方便的处理三维场景模型在x-z平面上超出一个资源分区容纳的范围。较佳地,可以对三维场景模型是否仅属于一个资源分区进行判断,若是,则选用方法一;否则选用方法二,可以尽可能地减小运算量。
经过这一过程,就能将三维场景中所有的三维场景资源模型的特征信息添加到资源分区表中。
要点七:利用资源分区表中的三维场景模型,根据摄像机当前位置加载相应资源。
资源分区表初始化好后,就需要根据摄像机当前位置加载相应资源。如果每次只加载摄像机当前位置的资源,当摄像机从一个资源分区进入到另一个资源分区的时候,需要加载进入后的三维场景模型资源,卸载加入前的三维场景模型资源,由于实际构成三维场景三维模型的资源在磁盘中,从磁盘中读出三维场景模型信息速度较慢,这样就会造成在三维场景中移动摄像机有时候会暂时卡住不动,浏览三维场景就会非常不流畅,所以作为一种较佳的实施方式,每次加载多于一个分区的三维场景模型资源。
可以将加载资源分区个数具体为(2n+1)2,其中n为自然数,才能避免由于资源分区切换造成三维场景不流畅的问题,当n越大,需要消耗的内存越多。例如,当取n=1时,需要加载九个资源分区的模型资源。设定相机的当前所在分区为AREA(i,j),则初始需要加载资源的分区为:
AREA(i-1,j-1)   AREA(i,j-1)  AREA(i+1,j-1)
AREA(i-1,j)     AREA(i,j)    AREA(i+1,j)
AREA(i-1,j+1)   AREA(i,j+1)  AREA(i+1,j+1)
如图11所示。
当摄像机从一个分区切换到相邻的分区时,先将切换后的摄像机所处分区的相邻资源中、还没有完全加载到内存中的资源加载进来,然后卸载非相邻的分区资源,这个加载以及卸载的过程用一个单独的线程维护。这样的话,当三维场景切换的时候,渲染当前三维场景模型不会因为资源加载而停止,既能保证渲染的速度,又能保证每时每刻加载了足够的资源分区。
由于资源从磁盘中加载还是属于一个慢速的过程,可能会出现来不及加载新的资源分区的情况;但如果预先加载资源分区个数设置得过大,又会占用内存过多,造成不必要的浪费。为解决这个问题,本发明实施例提出了一种预测加载的方法,根据当前加载的资源分区来预测将来一段时间可能使用的资源分区,这样就更能提前加载一个资源分区的资源来缓解缓慢的磁盘读入数据的过程。
预测原理:根据当前摄像机位置和在平行于x-z平面上的速度(具有方向)预测将来最有可能使用的资源分区,然后将该资源分区及其周边的资源分区加载到内存中。
并不是任何时候都需要对将来需要使用的资源分区进行预测,而是当摄像机要离开当前资源分区的某个时候,触发预测过程。
如图12所示,摄像机当前坐标为(x1,z1),在AREA(i,j)分区,摄像机速度为
Figure G2009102623839D00181
为x轴方向速度,
Figure G2009102623839D00182
为z轴方向速度。根据速度
Figure G2009102623839D00183
指向的方向,在AREA(i,j)分区的相邻分区中,确定该速度方向指向的分区AREA(i,j-1),作为摄像机最有可能进入的资源分区。那么应该在合适的时候将与AREA(i,j-1)相邻但还未加载的资源分区加载到内存中,这几个分区分别是AREA(i-1,j-2),AREA(i,j-2),AREA(i+1,j-2)。实际摄像机到达AREA(i,j-2)资源分区的时候,首先检测AREA(i,j-1)相邻的资源是否已经加载,如果未加载则加载该资源。然后将与AREA(i,j-1)不相邻但已经加载到内存中的数据卸载掉。
较佳地,可以采用如下方式来提高资源分区预测准确率:
摄像机在某分区运动的时候,不能在任何时候任何地方都开始预测将要到达的资源分区。当摄像机刚刚进入某分区时,一般来说,速度方向还未定,将要达到的资源分区依据速度方向还未确定,如果这个时侯就开始预测将要达到的分区,将会造成很多资源分区的资源实际用不到,但也加载到内存中,然后摄像机到达某个分区的时候,又要将那些实际加载了但没有用到的分区资源卸载掉,这个过程及其浪费计算机资源。预测将要到达的资源分区是为了更快的加载资源,如果预测准确率低于50%,则这种预测是失败的,不能使用。那么如何提高资源分区预测的准确率呢?
如图13,将每个资源分区分成预测区域和非预测区域,阴影部分表示预测区域,非阴影部分表示非预测区域。图13中仅示出了摄像机速度方向为-x和-z方向的一种情况。对于摄像机速度方向为其他方向的情况下的实施方式可参照该实施方式得出。
图13所示情况下,摄像机向x轴负方向和z轴负方向运动,当摄像机进入到预测区域时触发预测过程。预测区域的数学表达式为:
min_x+i×l≤x1≤min_x+i×l+l1
                               (即图中预测区域一表达式)
min_z+j×w≤z1≤min_z+(j+1)×w
min_x+i×l+l1≤x1≤min_x+(i+1)×l
                                 (即图中预测区域二表达式)
min_z+j×w≤z1≤min_z+j×w+w1
其中l1、w1为可调变量,满足条件为:
Figure G2009102623839D00191
因为前面分区l=w,所以此处设定l1=w1
当l1、w1都为0时,此时加载三维场景的准确率为100%,但是预测区域仅仅是一条边的区域,效果和性能与不使用资源分区预测一样。
当l1、w1都为l/2或w/2时,此时预测区域是当前摄像机区域。也就是摄像机在任何分区任何坐标都会进行预测,这个时侯的预测准确率最低,不可取。
选定l1=w1=l/4=w/4为资源分区预测变量,这种情况处于既可以预测将要使用的资源分区又不会使得预测的准确率过低,根据实际情况,可以适当调整l1、w1、1、w之间的关系。
那么三维场景预测范围数学公式简化为:
min_x+i×l≤x1≤min_x+(i+1/4)×l
min_z+j×l≤z1≤min_z+(j+1)×l
min_x+(i+1/4)×l≤x1≤min_x+(i+1)×l
min_z+j×l≤z1≤min_z+(j+1/4)×l
预测资源分区的时机选定好后就需要开始得到被预测的资源分区,然后加载被预测资源分区相邻的资源分区的资源。
当摄像机的位置满足以下条件时,就开始判断摄像机下一时刻将要到达的资源分区:
min_x+i×l≤x1≤min_x+(i+1/4)×l
min_z+j×l≤z1≤min_z+(j+1)×l
min_x+(i+1/4)×l≤x1≤min_x+(i+1)×l
min_z+j×l≤z1≤min_z+(j+1/4)×l
如图14所示,当摄像机位置为(x1,z1),所在分区为(i,j),速度
Figure G2009102623839D00201
都为负值,则找到与摄像机速度
Figure G2009102623839D00202
方向最相近的四条划分资源分区的边界线,平行于x轴的两条直线line_x1、line_x2和平行于z轴的两条直线line_z1、line_z2。
这四条线的方程为:
line_x1方程:f(x,z)=z-min_z-j×w=0
line_x2方程:f(x,z)=z-min_z-(j-1)×w=0
line_z1方程:f(x,z)=x-min_x-i×l=0
line_z2方程:f(x,z)=x-min_x-(i-1)×l=0
根据摄像机的位置(x1,z1)和速度
Figure G2009102623839D00203
得到摄像机运动方向的点斜直线方程
根据上面四条直线的方程很容易的求出与摄像机方向的直线方程的交点A(x2,z2)、B(x3,z3)、C(x4,z4)、D(x5,z5)。用两点之间距离公式取A、B、C、D中离摄像机位置(x1,z1)最近的两个点,如果摄像机方向的方程与x轴或z轴平行,只有两个交点,则取这两个点。然后用平均值法计算出选取的两个点的中点E。最后很容易判断出点E所在资源分区,则这个分区就是预测到的资源分区。
由于预测分区有可能出现错误,可以通过如下实施方式来处理资源分区预测错误的情况。
预测终究是预测,不是实际情况,按上述方法并不能100%做到正确预测。当资源分区预测错误的时候,需要按照一定策略使预测错误的损失达到最小。
如图15所示,摄像机首先在(x1,z1)位置,然后在(x2,z2)位置,最后实际到达的位置为(x3,z3),在位置(x1,z1)的时候,预测到的资源分区为一,在位置(x2,z2)的时候,预测到的资源分区为分区三,实际上应该加载的资源为与分区二相邻但没有加载到内存中的数据。
遇到这种预测错误的情况,解决方法就是,当预测到要进入某个分区的时候,就立即将与该分区相邻但没有加载到内存中的数据加载到内存,在摄像机实际到达某分区的时候,卸载掉当前分区非相邻的已经加载到内存中的资源。这就是先加载后释放分区资源的过程。即当摄像机的位置在(x1,z1)的时候,预测到要进入分区一,由于当前分区的的相邻分区一、分区二、分区三、分区十、分区十二、分区十三已经加载到内存中,与分区一相邻但没有加载到内存中的分区四、分区五、分区十一这三个资源分区的资源加载到内存。
当摄像机的位置在(x2,z2)的时候,预测要进入分区三了,则将与分区三相邻但没有加载到内存中的分区七、分区八、分区九这三个分区资源加载到内存中。
当摄像机实际运行到分区二的时候,则先将与自己相邻但没有加载到内存中的分区六加载到内存,这个时候由于只有一个分区资源需要加载到内存,所以速度较快,就不会存在当前需要用到的资源无法及时加载到内存中去而导致无法渲染的现象。
当摄像机实际运行到达的分区相邻分区的资源已经全部加载到内存中时,在进行在这个区域做第一次预测前,先卸载掉实际运行到达的分区非相邻分区的资源。这样,就相当于清理了一次内存,使内存的消耗永远维持在一定程度。
预测最差的情况是与当前摄像机位置8个相邻分区都被预测到要进入,那么内存将消耗5×5=25个分区的资源;
预测最好的情况是进入当前摄像机位置的上下左右某一个分区将要进入,那么内存将消耗9+3=12个分区的资源;
所以在使用预测机制的时候,内存的消耗在12个分区的资源与25个分区的资源之间。为了提高资源加载的速度,使用一定额外的内存是值得的。
图16所示为本发明实施例提出一种实现三维导航的装置,包括用于利用全球定位系统确定摄像机的当前位置坐标的位置坐标模块1601,该装置还包括:
三维电子地图模块1602,用于存储预先定义的三维电子地图中的三维场景模型,并建立三维电子地图的三维场景坐标系;
分区模块1603,用于对所述三维电子地图模块1602中的三维场景进行分区并保存分区结果;还用于根据所述位置坐标模块1601得到的当前位置坐标查询所述分区结果,确定摄像机的当前位置坐标所属的三维场景的分区;
特征信息模块1604,用于建立并维护用于保存每个三维场景的分区包含的三维场景模型特征信息的资源分区表;还用于根据所述分区模块1603所确定的三维场景的分区查询所述资源分区表,得到所述三维场景的分区包含的三维场景的特征信息;
渲染模块1605,用于根据所述特征信息模块1604得到的三维场景的分区包含的三维场景的特征信息加载所述三维电子地图模块1602中预先定义的三维场景模型,并渲染三维场景。
以下为在此实施例的基础上的各种改进实施方式:
所述三维电子地图模块1602还可以包括:
用于确定三维场景模型的外接长方体,将所述外接长方体的对称中心坐标作为所述三维场景模型的位置坐标,所述外接长方体的长宽表示该三维场景模型的大小的功能单元。
所述三维场景模型特征信息包括:三维场景模型的坐标位置、标识以及变换信息。
较佳地,所述分区模块1603包括:
用于将三维场景在x-z平面上进行投影,确定投影轮廓的x值最小点min_x和最大点max_x,以及z值最小点min_z和最大点max_z,以这四个点确定投影轮廓的包围矩形的功能单元;
用于设置分区的长度l=vt以及宽度w=vt的功能单元,其中,v表示摄像机移动速度的最大值,t表示设定的时间;以及
用于以所述分区长度l和宽度w分割所述投影轮廓的包围矩形,得到各个分区的功能单元。
所述设定的时间t为2秒至4秒,例如可以设置为3秒。
较佳地,所述特征信息模块1604包括:
用于初始化一个二维矩阵,所述二维矩阵的每一个元素对应一个分区的功能单元;
用于获取任一个三维场景模型x-z坐标(x1,z1)的功能单元;
用于根据公式
Figure G2009102623839D00231
计算该三维场景模型所属的分区在资源分区表中的序号的功能单元,其中,floor[]表示对括号中的内容向上取整;以及
用于将所述三维场景模型的特征信息保存在所述二维矩阵的第i行、第j列的元素中的功能单元。
或者,所述特征信息模块1604包括:
用于初始化一个二维矩阵,所述二维矩阵的每一个元素对应一个分区的功能单元;
用于获取三维场景模型在x-z平面上的投影,确定该投影面积实际占用的至少一个分区的功能单元;以及
用于在所确定分区对应的二维矩阵元素中,分别记录该三维场景模型的特征信息的功能单元。
较佳地,所述分区模块1603进一步包括:
时长为t的定时器;
分区单元,用于在所述定时器达到预定时长时,根据所述位置坐标模块1601得到的当前位置坐标查询分区结果,确定摄像机的当前位置坐标所属的三维场景的分区,并将所述定时器归零的功能单元;
判断单元,用于根据所述分区单元在相邻两次确定的三维场景分区是否相同,判断摄像机是否从第一分区切换到与第一分区相邻的第二分区,若是,则将所述第二分区的信息传送至特征信息模块1604;
所述特征信息模块1604根据所述第二分区的信息查询所述资源分区表,得到所述第二分区的相邻分区包含的三维场景模型的特征信息;
所述渲染模块1605包括:
加载单元,用于确定所述第二分区的相邻分区包含的三维场景模型中、尚未被加载的三维场景模型,并加载所述尚未被加载的三维场景模型的数据的功能单元;
卸载单元,用于在已被加载的三维场景模型中,确定不属于第二分区以及第二分区的相邻分区的三维场景模型,并卸载所述三维场景模型的数据的功能单元;以及
渲染单元,用于根据已加载的三维场景模型的数据渲染三维场景的功能单元。
所述分区模块1603还可以进一步包括:
预测单元,用于在所述判断单元判断出摄像机从第一分区切换到与第一分区相邻的第二分区时,根据摄像机当前的速度,在第二分区的相邻分区中,确定摄像机在第二分区之后可能运动到的第三分区,并将所述第二分区的信息传送至特征信息模块1604;
所述特征信息模块1604根据所述第三分区的信息查询所述资源分区表,得到所述第三分区的相邻分区包含的三维场景模型的特征信息;
所述渲染模块1605的加载单元进一步用于确定所述第三分区的相邻分区包含的三维场景模型中、尚未被加载的三维场景模型,并加载所述尚未被加载的三维场景模型的数据。
所述预测单元用于在所述判断单元判断出摄像机从第一分区切换到与第一分区相邻的第二分区后,判断摄像机是否进入第二分区的预测区域,若是,则根据摄像机当前的位置和速度,在第二分区的相邻分区中,确定摄像机在第二分区之后可能运动到的第三分区,并将所述第二分区的信息传送至特征信息模块1604。
设第二分区为第i行第j列个分区,所述判断摄像机是否进入第二分区的预测区域为:判断摄像机的当前位置坐标(x1,z1)是否满足:
Figure G2009102623839D00251
,或
Figure G2009102623839D00252
,若是,则摄像机进入第二分区的预测区域,否则,摄像机位于第二分区的非预测区域,其中,l1、w1为预先设置的可调变量,满足条件:
Figure G2009102623839D00253
所述确定摄像机在第二分区之后可能运动到的第三分区包括:
找到与摄像机速度
Figure G2009102623839D00254
方向最相近的四条划分资源分区的边界线,其中包括两条平行于x轴的直线line_x1、line_x2和平行于z轴的两条直线line_z1、line_z2;
根据摄像机的位置(x1,z1)和速度
Figure G2009102623839D00255
得到摄像机运动方向的直线f(x,z);
求出直线f(x,z)与line_x1、line_x2、line_z1、line_z2之间的全部交点;
找到全部交点中与摄像机位置(x1,z1)最近的两个点,计算这两个点的中点坐标;所述中点坐标所在的分区为摄像机在第二分区之后可能运动到的第三分区。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机、便携智能终端等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (24)

1.一种实现三维导航的方法,其特征在于,预先定义三维电子地图中的三维场景模型,并建立三维电子地图的三维场景坐标系;以及对三维电子地图的三维场景进行分区并保存分区结果,建立用于保存每个三维场景的分区包含的三维场景模型特征信息的资源分区表;实现三维导航的过程包括如下步骤:
A、利用全球定位系统确定摄像机的当前位置坐标;
B、根据所述当前位置坐标查询所述分区结果,确定摄像机的当前位置坐标所属的三维场景的分区;
C、根据所确定的三维场景的分区查询所述资源分区表,得到所述三维场景的分区包含的三维场景的特征信息;以及
D、根据所得到的三维场景模型的特征信息加载所述预先定义的三维场景模型,并渲染三维场景。
2.根据权利要求1所述的方法,其特征在于,所述建立电子地图的三维场景坐标系包括:
确定每个三维场景模型的位置坐标以及三维场景模型的大小,具体包括:
确定三维场景模型的外接长方体,将所述外接长方体的对称中心坐标作为所述三维场景模型的位置坐标,所述外接长方体的长宽表示该三维场景模型的大小。
3.根据权利要求1所述的方法,其特征在于,所述三维场景模型特征信息包括:三维场景模型的坐标位置、标识以及变换信息。
4.根据权利要求1所述的方法,其特征在于,所述对电子地图的三维场景进行分区包括:
将三维场景在x-z平面上进行投影,确定投影轮廓的x值最小点min_x和最大点max_x,以及z值最小点min_z和最大点max_z,以这四个点确定投影轮廓的包围矩形;
设置分区的长度l=vt,宽度w=vt;其中,v表示摄像机移动速度的最大值,t表示设定的时间;
以所述分区长度l和宽度w分割所述投影轮廓的包围矩形,得到各个分区。
5.根据权利要求4所述的方法,其特征在于,所述设定的时间t为2秒至4秒。
6.根据权利要求4所述的方法,其特征在于,所述建立用于保存每个分区包含的三维场景模型特征信息的资源分区表包括如下步骤:
初始化一个二维矩阵,所述二维矩阵的每一个元素对应一个分区;
获取任一个三维场景模型x-z坐标(x1,z1);
根据公式
Figure F2009102623839C00021
计算该三维场景模型所属的分区在资源分区表中的序号,其中,floor[]表示对括号中的内容向上取整;
将所述三维场景模型的特征信息保存在所述二维矩阵的第i行、第j列的元素中。
7.根据权利要求4所述的方法,其特征在于,所述建立用于保存每个分区包含的三维场景模型特征信息的资源分区表包括如下步骤:
初始化一个二维矩阵,所述二维矩阵的每一个元素对应一个分区;
获取三维场景模型在x-z平面上的投影,确定该投影面积实际占用的至少一个分区;
在所确定分区对应的二维矩阵元素中,分别记录该三维场景模型的特征信息。
8.根据权利要求4至7任一项所述的方法,其特征在于,所述步骤B为:
B1、间隔预定的时间t,确定摄像机的当前位置坐标所属的三维场景的分区;
B2、判断摄像机是否从第一分区切换到与第一分区相邻的第二分区,若是,执行步骤C,否则返回步骤B1;
所述步骤C为:
查询所述资源分区表,得到所述第二分区的相邻分区包含的三维场景模型的特征信息;
所述步骤D为:
D1、确定所述第二分区的相邻分区包含的三维场景模型中、尚未被加载的三维场景模型,并加载所述尚未被加载的三维场景模型的数据;
D2、在已被加载的三维场景模型中,确定不属于第二分区以及第二分区的相邻分区的三维场景模型,并卸载所述三维场景模型的数据;
D3、根据已加载的三维场景模型的数据渲染三维场景。
9.根据权利要求8所述的方法,其特征在于,所述步骤B2判断结果为是,则执行如下步骤B3,步骤B3执行完毕后执行步骤C:
B3、根据摄像机当前的速度,在第二分区的相邻分区中,确定摄像机在第二分区之后可能运动到的第三分区;
若根据步骤B3确定了所述第三分区,则:
所述步骤C进一步包括:查询所述资源分区表,得到所述第三分区的相邻分区包含的三维场景模型的特征信息;以及
所述步骤D1进一步包括:
确定所述第三分区的相邻分区包含的三维场景模型中、尚未被加载的三维场景模型,并加载所述尚未被加载的三维场景模型的数据。
10.根据权利要求9所述的方法,其特征在于,所述步骤B3为:
判断摄像机是否进入第二分区的预测区域,若是,则根据摄像机当前的位置和速度,在第二分区的相邻分区中,确定摄像机在第二分区之后可能运动到的第三分区,并继续执行步骤C,否则,摄像机位于第二分区的非预测区域,直接执行步骤C。
11.根据权利要求10所述的方法,其特征在于,设第二分区为第i行第j列个分区,所述判断摄像机是否进入第二分区的预测区域为:判断摄像机的当前位置坐标(x1,z1)是否满足:
min _ x + i &times; l &le; x 1 &le; min _ x + i &times; l + l 1 min _ z + j &times; w &le; z 1 &le; min _ z + ( j + 1 ) &times; w , min _ x + i &times; l + l 1 &le; x 1 &le; min _ x + ( i + 1 ) &times; l min _ z + j &times; w &le; z 1 &le; min _ z + j &times; w + w 1 , 若是,则摄像机进入第二分区的预测区域,否则,摄像机位于第二分区的非预测区域,其中,l1、w1为预先设置的可调变量,满足条件:
Figure F2009102623839C00041
12.根据权利要求11所述的方法,其特征在于,所述确定摄像机在第二分区之后可能运动到的第三分区包括:
找到与摄像机速度方向最相近的四条划分资源分区的边界线,其中包括两条平行于x轴的直线line_x1、line_x2和平行于z轴的两条直线line_z1、line_z2;
根据摄像机的位置(x1,z1)和速度得到摄像机运动方向的直线f(x,z);
求出直线f(x,z)与line_x1、line_x2、line_z1、line_z2之间的全部交点;
找到全部交点中与摄像机位置(x1,z1)最近的两个点,计算这两个点的中点坐标;所述中点坐标所在的分区为摄像机在第二分区之后可能运动到的第三分区。
13.一种实现三维导航的装置,包括用于利用全球定位系统确定摄像机的当前位置坐标的位置坐标模块,其特征在于,该装置还包括:
三维电子地图模块,用于存储预先定义的三维电子地图中的三维场景模型,并建立三维电子地图的三维场景坐标系;
分区模块,用于对所述三维电子地图模块中的三维场景进行分区并保存分区结果;还用于根据所述位置坐标模块得到的当前位置坐标查询所述分区结果,确定摄像机的当前位置坐标所属的三维场景的分区;
特征信息模块,用于建立并维护用于保存每个三维场景的分区包含的三维场景模型特征信息的资源分区表;还用于根据所述分区模块所确定的三维场景的分区查询所述资源分区表,得到所述三维场景的分区包含的三维场景的特征信息;
渲染模块,用于根据所述特征信息模块得到的三维场景的分区包含的三维场景的特征信息加载所述三维电子地图模块中预先定义的三维场景模型,并渲染三维场景。
14.根据权利要求13所述的装置,其特征在于,所述三维电子地图模块包括:
用于确定三维场景模型的外接长方体,将所述外接长方体的对称中心坐标作为所述三维场景模型的位置坐标,所述外接长方体的长宽表示该三维场景模型的大小的功能单元。
15.根据权利要求13所述的装置,其特征在于,所述三维场景模型特征信息包括:三维场景模型的坐标位置、标识以及变换信息。
16.根据权利要求13所述的装置,其特征在于,所述分区模块包括:
用于将三维场景在x-z平面上进行投影,确定投影轮廓的x值最小点min_x和最大点max_x,以及z值最小点min_z和最大点max_z,以这四个点确定投影轮廓的包围矩形的功能单元;
用于设置分区的长度l=vt以及宽度w=vt的功能单元,其中,v表示摄像机移动速度的最大值,t表示设定的时间;以及
用于以所述分区长度l和宽度w分割所述投影轮廓的包围矩形,得到各个分区的功能单元。
17.根据权利要求16所述的装置,其特征在于,所述设定的时间t为2秒至4秒。
18.根据权利要求16所述的装置,其特征在于,所述特征信息模块包括:
用于初始化一个二维矩阵,所述二维矩阵的每一个元素对应一个分区的功能单元;
用于获取任一个三维场景模型x-z坐标(x1,z1)的功能单元;
用于根据公式
Figure F2009102623839C00051
计算该三维场景模型所属的分区在资源分区表中的序号的功能单元,其中,floor[]表示对括号中的内容向上取整;以及
用于将所述三维场景模型的特征信息保存在所述二维矩阵的第i行、第j列的元素中的功能单元。
19.根据权利要求16所述的装置,其特征在于,所述特征信息模块包括:
用于初始化一个二维矩阵,所述二维矩阵的每一个元素对应一个分区的功能单元;
用于获取三维场景模型在x-z平面上的投影,确定该投影面积实际占用的至少一个分区的功能单元;以及
用于在所确定分区对应的二维矩阵元素中,分别记录该三维场景模型的特征信息的功能单元。
20.根据权利要求16至19任一项所述的装置,其特征在于,所述分区模块进一步包括:
时长为t的定时器;
分区单元,用于在所述定时器达到预定时长时,根据所述位置坐标模块得到的当前位置坐标查询分区结果,确定摄像机的当前位置坐标所属的三维场景的分区,并将所述定时器归零的功能单元;
判断单元,用于根据所述分区单元在相邻两次确定的三维场景分区是否相同,判断摄像机是否从第一分区切换到与第一分区相邻的第二分区,若是,则将所述第二分区的信息传送至特征信息模块;
所述特征信息模块根据所述第二分区的信息查询所述资源分区表,得到所述第二分区的相邻分区包含的三维场景模型的特征信息;
所述渲染模块包括:
加载单元,用于确定所述第二分区的相邻分区包含的三维场景模型中、尚未被加载的三维场景模型,并加载所述尚未被加载的三维场景模型的数据的功能单元;
卸载单元,用于在已被加载的三维场景模型中,确定不属于第二分区以及第二分区的相邻分区的三维场景模型,并卸载所述三维场景模型的数据的功能单元;以及
渲染单元,用于根据已加载的三维场景模型的数据渲染三维场景的功能单元。
21.根据权利要求20所述的装置,其特征在于,所述分区模块进一步包括:
预测单元,用于在所述判断单元判断出摄像机从第一分区切换到与第一分区相邻的第二分区时,根据摄像机当前的速度,在第二分区的相邻分区中,确定摄像机在第二分区之后可能运动到的第三分区,并将所述第二分区的信息传送至特征信息模块;
所述特征信息模块根据所述第三分区的信息查询所述资源分区表,得到所述第三分区的相邻分区包含的三维场景模型的特征信息;
所述渲染模块的加载单元进一步用于确定所述第三分区的相邻分区包含的三维场景模型中、尚未被加载的三维场景模型,并加载所述尚未被加载的三维场景模型的数据。
22.根据权利要求21所述的装置,其特征在于,所述预测单元用于在所述判断单元判断出摄像机从第一分区切换到与第一分区相邻的第二分区后,判断摄像机是否进入第二分区的预测区域,若是,则根据摄像机当前的位置和速度,在第二分区的相邻分区中,确定摄像机在第二分区之后可能运动到的第三分区,并将所述第二分区的信息传送至特征信息模块。
23.根据权利要求22所述的装置,其特征在于,设第二分区为第i行第j列个分区,所述判断摄像机是否进入第二分区的预测区域为:判断摄像机的当前位置坐标(x1,z1)是否满足:
min _ x + i &times; l &le; x 1 &le; min _ x + i &times; l + l 1 min _ z + j &times; w &le; z 1 &le; min _ z + ( j + 1 ) &times; w , min _ x + i &times; l + l 1 &le; x 1 &le; min _ x + ( i + 1 ) &times; l min _ z + j &times; w &le; z 1 &le; min _ z + j &times; w + w 1 , 若是,则摄像机进入第二分区的预测区域,否则,摄像机位于第二分区的非预测区域,其中,l1、w1为预先设置的可调变量,满足条件:
24.根据权利要求23所述的方法,其特征在于,所述确定摄像机在第二分区之后可能运动到的第三分区包括:
找到与摄像机速度
Figure F2009102623839C00074
方向最相近的四条划分资源分区的边界线,其中包括两条平行于x轴的直线line_x1、line_x2和平行于z轴的两条直线line_z1、line_z2;
根据摄像机的位置(x1,z1)和速度
Figure F2009102623839C00081
得到摄像机运动方向的直线f(x,z);
求出直线f(x,z)与line_x1、line_x2、line_z1、line_z2之间的全部交点;
找到全部交点中与摄像机位置(x1,z1)最近的两个点,计算这两个点的中点坐标;所述中点坐标所在的分区为摄像机在第二分区之后可能运动到的第三分区。
CN 200910262383 2009-12-24 2009-12-24 一种实现三维导航的方法和装置 Active CN102109353B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910262383 CN102109353B (zh) 2009-12-24 2009-12-24 一种实现三维导航的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910262383 CN102109353B (zh) 2009-12-24 2009-12-24 一种实现三维导航的方法和装置

Publications (2)

Publication Number Publication Date
CN102109353A true CN102109353A (zh) 2011-06-29
CN102109353B CN102109353B (zh) 2013-01-02

Family

ID=44173573

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910262383 Active CN102109353B (zh) 2009-12-24 2009-12-24 一种实现三维导航的方法和装置

Country Status (1)

Country Link
CN (1) CN102109353B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102736940A (zh) * 2012-06-21 2012-10-17 北京像素软件科技股份有限公司 一种资源加载方法
CN102982159A (zh) * 2012-12-05 2013-03-20 上海创图网络科技发展有限公司 一种三维网页多场景快速切换方法
CN103310021A (zh) * 2013-07-04 2013-09-18 江西交通咨询公司 一种基于三维坐标互换的模型动态加载方法
CN103389104A (zh) * 2013-07-17 2013-11-13 北京龙图通信息技术有限公司 一种与二维导航同步的三维方向性导航方法及其装置
CN103971416A (zh) * 2012-12-21 2014-08-06 达索系统公司 将3d场景分割为由计算资源处理的多个区域
CN104428817A (zh) * 2012-07-12 2015-03-18 高通股份有限公司 移动装置上的传感器辅助广域定位
CN104679971A (zh) * 2013-12-02 2015-06-03 云南电力调度控制中心 一种基于地理信息的环境气象数据综合展示方法
CN105139750A (zh) * 2015-09-30 2015-12-09 百度在线网络技术(北京)有限公司 电子地图的展示方法和装置
CN106840167A (zh) * 2017-02-23 2017-06-13 周良辰 基于街景地图的目标物地理位置的二维量测算方法
CN107358649A (zh) * 2017-06-07 2017-11-17 腾讯科技(深圳)有限公司 地形文件的处理方法和装置
CN107908605A (zh) * 2017-10-13 2018-04-13 惠生(南通)重工有限公司 根据电仪设备坐标信息快速获取其区域位置的方法
CN109461210A (zh) * 2018-10-15 2019-03-12 杭州群核信息技术有限公司 一种在线家装的全景漫游方法
CN109701271A (zh) * 2018-12-24 2019-05-03 网易(杭州)网络有限公司 显示图标的方法、装置和系统
CN110351524A (zh) * 2019-07-19 2019-10-18 厦门尚为科技股份有限公司 三维可视化监控方法、装置、电子设备及可读存储介质
CN110579222A (zh) * 2018-06-07 2019-12-17 百度在线网络技术(北京)有限公司 导航路线处理方法、装置及设备
CN111191643A (zh) * 2020-04-10 2020-05-22 支付宝(杭州)信息技术有限公司 虹膜图像采集系统及方法

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102736940B (zh) * 2012-06-21 2015-06-24 北京像素软件科技股份有限公司 一种资源加载方法
CN102736940A (zh) * 2012-06-21 2012-10-17 北京像素软件科技股份有限公司 一种资源加载方法
CN104428817A (zh) * 2012-07-12 2015-03-18 高通股份有限公司 移动装置上的传感器辅助广域定位
CN102982159A (zh) * 2012-12-05 2013-03-20 上海创图网络科技发展有限公司 一种三维网页多场景快速切换方法
CN103971416B (zh) * 2012-12-21 2018-09-04 达索系统公司 将3d场景分割为由计算资源处理的多个区域
CN103971416A (zh) * 2012-12-21 2014-08-06 达索系统公司 将3d场景分割为由计算资源处理的多个区域
CN103310021B (zh) * 2013-07-04 2016-11-16 江西交通咨询公司 一种基于三维坐标互换的模型动态加载方法
CN103310021A (zh) * 2013-07-04 2013-09-18 江西交通咨询公司 一种基于三维坐标互换的模型动态加载方法
CN103389104B (zh) * 2013-07-17 2015-12-02 北京龙图通信息技术有限公司 一种与二维导航同步的三维方向性导航方法及其装置
CN103389104A (zh) * 2013-07-17 2013-11-13 北京龙图通信息技术有限公司 一种与二维导航同步的三维方向性导航方法及其装置
CN104679971A (zh) * 2013-12-02 2015-06-03 云南电力调度控制中心 一种基于地理信息的环境气象数据综合展示方法
CN105139750A (zh) * 2015-09-30 2015-12-09 百度在线网络技术(北京)有限公司 电子地图的展示方法和装置
CN106840167B (zh) * 2017-02-23 2019-12-20 周良辰 基于街景地图的目标物地理位置的二维量测算方法
CN106840167A (zh) * 2017-02-23 2017-06-13 周良辰 基于街景地图的目标物地理位置的二维量测算方法
CN107358649A (zh) * 2017-06-07 2017-11-17 腾讯科技(深圳)有限公司 地形文件的处理方法和装置
CN107908605A (zh) * 2017-10-13 2018-04-13 惠生(南通)重工有限公司 根据电仪设备坐标信息快速获取其区域位置的方法
CN110579222A (zh) * 2018-06-07 2019-12-17 百度在线网络技术(北京)有限公司 导航路线处理方法、装置及设备
CN110579222B (zh) * 2018-06-07 2022-03-15 百度在线网络技术(北京)有限公司 导航路线处理方法、装置及设备
CN109461210A (zh) * 2018-10-15 2019-03-12 杭州群核信息技术有限公司 一种在线家装的全景漫游方法
CN109701271A (zh) * 2018-12-24 2019-05-03 网易(杭州)网络有限公司 显示图标的方法、装置和系统
CN110351524A (zh) * 2019-07-19 2019-10-18 厦门尚为科技股份有限公司 三维可视化监控方法、装置、电子设备及可读存储介质
CN111191643A (zh) * 2020-04-10 2020-05-22 支付宝(杭州)信息技术有限公司 虹膜图像采集系统及方法

Also Published As

Publication number Publication date
CN102109353B (zh) 2013-01-02

Similar Documents

Publication Publication Date Title
CN102109353B (zh) 一种实现三维导航的方法和装置
KR101157581B1 (ko) 지도표시 시스템, 지도데이터 가공장치, 지도표시 장치 및 지도표시 방법
EP2518444B1 (en) Navigation device and method of determining a height coordinate
US20060284879A1 (en) Animation generating apparatus, animation generating method, and animation generating program
KR100520708B1 (ko) 3차원 지도의 표시방법
KR101013633B1 (ko) 모바일 네비게이션 유닛을 위한 진보된 3d 비주얼화를 위한 시스템 및 방법
KR100520707B1 (ko) 3차원 지도에서의 다중레벨 텍스트데이터 표시방법
US8442805B2 (en) Efficient computation of Voronoi diagrams of general generators in general spaces and uses thereof
KR101925089B1 (ko) 네비게이션 장치를 위한 데이터베이스, 지형의 3차원 표현을 출력하는 방법, 및 데이터베이스를 생성하는 방법
CN107423445A (zh) 一种地图数据处理方法、装置及存储介质
CN101925892B (zh) 用于非职业志愿者的基于照片的虚拟世界创建系统
KR101925088B1 (ko) 데이터베이스 생성 방법, 네비게이션 장치, 및 높이 정보 판정 방법
JP3523338B2 (ja) 立体モデル作成方法および装置
CN110383340A (zh) 使用稀疏体积数据进行路径规划
EP2209092A1 (en) Method for unified visualisation of heterogeneous datasets
US9483872B2 (en) Graphical representation of roads and routes using hardware tessellation
CN101408990B (zh) 一种城市建筑模型的渐进压缩和传输方法
US20130113796A1 (en) Navigation device, method of predicting a visibility of a triangular face in an electronic map view, and method for generating a database
CA2769363C (en) Navigation device, method of outputting a three-dimensional roof structure, and method of generating a database
CN105806347A (zh) 一种坡度路段真三维导航方法及一种真三维导航设备
CN108491401B (zh) 一种2.5维地图的坐标纠偏方法
JPH09305651A (ja) 解析シミュレーション装置とその高速表示方法
Dinis et al. DIGITAL OCEAN: A National Project for the creation and distribution of Multimedia Content for Underwater Sites
KR20160093369A (ko) 3d 경로 거리 산출 시스템 및 그 방법
US20190287300A1 (en) Method and Device for Efficient Building Footprint Determination

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