一种应用在大规模地形渲染中的视锥体投影裁剪方法

文档序号:6549915阅读:234来源:国知局
一种应用在大规模地形渲染中的视锥体投影裁剪方法
【专利摘要】本发明提供了一种应用在大规模地形渲染中的视锥体投影裁剪方法,属于虚拟现实、计算机仿真领域。本方法首先根据视锥体所处空间位置判断视锥体投影的等效形状,等效为类扇形或者圆形,然后计算视锥体投影等效形状的相关几何信息,最后根据地形块包围盒在水平面投影所形成的正方形的右下方点与视锥体投影等效区域进行点裁剪,来判断地形块是否在视锥体范围内。本发明依据视锥体所处位置将其在水平面的投影进行简化等效,直观地反映了视锥体投影形状,并通过点裁剪判断裁剪结果,有效地简化了计算过程,解决了大量不该被显示的地形块被渲染、增加渲染压力的问题。
【专利说明】一种应用在大规模地形渲染中的视锥体投影裁剪方法
【技术领域】
[0001]本发明涉及一种应用在大规模地形渲染中的视锥体投影裁剪方法,属于虚拟现实、计算机仿真领域。
【背景技术】
[0002]视锥体裁剪是计算机图形学中许多问题的基础,视锥体裁剪的目的在于从几何数据中抽取所需要的信息,其在布尔运算、隐藏线和隐藏面的剔除、阴影生成等算法中也是十分有用的工具。视锥体裁剪的最典型应用是从一幅大画面中截取局部视图。在地形的三维可视化中,由于地形涉及的范围一般都十分广阔,地形模型的数据量很大,往往包含数以百万计的三角形,如对它们一一进行相应的变换和裁剪,对图形系统是一个很大的负担。如果能在实时地形绘制中,事先剔除用户不可见的部分,则无疑可以有效的提高地形实时绘制的速度。
[0003]视锥体(ViewFrustum)是指场景中摄像机可见的一个金字塔状平截头的锥体范围,是由上(Top)下(Bottom)左(Left)右(Right)近(Near)远(Far)六个截面组成,如图1所示。当人眼观察一个场景时,在视锥体之外的物体是看不见的,因此可以在显示前,将不可见的场景剔除掉,且不会对场景渲染造成影响。这样,渲染场景过程中,在视锥体中的所有顶点数据都是可见的,而在视锥体之外的场景数据是不可见的。视锥体裁剪就是在顶点数据送至渲染管线之前,将这些不可见的场景数据剔除掉。
[0004]在大规模地形数据调度与渲染过程中,最基础的视锥体裁剪方法为确定视锥体六个裁剪平面的方程,然后计算物体和各个裁剪平面之间的距离,按这些距离来进行判断一个物体和视锥体的关系,即确定该物体是否在当前视区内,如图2所示,图2中的a、b和c表示三个不同物体,分别在视锥体内、与视锥体相交、在视锥体外。
[0005]对点的裁剪过程如下:
[0006]如果己知六个裁剪平面的方程,
[0007]AjX+Biy+CjZ+Di = O (i = 1.....6)
[0008]其中,(X,y, z)为空间坐标,Ai, Bi, Ci和Di为第i个裁剪平面的方程系数。
[0009]计算点P (xp, yp, zp)关于第i个裁剪平面的值(Ii,
[0010](Ii = AiXp+BiYp+CiZp+Di
[0011]平面的法向量都指向视锥体外,若计算的点P关于各裁剪平面的值Cli都小于零时,说明点P在视锥体内,否则点P在视锥体外部。
[0012]对物体的裁剪过程如下:
[0013]每个物体都是由多边形构成的,假如它有N个边界顶点,那么对它的裁剪就必须按点的裁剪方式计算N个顶点中的每一个顶点与裁剪面的六个距离来判断该物体在视锥体内,还是在视锥体外,还是和视锥体相交,这样做是很费时的。在计算机仿真中,常采用物体包围盒的方式。利用长方体作包围盒时,在裁剪时,需要判断长方体的八个顶点和视锥体的关系。如果它们全在视锥体内,则该物体在视锥体内;如果这八个顶点都不在视锥体里,则该物体在视锥体外,否则该物体和视锥体相交。利用包围球时,则需要计算球体的中心和六个裁剪平面的距离,在这种情况下,视区裁剪测试就更加简单有效,若要判断两个球体是否相交只要进行一次测试,即计算两个球体的中心之间的距离,如果这个距离小于两个球体的半径之和,则它们相交,否则不相交。但由于将视锥体简化为包围球进行计算时会将视锥体的范围扩大,即得出的结果会有原本不应该显示的地形块也被送进渲染管线进行渲染,无形中增加了渲染的压力。在大规模地形数据调度与渲染过程中,传统的视锥体裁剪方法都没有简便和快速地解决实际问题。

【发明内容】

[0014]本发明的目的是为了解决有大量不该被显示的地形块被渲染,增加渲染压力的问题,提出了一种应用在大规模地形渲染中的视锥体投影裁剪方法。本发明的一种应用在大规模地形渲染中的视锥体投影裁剪方法,包括以下几个步骤:
[0015]步骤一:确定视锥体投影的等效形状,具体是:设视锥体垂直方向的视场角为β,视线与垂直向下的法向量之间的夹角为Y,当Y大于等于β/2时,确定视锥体在水平面的投影等效形状为类扇形;当Y小于β/2时,确定视锥体在水平面的投影等效形状为圆形;
[0016]步骤二:确定视锥体投影等效形状的相关几何信息;
[0017](2a)如果视锥体投影等效形状为类扇形,则根据视锥体所处的空间位置以及视锥体的参数求出类扇形的两个半径Rl、R2以及扇形的角度α ;
[0018](2b)如果视锥体投影等效形状为圆形,则根据视锥体所处的空间位置以及视锥体的参数求出圆形的半径R ;
[0019]步骤三:进行点裁剪计算;
[0020](3a)取地形块包围盒在水平面投影所形成的正方形的右下角顶点作为待裁剪
占.[0021](3b)用待裁剪点与视锥体投影等效区域进行裁剪计算得出视锥体裁剪结果。
[0022]所述的(3b)中当待裁剪点位于视锥体投影等效区域内时,则对应该待裁剪点周围的四块地形块均被标记为待渲染。
[0023]本发明相比目前视锥体裁剪方法,具有以下优点和积极效果:
[0024](I)首次提出了类扇形和圆形的视锥体投影等效形状,解决了以往视锥体投影等效形状与视锥体偏差过大,使得裁剪计算过程中无用地形块过多的被渲染,减少了需要渲染的三角形数量,提高了帧率;
[0025](2)采用点裁剪计算的方法,简化了视锥体裁剪计算的复杂程度;
[0026](3)通过对一个点的裁剪结果可以判断周围四块地形块的状态,加快了裁剪计算的过程。
【专利附图】

【附图说明】
[0027]图1是本发明的【背景技术】中的视锥体结构图;
[0028]图2是本发明的【背景技术】中的视锥体裁剪原理图;
[0029]图3是本发明中视锥体投影裁剪快速算法的流程图;
[0030]图4是本发明中视锥体上截面与水平面未相交时投影形状为类扇形的情况示意图;
[0031]图5是本发明中视锥体上截面与水平面相交时投影形状为类扇形的情况示意图;
[0032]图6是本发明中视锥体投影形状为圆形的情况示意图;
[0033]图7是本发明中视锥体投影形状为类扇形的等效图;
[0034]图8是本发明中视锥体投影形状为圆形的等效图;
[0035]图9是本发明中点裁剪的结果示意图。
【具体实施方式】
[0036]下面将结合附图对本发明作进一步的详细说明。
[0037]本发明采用将视锥体进行投影,通过视锥体所处的空间位置判断并计算视锥体投影的等效形状;首次提出并应用类扇形和圆形进行投影区域的等效,解决了会有大量不该被显示的地形块被渲染,而增加渲染压力的问题,使得每帧显示的三角形数量减少,提高了帧率;此外,提出了采用点裁剪的方法,即用地形块包围盒在水平面投影形成的正方形的右下方的点与视锥体投影等效区域进行裁剪计算,用一个点即可判断周围四块地形块是否在视锥体范围内,加快了计算的速度。
[0038]本发明的一 种应用在大规模地形渲染中的视锥体投影裁剪方法,流程如图3所示,包括以下几个步骤:
[0039]步骤一:确定视锥体投影的等效形状,包括步骤1.1和步骤1.2。
[0040]步骤1.1:计算视锥体垂直方向的视场角以及视线与垂直向下的法向量之间的夹角。
[0041]通过计算获取视锥体垂直方向的视场角β度以及视线与垂直向下的法向量之间的夹角Y度。
[0042]步骤1.2:根据视锥体的位置判断投影的形状。
[0043]如果Υ大于等于β /2,则视锥体投影的形状为类扇形;如果Y小于β /2,则视锥体投影的形状为圆形。
[0044]本步骤中视锥体的投影等效形状是根据视锥体在水平面正常投影形状演化而来,根据视锥体所处空间的位置不同,其在水平面的投影形状为三角形或是四边形,分别将其等效为扇形和圆形是为了简化计算过程。
[0045]步骤二:计算视锥体投影形状的相关几何信息,包括(2a)和(2b)。
[0046](2a)如果形状为类扇形,分两种情况:
[0047](I)视锥体上截面在水平面上方,即与水平面不相交,如图4所示。此时视点VP在水平面的投影为点A ;视锥体远截面左上方点,即图中点S,在水平面的投影为点SI,计算点A到点SI之间的距离作为类扇形的一个半径Rl ;视锥体远截面左下方点,即图中点Q,与视点VP的连线与水平面的交点为点B ;视锥体远截面右下方点,即图中点0,与视点VP的连线与水平面的交点为点C ;点B和点C连线的中点为点D,计算点A到点D之间的距离作为类扇形的另一个半径R2 ;计算点A与点Pl之间的连线与视线在水平面的投影之间的角度α?,计算点A与点B之间的连线与视线在水平面的投影之间的角度α2,取α?和α 2中较大者的2倍作为类扇形的角度α ;
[0048](2)视锥体上截面与水平面相交,如图5所示。此时视点VP在水平面的投影为点A ;视锥体远截面左上方点,即图中点S,与视点VP的连线与水平面的交点为点E,计算点A到点E之间的距离作为类扇形的一个半径Rl ;视锥体远截面左下方点,即图中点Q,与视点VP的连线与水平面的交点为点B ;视锥体远截面右下方点,即图中点O,与视点VP的连线与水平面的交点为点C,点B和点C连线的中点为点D,计算点A到点D之间的距离作为类扇形的另一个半径R2 ;计算点A与点E之间的连线与视线在水平面的投影之间的角度α 1,计算点A与点B之间的连线与视线在水平面的投影之间的角度α2,取α I和α 2中较大者的2倍作为类扇形的角度α。
[0049]得出的相关几何信息为两个半径R1、R2以及扇形的夹角α,将以此构成的类扇形区域作为视锥体投影等效形状。
[0050](2b)如果视锥体投影等效形状为圆形,如图6所示:
[0051]此时视点为点VP,在水平面的投影为A ;视锥体远截面左上方点,即图中点Q1,与点VP的连线与水平面的交点为点C,计算点C与视点VP在水平面投影之间的距离dl ;视锥体远截面左下方点,即图中点P1,与视点VP的连线与水平面的交点为点B,计算点B与视点VP在水平面投影之间的距离d2 ;取dl和d2中的大者为圆形的半径R。根据得出的半径R构成的圆形区域,作为视锥体投影等效形状。
[0052]步骤三:进行点裁剪,包括(3a)和(3b)。
[0053](3a)取 地形块包围盒在水平面投影所形成的正方形的右下角顶点,作为待裁剪点,与之前计算好的区域进行点裁剪。
[0054](3b)用待裁剪点与步骤二计算好的等效形状区域进行点裁剪。
[0055]如果为类扇形时,待裁剪点P与视点在水平面的投影A之间的连线AP距离应大于等于R2,小于等于Rl,所连线AP与视线在水平面的投影AL之间的角度应小于等于α /2,SP如图7所示,点P为待裁剪点,则如果满足下列公式,点P即在投影区域内:
[0056]R2 ( IAP I ( Rl
[0057]angleBetween (AP, AL) ^ α /2
[0058]如果为圆形时,待裁剪点与视点在水平面的投影A之间的连线AP距离应该小于等于R,即如图8所示,点P为待裁剪点,则如果满足下列公式,点P即在投影区域内:
[0059]IAP I ( R
[0060]计算后如果某点在投影区域内,则它周围四块地形块均可被标记为待渲染。
[0061]采用点的裁剪计算代替地形块可以简化计算过程,且一个点的裁剪结果可以判断其周围四块地形块是否在视锥体范围内,能够加速计算过程。
[0062]类扇形投影区域的几何信息说明如图7所示:
[0063]图中Rl和R2、α I和α 2由步骤三中计算所得,从图中可以观察到α I大于α 2,所以类扇形的角度为2* α 1,即视锥体投影的等效区域是角度为2* α I度,半径在R2和Rl之间的扇形,即图中黑色覆盖的区域。
[0064]圆形投影区域的几何信息说明如图8所示:
[0065]图中dl和d2由步骤三中计算所得,从图中可以观察到dl大于d2,所以圆形的半径为dl,即视锥体投影的等效区域是半径为dl的圆形。
[0066]视锥体投影区域进行点裁剪的结果判定图如图9所示:
[0067]假设图中9个正方形为地形块最精细一级的包围盒在水平面的投影,图中黑点为投影所得正方形右下角顶点,用这些点进行区域的点裁剪,如果一个点在视锥体的投影区域内,如图9中左上方的白点所示,则它周围的四块地形块均会出现在视锥体的范围内,均需要被送入渲染管线中进行渲染,可以看出应用此种判定方法可以通过一个点的裁剪计算判断四块地形块是否需要显示,提高了计算的速度。
【权利要求】
1.一种应用在大规模地形渲染中的视锥体投影裁剪方法,其特征在于,包括如下步骤: 步骤一:确定视锥体投影的等效形状,具体是:设视锥体垂直方向的视场角为β,视线与垂直向下的法向量之间的夹角为Y,当Y大于等于β/2时,确定视锥体在水平面的投影等效形状为类扇形;当Y小于β/2时,确定视锥体在水平面的投影等效形状为圆形; 步骤二:确定视锥体投影等效形状的几何信息,具体是: (2a)如果视锥体投影等效形状为类扇形,根据视锥体所处的空间位置以及视锥体的参数求出类扇形的两个半径Rl、R2以及扇形的角度α ; (2b)如果视锥体投影等效形状为圆形,则根据视锥体所处的空间位置以及视锥体的参数求出圆形的半径R ; 步骤三:进行点裁剪计算; (3a)取地形块包围盒在水平面投影所形成的正方形的右下角顶点作为待裁剪点; (3b)用待裁剪点与视锥体投影等效区域进行裁剪计算得出视锥体裁剪结果。
2.根据权利要求1所述的一种应用在大规模地形渲染中的视锥体投影裁剪方法,其特征在于,所述的步骤二的(2a)中类扇形半径和角度通过如下方法确定:设视点VP在水平面的投影为点A,分为下面两种情况确定半径和角度: (1)视锥体上截面在水平面上方:设视锥体远截面左上方点在水平面的投影为点SI,视锥体远截面左下方点与视点VP的连线与水平面的交点为点B,视锥体远截面右下方点与视点VP的连线与水平面的交点为点C,点B和点C连线的中点为点D ;将点A到点SI之间的距离作为类扇形的一个半径R1,将点A到点D之间的距离作为类扇形的另一个半径R2 ;设点A与点SI之间的连线与视线在水平面的投影之间的角度为α 1,点A与点B之间的连线与视线在水平面的投影之间的角度为α2,取α I和α2中较大者的2倍作为类扇形的角度α ; (2)视锥体上截面与水平面相交:设视锥体远截面左上方点与视点VP的连线与水平面的交点为点Ε,视锥体远截面左下方点与视点VP的连线与水平面的交点为点B,视锥体远截面右下方点与视点VP的连线与水平面的交点为点C,点B和点C连线的中点为点D ;将点A到点E之间的距离作为类扇形的一个半径R1,将点A到点D之间的距离作为类扇形的另一个半径R2 ;设点A与点E之间的连线与视线在水平面的投影之间的角度为α 1,点A与点B之间的连线与视线在水平面的投影之间的角度为α2,取α I和α2中较大者的2倍作为类扇形的角度Ct。
3.根据权利要求1所述的一种应用在大规模地形渲染中的视锥体投影裁剪方法,其特征在于,所述的步骤二的(2b)中圆形的半径通过下面方法获得: 设视点为VP,视锥体远截面左上方点与点VP的连线与水平面的交点为点C,计算点C与视点VP在水平面投影之间的距离dl ;视锥体远截面左下方点与视点VP的连线与水平面的交点为点B,计算点B与视点VP在水平面投影之间的距离d2 ;取dl和d2中的大者为圆形的半径R。
4.根据权利要求1所述的一种应用在大规模地形渲染中的视锥体投影裁剪方法,其特征在于,所述的步骤三的(3b)中,当待裁剪点位于视锥体投影等效区域内时,则对应该待裁剪点周围的四块地形块均被标记为待渲染。
【文档编号】G06T15/30GK104036539SQ201410270498
【公开日】2014年9月10日 申请日期:2014年6月17日 优先权日:2014年6月17日
【发明者】李妮, 王超一, 张鑫, 丁莹 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1