技术领域
[0001] 本发明属于计算机图形学领域,涉及真实感地表形变模型生成方法,具体包括了弹坑模型、车辙模型和脚印模型。
相关背景技术
[0002] 动态地形可视化系统中的地表形变模型是指用数学或物理的方法对地表由于与地面上的物体相互作用而产生的形变所做的抽象描述。在动态地形可视化系统中,常用的地表形变模型包括弹坑、车辙、脚印等。地表形变模型生成算法通过采样、近似等手段,生成可以由动态地形可视化系统所表现的与真实的弹坑、车辙、脚印等具有相似形状和属性的模型。真实感地表形变模型生成算法作为动态地形可视化系统中的关键模块(见图1),对系统的渲染效果与性能产生重要影响。
[0003] 在真实的场景中,由于地面不是刚性表面,与地面接触的物体也不是刚体,所以在物体与地面相互作用的过程中,地面和物体都会发生形变;发生形变之后的地面和物体之间的作用力与反作用力的大小和方向由形变位置、形变程度和形变方向所决定,而这些作用力与反作用力作用到地面和物体上之后又会造成新的形变。这一过程十分复杂,涉及物理学中力学、运动学等领域的内容,不适合对于实时性要求较高的仿真建模。
[0004] 目前,对地表形变模型的仿真多是着眼于模型所模拟的现象的物理特性,采用牛顿定律、流体力学、粒子系统、守恒定律等多种理论创建地表形变模型的表达式。这些地表形变模型的主要特点有:
[0005] 1、计算量大,计算过程复杂。由于大多数模型生成算法都关注于模型与所模拟现象之间物理特性的匹配程度,计算地形高度形变量时往往需要多个输入参数,且表达式通常非常复杂;
[0006] 2、涉及范围较广,但针对性不强。在当前流行的地表形变建模方法中,有的算法关注土壤粒子在地表发生形变时的滑落过程;有的算法关注土壤在挖掘机的挖掘、推动、挤压等各种操作下所呈现的不同形态;有的算法关注引起地表形变的物体(如推土机)的各种操作,从而获得土壤粒子的各种受力状态及运动状态。由于动态地形可视化系统的重点是对地形高程数据进行建模,如果在系统中添加过多的与地形高程数据无关的因素,反而会降低系统的运行效率;
[0007] 3、没有明确提出地表形变模型的影响范围。当前流行的地表形变建模方法在建模过程中应用了力学、运动学、粒子系统、守恒定律等多种理论,以尽可能精确地计算地表的形变量,从而建立很强真实感的模型和仿真过程。但是,很少有算法关注物体与地面相互作用时所影响到的地表的范围,也就是说,大部分算法往往只涉及计算地表受力点处的形变量,但没有明确的方法根据物体和地表的形状、物理特性、运动特性等特征确定受力点的具体位置,因此,确定地表形变模型的影响范围是对地表形变进行建模的一个关键步骤。
[0008] 综上可知,在构建地表形变模型的过程中,需要根据较少的输入参数实时地确定地形表面受影响的区域以及该区域的高程值的形变量。同时,要求地表形变模型具有较强的真实感。
具体实施方式
[0036] 以下结合附图和具体实施方式对本发明的方法作进一步说明。
[0037] 如图1所示,本发明的方法包括以下步骤:
[0038] 步骤1:确定形变所影响的地表范围;
[0039] 步骤2:确定形变量;
[0040] 步骤3:融合地表形变与原始的地形数据;
[0041] 步骤4:调整发生形变区域的地形网格的分辨率;
[0042] 步骤5:调整发生形变区域的地形网格的纹理、光照等信息;
[0043] 步骤6:重新渲染地形的网格模型,表现地表形变模型对原始地形拓扑结构的影响。
[0044] 形变可以包括球形重物击打地表造成的凹进的球面形变、椭球面形变或者运动物体经过地表时产生的曲线形变或者具有重量的物体落下时对地表产生的具有封闭曲线的形变。分别列举一个具体的例子进行说明
[0045] 实施例1
[0046] 球形重物击打地表造成的球面形变,以炮弹在地形表面爆炸形成的弹坑为例,进行详细说明。
[0047] 1.真实感弹坑生成算法
[0048] a)具体算法
[0049] 输入:弹坑的深度depth和半径radius。
[0050] 算法伪代码:
[0051] Generate_crater(int depth,int radius)
[0052] {
[0053] 根据弹坑的深度和半径参数创建半椭球形的弹坑原始模型表面F1;
[0054] 利用随机中点位移算法生成对原始模型表面F1的扰动表面F2;
[0055] 依据权重参数ω将两个表面F1和F2相互融合,在原始的弹坑模型表面产生随机扰动的效果;
[0056] 对融合后的表面进行平滑处理,消除可能出现的过大的起伏;
[0057] }
[0058] b)基本弹坑表面的生成过程
[0059] 弹坑模型的基本形状如图3所示,由于弹坑的形状近似为半椭球形,因此可以用椭圆形球体作为为弹坑建模的基本模型。其中,椭球的半轴长度由爆炸强度以及弹坑所在地地表的属性(包括刚度、内聚力系数、摩擦力系数以及形变指数)决定。设弹坑所在的椭球体的中心点为(x0,y0,z0),弹坑表面上的任意点的坐标为(xe,ye,ze),则弹坑所在的椭圆形球面的表达式为:
[0060]
[0061] 其中a,b和c分别为为椭圆形球体在坐标轴方向的半轴长度。
[0062] 由于大多数弹坑与地面的切面所形成的图形近似与圆形,因此,可以设a=c以简化计算,因此,等式(1)可以简化为:
[0063]
[0064] 其中,a为弹坑的半径,b为弹坑的深度。
[0065] 通过等式(2)可得到位于光滑的弹坑的表面上每一点(xe,ze)的深度为:
[0066]
[0067] 由于a和b都是常量,因此可以设k=b/a作为常量系数。根据等式(3),可得在地形中以点(x0,z0)为中心,根据给定参数(弹坑的深度和半径)生成弹坑后,地形中各点的高度改变量为:
[0068]
[0069] 由等式(4),可得地形中每个点在弹坑生成以后的高程值y′为:
[0070] y′=y-Δy (5)
[0071] 在等式(5)中,y为地形中各采样点的原始高度值。
[0072] 根据等式(5),给定弹坑的横切面半径以及弹坑的深度,即可构造出符合实际规律的基本弹坑表面。
[0073] c)随机扰动过程
[0074] 生成半椭圆球面之后,弹坑的基本形状已经确定。但是,由于椭圆球面是纯粹的数学模型,其表面是完全光滑的,仅以半椭圆球面作为模拟弹坑的地表形变模型进行仿真,得到的结果在真实感方面表现不佳。
[0075] 为了增强弹坑模型的真实感,在生成基本的弹坑模型之后,对其光滑的表面进行基于随机中点位移算法的随机扰动,使最终生成的弹坑模型的表面不是完全光滑的,大大增加了实际渲染结果的真实感。
[0076] 随机扰动的具体过程如下:
[0077] 在二维随机中点位移算法中,设随机中点位移表面中任意一点(x,z)的高度值表示为Z(x,z),则该高度值可以表示为:
[0078] Z(x,z)=f(x,z)+D(x,z) (6)
[0079] 其中D(x,z)为点(x,z)处均值为0,方差为σ2的高斯随机变量;f(x,z)是点(x,z)周围四个邻域点的高度的平均值。
[0080] 设基本的弹坑表面为Y,则弹坑表面上任意点(x,z)的高度可以由Y(x,z)表示。对于水平面上具有相同坐标的点,其基本的弹坑表面上的高度值Y(x,z)与随机中点位移扰动表面上的高度值Z(x,z)之间存在一个差值,设该差值为e,则:
[0081] e=Y(x,z)-Z(x,z) (7)
[0082] 因此,最终生成的模型的高程值X(x,z)可以表示为:
[0083] X(x,z)=Z(x,z)+ω·e (8)
[0084] 其中,ω为权重系数。由上式可知,ω决定了基本的弹坑表面与随机中点位移扰动表面对结果模型所产生影响的大小。
[0085] 当ω=0时,X(x,z)=Z(x,z),结果模型完全由扰动曲面Z所决定;当ω=1时,X(x,z)=Y(x,z),结果模型完全由基本的弹坑表面Y所决定;当ω∈(0,1)时,若ω→0,则X(x,z)→Z(x,z),即结果模型所受的扰动较大,若ω→1,则X(x,z)→Y(x,z),即结果模型所受的扰动较小。
[0086] 通过调整权重系数ω∈[0,1]的取值,即可生成表面起伏程度各异的弹坑模型。
[0087] 实施例2
[0088] 运动物体经过地表时产生的曲线形变,以车辆的轮胎经过地面时形成的车辙为例进行详细说明。
[0089] 1.真实感车辙生成算法
[0090] 在地形场景中,车辙的外观是一条连续的有一定宽度的任意曲线。车辙的宽度、深度和位置与车轮的宽度、方向、位置、载重量和物理性质(如弹性、摩擦力等)以及土壤的物理性质(如松软程度、粘滞程度等)有密切关系。
[0091] 为了生成具有真实感的车辙模型,首先依据运动学原理,根据车轮的运动参数,运用向量的性质和直线的参数表达式确定车轮所影响到的地表的范围;然后依据力学原理,计算地表在受车轮影响的区域内的形变量,最终生成车辙模型。
[0092] a)轮胎所影响的地表范围
[0093] 轮胎影响的地表范围示意图如图4所示。设采样时间间隔为Δt,每次采样时轮胎与地面相交线段的中点为Pi,端点分别为Ai和Bi,每次采样时轮胎的速度为vi;设轮胎的宽度为l,则由图3可知,轮胎所影响的地表范围可以由四边形AiBiBi+1Ai+1(i=0,1,2,...)组成的面所决定。因此,只要确定了轮胎与地面交线段的端点,即可确定轮胎对地表的影响范围。
[0094] 已知第i次采样时轮胎的速度为vi=(xi,zi),设v⊥i为水平面上垂直于vi的向量,则:
[0095] i)若vi=0,则车辆静止,影响范围面积为0;
[0096] ii)若vi≠0,则 满足vi·v⊥i=0,即vi⊥v⊥i。
[0097] 根据v⊥i可以求得与vi垂直的且x轴分量为非负值的单位向量n⊥i为:
[0098]
[0099] 根据等式(9),可知在第i次采样时轮胎与地面相交线段所在的直线,即过点Ai和Bi的直线的参数表达式为:
[0100] P(t)=Pi+t·n⊥i,(t∈R) (10)
[0101] 式中Pi为线段AiBi的中点。根据等式(10),可以得到轮胎与地面的相交线段的两个端点Ai和Bi的坐标:
[0102]
[0103]
[0104] 其中,l为轮胎的宽度。
[0105] 根据等式(11)和(12),在获得速度vi和点Pi的前提下,即可获得轮胎与地面的相交线段的端点Ai和Bi的坐标,继而可以确定轮胎所影响的地形表面的范围。
[0106] 这种方法避免了复杂的三角函数运算,也避免了采用解析几何方法时可能出现的直线斜率不存在的情况。通过简明的向量运算与坐标运算,可以依据两个简单的输入参数获得用以确定轮胎影响范围的关键点,从而获得地形数据中由于轮胎的影响而需要改变高程值的采样点的集合。
[0107] b)受影响地形区域的高度形变量
[0108] 松软的地表受到车辆轮胎的挤压之后,其形变主要受到两种力的影响:垂直于水平方向的压缩力和水平方向的延展力。
[0109] 压缩力,与车辆的重量有关,方向垂直于受力面向下;
[0110] 延展力,由摩擦力和内聚力组成。其中摩擦力不仅与车辆的重量有关,而且与轮胎[0111] 和地表的物理性质(如轮胎与地表的接触面光滑程度等)也有关系;内聚力与土壤
[0112] 的粘滞性等性质有关。
[0113] 在对车辙进行建模时,主要考虑地形采样点在垂直于水平面方向上的形变量,根据Bekker[1]提出的Bekker土壤形变模型,可知在与轮胎的相互作用之后,地形表面的形变量可以表示如下:
[0114]
[0115] 其中,W为轮胎的载重量,l为轮胎的宽度,D为轮胎的直径,n∈(0,1)为形变指数,kc为土壤的内聚力系数,kφ为摩擦力系数。
[0116] 在轮胎与地形表面的相互作用过程中,内聚力系数kc为0,因此,等式(13)可以简化如下:
[0117]
[0118] 从等式(14)可知,受轮胎影响区域地形高程值的形变量与轮胎的载重量成正比,与轮胎的宽度以及轮胎直径的平方根成反比。
[0119] 根据等式(11)(12)和(14),即可生成具有真实感的车辙模型。
[0120] 实施例3
[0121] 重物落下时对地表造成的具有封闭曲线的形变,以人的脚印为例进行详细说明。
[0122] 1.真实感脚印生成算法
[0123] 地形场景中的脚印是相互之间相对独立的,一个脚印对地形表面的影响处于一个闭合的曲线之中,模型的位置和大小只与产生脚印的人的位置和脚的大小有关。因此,在对脚印进行建模时,重点是确定脚印模型的具有真实感的轮廓,但是,目前没有文献明确提出脚印轮廓的生成方法。
[0124] 为了使用较少的参数,通过比较简单的过程生成脚印模型,采用与脚印外观相似的椭圆形作为模拟脚印轮廓的基本形状;之后,为了使脚印模型具有真实感,在椭圆中部偏下的部分加入双曲线的形状,生成最终的脚印轮廓。在计算受脚印影响的地形区域的高度形变量时,根据产生脚印的人的重量以及与土壤物理性质有关的系数保证最终生成的脚印模型符合一般规律,具有真实感。
[0125] a)脚印模型的轮廓
[0126] 脚印模型的轮廓示意图如图5所示。生成脚印轮廓时采用局部坐标系,以人的当前位置作为脚印局部坐标系的原点,以人的前进方向作为脚印局部坐标系的y轴正方向。
[0127] 确定脚印轮廓的主要操作包括:
[0128] i)局部坐标系中椭圆焦点位置的确定
[0129] 由于局部坐标系的y轴正方向与人的前进方向一致,所以椭圆的焦点位于y轴上且关于x轴对称。椭圆的方程为:
[0130]
[0131] 在等式(15)中,a和b分别为椭圆的长半轴和短半轴。
[0132] ii)局部坐标系中椭圆方程参数的确定
[0133] 由于以椭圆作为脚印的基本轮廓,因此,椭圆的长短半轴之比应该符合正常脚印的长宽之比。经过统计和调试,作为脚印轮廓的椭圆长短半轴之比为3∶1时,生成的脚印轮廓比较接近真实情况,因此,在椭圆的方程中,
[0134] iii)局部坐标系中双曲线焦点位置的确定
[0135] 为了生成有真实感的脚印模型,在椭圆上融合双曲线的图形。双曲线的焦点位于直线 上且关于y轴对称。双曲线的方程为:
[0136]
[0137] 其中,a′和b′分别为双曲线的长半轴和短半轴。
[0138] iv)局部坐标系中双曲线方程参数的确定
[0139] 为了与椭圆平滑融合生成脚印模型,双曲线的长短半轴需要与椭圆的长短半轴建立恰当的比例关系。经过统计和调试,当双曲线的长半轴与椭圆的短半轴之比为3∶4,且双曲线的长短半轴之比为2∶3时,获得的脚印模型比较逼真。
[0140] 因此,在双曲线方程中,
[0141] v)脚印轮廓上点的取值
[0142] 通过取椭圆和双曲线两个圆锥曲线中在y值相同时更靠近y轴的点,可以获得脚印轮廓的点集。
[0143] 根据等式(15),可得椭圆上的横坐标表达式为:
[0144]
[0145] 根据等式(16),可得双曲线上的横坐标表达式为:
[0146]
[0147] 根据等式(17)和等式(18),可以得到生成脚印轮廓的算法如下:
[0148] 算法输入:无;
[0149] 算法输出:脚印轮廓点集;
[0150] 具体算法伪代码:
[0151] Generate_footprint(VertexSet&v_set)
[0152] {
[0153] float xe,xh;
[0154] for(float y=-a;y<=a;y+=Δy)
[0155] {
[0156]
[0157]
[0158] if(xe<=xh)
[0159] {
[0160] v_set.insert();
[0161] v_set.insert(<-xe,y>);
[0162] }
[0163] else
[0164] {
[0165] v_set.insert();
[0166] v_set.insert(<-xh,y>);
[0167] }
[0168] }
[0169] }
[0170] vi)局部坐标系到全局坐标系的转换
[0171] 由于通过以上步骤所建立的脚印模型的轮廓点集是在局部坐标系中生成的,在应用到地形采样点中时需要进行局部坐标系到全局坐标系的转换。
[0172] 脚印模型所在的局部坐标系的y轴正方向是地形场景中人的前进方向,可以根据人当前在地形中的位置和前进方向,通过恰当的旋转和平移操作将局部坐标系中的脚印模型轮廓点集表示转换为全局坐标系中的相应表示;另外,通过适当的缩放操作,可以表现不同大小脚印。
[0173] b)地形中受脚印影响区域的高度形变量
[0174] 受脚印影响的地形区域受力情况与受轮胎影响的地形区域类似,也是受到垂直于水平方向的压力和水平方向的延展力。
[0175] 受脚印影响的地形区域的形变主要由垂直于水平方向的压力,即人的重力所引起,因此,脚印模型的高程值形变量与产生脚印的人的重量有关,形变量可以由下式表示:
[0176] Δy=αm (19)
[0177] 在等式(19)中,α为形变系数,m为产生脚印的人的质量(单位:千克)。通过调整α的值,可以表现不同松软程度的土壤中脚印的形态。
[0178] 综上,本发明涉及的弹坑生成算法采用了半椭球面作为模拟弹坑的基本形状,同时,为了增加渲染效果的真实感,在光滑的椭球形表面添加随机扰动;在生成车辙模型时,依据产生车辙的轮胎的运动学特性以及轮胎和地表的力学特性,采用向量和直线的参数表达式方法确定轮胎所影响的地表范围,并依据轮胎和地表的物理性质确定受影响区域的高程值形变量;在生成脚印模型时,采用解析几何的方法,利用椭圆和双曲线方程构造脚印轮廓,通过设定椭圆和双曲线方程的参数构造具有真实感的脚印模型。以上三种模型既具有较高的生成效率,又具有较强的逼真度。