一种球形地表数据组织渲染与碰撞检测方法及系统与流程

文档序号:14303893阅读:322来源:国知局
一种球形地表数据组织渲染与碰撞检测方法及系统与流程

本发明涉及地理信息领域,尤其涉及一种球形地表数据组织渲染与碰撞检测方法与系统。



背景技术:

gis(地理信息系统)以及游戏业界主流的基于高度图的球形数据组织方法为:基于正多面体进行球面剖分,将高度数据从正多面体的空间映射到球面上。球面剖分用得较多的是正六面体,正八面体,正二十面体。正二十面体剖分以其较低的映射形变正逐渐在业内流行。但是市面上常见的正二十面体剖分方法都是使用四叉树来组织数据及渲染单元,缺乏lod机制。同时由于正二十面体与球面的映射复杂,市面上没有高效精确的碰撞检测机制。因此,目前亟需一种基于正二十面体剖分的,且有效支持lod机制及高效精确的碰撞检测机制的方法。



技术实现要素:

为了解决现有技术存在的不足,本发明的目的在于提供一种球形地表数据组织渲染与碰撞检测方法与系统,达到使正二十面体剖分具有lod机制,且达到支持高效精确的碰撞检测的目的。

为了达到上述目的,本发明提供的球形地表数据组织渲染与碰撞检测方法,包括以下步骤:

1)使用正二十面体进行球面剖分,并分解成多个菱形;

2)使用单位向量来计算与其相交的菱形的重心坐标;

3)采用clipmap及四叉树对每一个菱形组织渲染高度数据;

4)基于重心坐标系组织碰撞数据及实现碰撞检测。

进一步地,所述步骤1)进一步包括:

使用正二十面体进行球面剖分,并将正二十面体分解成多个菱形;

将所述多个菱形铺平后,将其中的每个菱形作为clipmap,基于clipmap组织高度数据,并划分为2的幂次个小的菱形。

进一步地,所述步骤2)进一步包括:

将摄像机位置转为相对球心的单位向量,并使用该单位向量计算与其相交的菱形的重心坐标;

根据所述菱形的重心坐标,计算其余菱形的重心坐标,并以计算出来的重心坐标计算需要加载的高度数据块。

进一步地,所述步骤3)进一步包括:

为菱形建立四叉树,每一个clipmap高度数据块对应四叉树中的一个节点;

以四叉树节点为基础组织渲染单元,对每一个菱形组织渲染高度数据。

进一步地,所述步骤4),进一步包括以下步骤,

在菱形重心坐标系内建立碰撞树及其对应的碰撞单元格;

将射线的起点和终点转换到菱形的相对重心坐标系中,使用射线进行求交检测。

进一步地,所述在菱形重心坐标系内建立碰撞树及其对应的碰撞单元格的步骤,进一步包括:

在每一个菱形的重心坐标系内建立一棵碰撞树;

将所述菱形的重心坐标系按指定大小进行碰撞单元格的划分。

更进一步地,所述将射线的起点和终点转换到菱形的相对重心坐标系中,使用射线进行求交检测的步骤,进一步包括:

将射线的起点和终点转换到菱形的重心坐标系中;

在一个菱形的重心坐标系内,计算起点和终点所确定的射线的参数方程;

使用该参数方程,以单位碰撞单元格的大小进行步进;

当行进到标记有对应的高度数据或物体的碰撞单元格时,使用射线与其进行求交检测。

为了达到上述目的,本发明还提供一种球形地表数据组织渲染与碰撞检测系统,包括,地表数据组织渲染装置、地表数据碰撞检测装置,其特征在于,

所述地表数据组织渲染装置,其使用正二十面体进行球面剖分分解成多个菱形,并采用clipmap及四叉树对每一个菱形组织渲染高度数据;

所述地表数据碰撞检测装置,其基于重心坐标系组织碰撞数据及实现碰撞检测。

进一步地,所述地表数据组织渲染装置,包括剖分分解单元,组织高度单元,计算坐标单元,以及计算高度单元,其中,

所述剖分分解单元,其将球面剖分并分解成为若干菱形;

所述组织高度单元,其将每个菱形作为一个clipmap,基于clipmap及四叉树组织渲染高度数据;

所述计算坐标单元,其将摄像机位置转为相对球心的单位向量,并使用该单位向量计算与其相交的菱形的重心坐标;

所述计算高度单元,其根据所述菱形的重心坐标,计算各个菱形内需要加载的高度数据块。

更进一步地,所述地表数据碰撞检测装置,包括建树单元,转换单元,计算单元,以及求交检测单元,其中,

所述建树单元,其根据分解后的菱形建立重心坐标系,并在每一个菱形的重心坐标系内建立一棵碰撞树;

所述转换单元,其将射线的起点和终点转换到菱形的重心坐标系中,若射线的起点与终点不在一个菱形内,则预先将射线与正二十面体的棱进行求交检测,求出各个交点后,分段进行转换;

所述计算单元,其在每个菱形的重心坐标系内,计算起点和终点所确定的射线的参数方程;

所述求交检测单元,其使用所述参数方程,以单位碰撞单元格的大小进行步进检测是否标记有对应的高度数据或物体,若是,则使用射线与其进行求交检测。

本发明的球形地表数据组织渲染与碰撞检测方法及系统,基于正二十面体球面剖分,使用clipmap进行高度数据管理,并将clipmap的高度数据块映射到四叉树中,基于四叉树进行渲染节点管理,使用球面插值及重心坐标系进行球面坐标与正二十面体坐标的转换及碰撞树管理,实现了球面高度数据的管理的同时,提供了lod机制及高效精确的碰撞检测机制。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为根据本发明的球形地表数据组织渲染与碰撞检测方法流程图;

图2为根据本发明的球形地表数据组织渲染与碰撞检测系统的原理框图;

图3为根据本发明的球形地表数据组织渲染装置的原理框图;

图4为根据本发明的球形地表数据碰撞检测装置的原理框图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

本发明提供了一种球形地表数据组织渲染与碰撞检测方法,图1为根据本发明的球形地表数据组织渲染与碰撞检测方法流程图,下面将参考图1,对本发明的球形地表数据组织渲染与碰撞检测方法进行详细描述。

首先,在步骤101,使用正二十面体进行球面剖分。坐标系统使用x轴朝右,y轴朝上,z轴朝里。剖分时,使用其中的一条棱的中点作为北极点,该棱指向正z轴,原点在正二十面体的中心的方案。这种方案更利于球面坐标到正二十面体的重心坐标的转换。将正二十面体分解成10个菱形(任意支持形成菱形的分解方法均可),将菱形铺平以后,将每个菱形基于clipmap组织高度数据,并划分为2的幂次个小的菱形(按实际剖分精度需求决定),这里clipmap组织高度数据的意思是,每个菱形在保存最精细的格子的数据的同时,保存1/2精度,1/4精度,1/8精度直至合适的精度级别的数据。

在步骤102,将摄像机位置转为相对球心的单位向量,使用该单位向量来计算与其相交的菱形上的重心坐标(转换重心坐标时,必须基于使用球面插值),并基于该重心坐标,计算其余菱形的重心坐标。

在步骤103,使用步骤102确定的各个菱形的重心坐标,计算各个菱形内需要加载的高度数据块。超过重心坐标[0,1]范围的高度数据块不需要加载。每一个菱形都建立一棵四叉树,每一个clipmap高度数据块都对应四叉树中的一个节点(clipmap的步进以最精细的数据块的大小为步长,而不是以最精细的单个高度数据为步长),以四叉树节点为基础来组织渲染单元。至此,实现了支持渲染单元的lod功能。

在步骤104,使用重心坐标系内的uv值及两个端点进行球面插值(slerp),将菱形内的高度数据映射回球面。用球面插值的原因是,还原出来的三角形较均匀。

在步骤105,在每一个菱形的重心坐标系内建立一棵碰撞树(八叉树),由于重心坐标系是平直的,建立的碰撞树与平直坐标系方法一致。将菱形的重心坐标系按指定大小的碰撞单元格进行划分,当clipmap的高度数据加载完毕以后,按该高度数据所占范围在碰撞树中创建对应数量的碰撞单元格子。场景模型也可以将其世界空间的包围盒转换到重心坐标系以后创建对应数量的碰撞单元格子。

在步骤106,将射线的起点和终点转换到菱形的重心坐标系中。如果射线的起点和终点不在一个菱形内,需要先将射线与正二十面体的棱进行求交检测,求出各个交点以后,分段进行。

在步骤107,在一个菱形的重心坐标系内,计算起点和终点所确定的射线的参数方程,使用该参数方程,以单位碰撞单元格的大小进行步进,当行进到的碰撞单元格标记有对应的高度数据或物体时,使用射线与其进行求交检测。

至此,在重心坐标系中进行碰撞检测,实现了高效及精确(基于数学正确)的碰撞检测机制。

本发明还提供了一种球形地表数据组织渲染及碰撞检测系统,图2为根据本发明的球形地表数据组织渲染与碰撞检测系统的原理框图,如图2所示,本发明的球形地表数据组织渲染与碰撞检测系统,包括,球形地表数据组织渲染装置201、球形地表数据碰撞检测装置202,其中,

球形地表数据组织渲染装置,其使用正二十面体进行球面剖分分解成多个菱形,并采用clipmap及四叉树对每一个菱形组织渲染高度数据。

球形地表数据碰撞检测装置,其基于重心坐标系组织碰撞数据及实现碰撞检测。

图3为根据本发明的球形地表数据组织渲染装置的原理框图。如图3所示,本发明的球形地表数据组织渲染装置,包括,剖分分解单元301,组织高度单元302,计算坐标单元303,以及计算高度单元304,其中,

所述剖分分解单元301,其将球面剖分并分解成为若干菱形;

所述组织高度单元302,其将每个菱形作为一个clipmap,基于clipmap组织高度数据;

所述计算坐标单元303,其将摄像机位置转为相对球心的单位向量,并使用该单位向量来计算与其相交的菱形的重心坐标;

所述计算高度单元304,其根据所述菱形的重心坐标,计算各个菱形内需要加载的高度数据块。

图4为根据本发明的球形地表数据碰撞检测装置的原理框图,如图4所示,本发明的球形地表数据碰撞检测装置,包括,建树单元401,转换单元402,计算单元403,以及求交检测单元404,其中,

所述建树单元401,其根据分解后的菱形建立重心坐标系,并在每一个菱形的重心坐标系内建立一棵碰撞树;

所述转换单元402,其将射线的起点和终点转换到菱形的重心坐标系中,若射线的起点与终点不在一个菱形内,则预先将射线与正二十面体的棱进行求交检测,求出各个交点后,分段进行转换;

所述计算单元403,其在每个菱形的重心坐标系内,计算起点和终点所确定的射线的参数方程;

所述求交检测单元404,其使用所述参数方程,以单位碰撞单元格的大小进行步进检测是否标记有对应的高度数据或物体,若是,则使用射线与其进行求交检测。

本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1