首页> 中国专利> 一种三维虚拟场景中车辆车辙印的动态生成方法

一种三维虚拟场景中车辆车辙印的动态生成方法

摘要

本发明提供一种三维虚拟场景中车辆车辙印的动态生成方法,基于程序化地形细节纹理合成原理,通过材质分层实现了在三维虚拟场景中复杂地形的地表材质分布的标记和提取,并在此基础上综合运用可编程渲染管线技术和decal技术,实现了车辆运动过程中随地形质地变化而动态生成相应的车辙印效果,解决了与地表材质纹理的融合问题。本发明的三维虚拟场景中车辆车辙印的动态生成方法能够实时体现不同车辆在不同地面行驶产生的车辙印效果,具有很大的灵活性和真实性。

著录项

  • 公开/公告号CN104680568A

    专利类型发明专利

  • 公开/公告日2015-06-03

    原文格式PDF

  • 申请/专利权人 中国人民解放军装甲兵工程学院;

    申请/专利号CN201510104347.5

  • 发明设计人 梁强;杜君;

    申请日2015-03-10

  • 分类号

  • 代理机构北京中誉威圣知识产权代理有限公司;

  • 代理人龚镇雄

  • 地址 100072 北京市丰台区杜家坎21号院

  • 入库时间 2023-12-18 09:13:55

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-03-10

    未缴年费专利权终止 IPC(主分类):G06T13/20 授权公告日:20180529 终止日期:20190310 申请日:20150310

    专利权的终止

  • 2018-05-29

    授权

    授权

  • 2015-07-01

    实质审查的生效 IPC(主分类):G06T13/20 申请日:20150310

    实质审查的生效

  • 2015-06-03

    公开

    公开

说明书

技术领域

本发明属于三维可视化仿真领域,尤其涉及战场环境仿真中的动态地形仿真。

背景技术

动态地形仿真主要研究军事系统与虚拟场景中地形的相互作用,在仿真中军事系统作用于三维地形,通过对地形数据库实时修改体现地形的动态变化,动态地形允许在仿真过程中对地形状态进行修改,例如作战过程中炮弹击中地产生的弹坑,车辆行驶产生的车辙印等现象,能够真正实现仿真实体与环境的交互,对提高三维虚拟场景的逼真度具有重要的作用。

目前动态地形主要采用网格变形(deform)、动态贴图(decal)或两者相结合的方式来实现,其中网格变形主要用于面积较大的动态地形(如弹坑);对于车辙印这类面积较小的动态地形一般采用decal技术在地形表面生成一个贴合网格,并映射相应的纹理来实现,这种方法能够在视觉上生成较为逼真的车辙印记,但存在生成车辙印记单一,不能反映不同车辆在不同质地的地表生成车辙印的差别。

发明内容

为解决上述问题,本发明提供一种三维虚拟场景中车辆车辙印的动态生成方法,能够体现不同车辆在不同地面行驶产生的车辙印效果,具有很大的灵活性和真实性。

本发明的三维虚拟场景中车辆车辙印的动态生成方法,其包括:

S1:获取车辆在行驶过程中处于活动状态的效果发生器的空间坐标,所述车辆设有四个效果发生器,且四个效果发生器的坐标系原点分别位于车辆的左右前轮和左右后轮与地面的接触点上,四个坐标系的坐标轴方向均与车辆的本身坐标系方向一致;

S2:根据>w=α×(x-x0)h=α×(y-y0)>将S1中获取的效果发生器的空间坐标转换为场景材质分布灰度图的像素坐标,并获得该像素坐标对应的像素灰度值;

其中(x,y)为地形的空间坐标,(w,h)为场景材质分布灰度图的像素坐标,x0为地形网格在世界坐标系x方向上最小值,y0为地形网格在世界坐标系y方向上最小值;所述场景材质分布灰度图是根据地形基础纹理创建的256阶的灰度图,用于标记场景中地表材质的分布;

S3:根据S2获得的像素灰度值的字节位与地表材质的对应关系获得地表材质;所述像素灰度值由一个8位的字节来表示,字节中的每1位对应一个地表材质,对应关系预先设定;

S4:根据所述车辆的名称和所述地表材质的名称在材质效果矩阵中获取对应的材质效果;

所述材质效果矩阵为M(n+1)×(m+1),是以excel文件的形式创建的(m+1)×(n+1)矩阵;其中n为地表材质数,m为车辆类型数,mij(i=2,3,m+1j=2,3,…n+1)为mi1车辆在m1j地表材质上生成的材质效果名称;

S5:对于处于活动状态的每个效果发生器,当其移动距离大于本身长度时,动态创建一个贴图decal,且所述decal的大小、位置和方向取该效果发生器的大小、位置和方向,所述decal的效果为S4中获得的材质效果,对所述材质效果进行像素渲染生成车辙印。

本发明的三维虚拟场景中车辆车辙印的动态生成方法还包括对生成的decal数量进行控制的步骤:

为每一个车辆创建一个decal队列,用于存储车辆行驶过程中动态创建的decal,同时绑定一个计时器,计时器的值表示相应decal队列中decal的寿命;

当decal队列中的decal数量等达到该decal队列的设定长度时,按照先入先出的原则将位于队列前端且与新创建的decal等量的decal删除;

当车辆停止运动时,绑定于该decal队列的计时器开始计时,当车辆开始运动时,计时器清零;

当场景中所有decal队列的decal总数量达到设定阈值时,对所有decal队列中时器值最大的队列中位于该队列前二分之一的decal由前到后依次逐个删除,同时将该队列的计时器清零。

本发明的三维虚拟场景中车辆车辙印的动态生成方法还包括对地表材质的基础纹理、地表细节纹理和生成的车辙印进行融合处理的步骤:

步骤a:使用Shader语言在GPU顶点处理器中计算基础纹理和地表细节纹理的融合因子:

设置基础纹理与地表细节纹理完全融合的距离dmin、最大融合距离dmax以及对应的融合因子bmin和bmax,则当前车辙印中基础纹理和地表细节纹理的融合因子b的计算公式为:

>b=bminddminbmaxddmaxbmin+d-dmindmax-dmin(bmax-bmin)dmax>d>dmin>

其中d为地形网格顶点在xy水平面上的投影与视点在xy水平面上投影的距离;

步骤b:使用Shader语言在GPU像素处理器中对地形的基础纹理和地表细节纹理进行逐像素的颜色叠加:

在像素渲染阶段,分别创建地形基础纹理、所有细节纹理和分布灰度图的采样器,根据地表材质与像素灰度值的字节位之间的对应关系由低位到高位的顺序依次对像素颜色进行叠加处理,计算公式如下:

P'=P1×a1+P2×a2+…Pn×an

P=P0×(1-b)+P'×b

其中,P表示地形纹理像素颜色值,P'表示细节纹理像素颜色值,Pi表示第i个材质的纹理颜色,ai表示场景材质分布灰度图的像素灰度值字节第i位的值,P0表示地形基础纹理的颜色,b表示步骤a计算的融合因子;

步骤c:将车辙印的decal纹理与地形纹理进行融合:

为decal纹理增加一个对应的透明度灰度图,将该透明度灰度图与车辙印纹理进行叠加,计算公式如下:

>Pe=P+Pa255×Pd>

其中Pe为最终的地形纹理像素颜色值,P为步骤b计算的地形纹理像素颜色值,Pa为透明度灰度图的灰度值,Pd为decal纹理像素颜色值。

效果较佳的,S1中:当车辆转向时,四个效果发生器为活动状态;当车辆向前运动时,后方的两个效果发生器为活动状态;车辆向后运动时,前方两个效果发生器为活动状态。

效果较佳的,S3中像素灰度值对应的灰度图阶数为256阶、分辨率为W×H,且满足>W/H=X/YW/H=α;>

其中地形的长度为X、宽度为Y,α为标记精度,表示能够识别地面材质属性的最小单位,从低位到高位分别表示由下至上的图层顺序。

效果较佳的,S4中:车辙印效果包括材质属性、漫反射纹理、凹凸纹理、纹理重复度和伴随效果;

其中所述伴随效果包括扬尘和声音;所述材质属性包括:漫反射光、高光、自发光、透明度。

有益效果:

本发明克服了三维场景中生成车辙印记单一问题,能够在车辆行驶过程中实时体现不同车辆在不同地面产生的车辙印效果:

通过为三维虚拟场景中的地形添加细节纹理层,并对地形表面材质的分布进行标记;建立地形表面材质名称为列、车辆模型名称为行的材质效果矩阵,车辆在行驶过程中实时通过细节纹理层来获取地形表面材质,进而在材质效果矩阵中查询到该车辆与当前所在位置的地形表面材质对应的元素,根据元素的值(效果名称),确定生成的车辙印效果;

车辆在虚拟环境运动过程中,根据车辆的运动速度、方向和轮胎宽度实时创建decal,并以队列结构进行存储,当队列长度达到指定的长度后,按照先进先出的原则对decal进行删除,确保场景资源的消耗控制在合理的水平。decal生成后在GPU(图形处理器)渲染流水线中的光栅化阶段通过可编程像素着色器对decal纹理、地面基础纹理和地面细节纹理进行像素融合处理,确保车辙印与地形的无缝结合。

本发明还可以与粒子系统进行结合使用,在生成车辙印的同时产生扬尘效果,进一步提升虚拟场景的逼真性。

附图说明

图1场景地表材质与灰度图的对应关系示意图;

图2场景地表材质分布灰度图;

图3材质效果定义示意图;

图4材质效果矩阵示意图;

图5效果发生器定义示意图;

图6地形纹理融合过程示意图;

图7车辙添加alpha通道融合示意图。

具体实施方式

本发明的三维虚拟场景中车辆车辙印动态生成方法具体如下:

步骤1:定义三维虚拟场景中整个地形地面的材质属性及其分布。使用图层对地表材质分布进行标记,一个图层对应一种地表材质,如图1所示。

具体的方法为:

步骤11:根据地形的大小创建一幅灰度为256阶、分辨率为W×H的灰度图,其中X为地形的长度、Y为地形的宽度,α为标记精度,表示能够识别地表材质属性的最小单位,则满足下式:

W/H=X/Y

W/X=α

256阶的灰度图每个像素值由一个8位的字节来表示,字节中的每1位对应一个地表材质,采用这种方式进行标记,便于发挥GPU的单指令多数据并行处理能力,提高纹理像素融合处理的效率,其中从低位到高位分别表示由下至上的图层顺序。一幅256阶灰度图最多可标记8种材质的分布情况,实际应用中可以增加表示每个像素颜色的字节数来增加材质数量,例如RGBA四通道的图像,每个像素由32位字节来表示,即可支持32种材质。

步骤12:根据地形的基础纹理(Base Texture,映射到地形网格的纹理,通常为航空影像图,)添加地表材质,每一种地表材质表示一种地表质地,如草地、岩石、水泥等,对于每一种地表材质用一幅无缝贴图(贴图的左右边缘和上下边缘是可以无缝拼接,拼接后没有明显的重复感)作为漫反射纹理,这里称之为地表细节纹理,用于步骤4的纹理融合处理,然后在灰度上对所有的地表材质分布进行标记,地形的空间坐标(x,y)与灰度图的像素坐标(w,h)的转换关系如下:

w=α×(x-x0)

h=α×(y-y0)

其中,x0为地形网格在世界坐标系x方向上最小值,y0为地形在世界坐标系y方向上最小值,对于每一种地表材质,使用灰度图像素的灰度值字节位进行标记,1表示该图层对应的材质有效,0表示该图层对应的材质无效,生成的场景地表材质分布灰度图如图2所示。所述场景材质分布灰度图是根据地形基础纹理创建的256阶的灰度图,用于标记场景中地表材质的分布。

步骤2:定义材质效果矩阵。

具体的方法为:

步骤21:定义车辙印效果,使用xml文件对车辙印生成效果进行定义,内容包括材质属性(漫反射光、高光、自发光、透明度)、漫反射纹理、凹凸纹理以及细节纹理重复度等;同时也可以添加一些伴随效果(扬尘、声音),以提高逼真度,如图3所示。

步骤22:如果虚拟环境中的地表材质数为n,车辆类型数为m,则以excel文件的形式创建一个(m+1)×(n+1)的矩阵M(n+1)×(m+1),其中第1行m1j(j=2,3,…n+1)为步骤12中添加的地表材质名称,第1列mi1(i=2,3,…m+1)为车辆的名称,mij(i=2,3,…m+1j=2,3,…n+1)为步骤21定义的mi1车辆在m1j地表材质上生成的材质效果名称,如图4所示。

步骤3:在车辆行驶过程中实时获取车辆所处位置的地表材质,在材质矩阵中找到对应的材质效果,使用decal技术根据车辆运动速度、车轮(履带)宽度在地形的表面动态创建车辙印。

具体方法为:

步骤31:在三维虚拟场景加载车辆模型时,定义效果发生器。为每个车辆模型定义四个效果发生器,四个效果发生器的坐标系原点分别位于车辆的左右前轮和左右后轮与地面的接触点上,各坐标轴方向与车辆的坐标系方向一致,效果发生器的大小与车轮的宽度一致,并与对应的车轮进行绑定,使其在车辆运动过程中,与车轮中心位置的相对关系保持不变,如图5所示,其中车辆的坐标系定义为车体的中心位置为原点,车头方向为Y向,垂直向上方向为Z向,车体右方向为X向。

步骤32:获取车辆所处位置的地表材质。车辆运动过程中,主要作直线运动,为了避免前后效果发生器生成的车辙印重复,造成资源的浪费,根据车辆的运动方向,当车辆转向时,将四个效果发生器全部设置为活动状态;当车辆向前运动时,将后方的两个效果发生器设置为活动状态,车辆向后运动时,将前方两个效果发生器设置为活动状态;在车辆运动过程中,首先获取处于活动状态的效果发生器的位置,按照步骤12的坐标转换的逆操作将空间坐标转换为像素坐标,获得该像素坐标处的像素灰度值,并根据像素的灰度值字节位与地表材质的对应关系(图1)获得地表材质。

步骤33:根据车辆的名称和步骤32中获得的地表材质名称在步骤21中生成的材质效果矩阵中查找对应的材质效果定义。

步骤34:根据车辆的运动状态实时创建车辙印decal。根据车辆的运动速度来控制decal创建的频率,对于处于活动状态的每个效果发生器,当期其移动距离大于本身长度时,动态创建一个decal,decal的大小,位置、方向由发生器的大小、位置和方向确定,decal的效果(包括材质、纹理贴图、伴随的声音和扬尘)由步骤33中获得的材质效果定义确定,对材质效果进行像素渲染生成车辙印。

步骤35:对生成的decal数量进行控制,确保场景资源的消耗控制在合理的水平。为场景中的每一个车辆创建一个decal队列,用于存储车辆行驶过程中动态创建的decal,同时绑定一个计时器。当场景中所有decal队列中的decal数量等达到队列长度(队列长度由用户根据计算机硬件配置和三维虚拟场景的复杂度确定)时,按照先入先出的原则,根据新创建的decal的数量,将位于队列前端的等量的decal进行删除;当车辆停止运动时,计时器开始计时,车辆开始运动后,计时器清零,计时器的值表示相应队列中decal在场景中的寿命,计时器的值越大,说明该队列中的decal产生的时间越长,当场景中所有decal队列的decal总数量达到规定的阈值时,对计时器值最大的队列中位于队列前二分之一的decal由前到后依次逐个删除,同时该队列的计时器清零,以控制场景中总的decal数量。

步骤4:车辙印与地表纹理的融合处理。

为了实现车辙印与地面纹理的无缝结合,采用可编程管线技术对步骤12中的地形基础纹理、地表细节纹理和车辙印进行纹理的叠加处理。

可编程渲染管线允许对图形处理器进行编程控制。为开发人员提供了直接操纵GPU内部数据处理过程的功能,使开发者能够使用Shader(着色)语言编写着色程序直接操纵GPU内部数据处理过程,实现对渲染顶点和像素的处理。通过对可编程图形渲染管线中的顶点处理器编程和像素处理器编程可以实现多种灵活的应用,包括:任意复杂的光照模型,多纹理贴图、并行计算等。该功能可以用于地表纹理与车辙印纹理的融合处理,具体方法为:

步骤41:使用Shader语言在GPU顶点处理器中计算基础纹理和细节纹理的融合因子,实现基础纹理和细节纹理的自然过渡。首先设置基础纹理与细节纹理完全融合的距离dmin,最大融合距离dmax,以及对应的融合因子bmin和bmax,以线性的方式实现创建过渡区,则当前车辙印中基础纹理和细节纹理的融合因子的计算公式为:

>b=bminddminbmaxddmaxbmin+d-dmindmax-dmin(bmax-bmin)dmax>d>dmin>

其中d为地形网格顶点在xy水平面(大地水平面)上的投影与视点在xy水平面上投影的距离。

步骤42:使用Shader语言在GPU像素处理器中对地形的基础纹理和细节纹理进行逐像素的颜色叠加。进入像素渲染阶段后,分别创建地形基础纹理、所有细节纹理和场景材质分布灰度图的采样器,按照步骤11定义的地表材质与灰度图字节位的对应关系,按照由低位到高位的顺序依次对像素颜色(包括RGBA四个颜色通道)进行叠加处理,如图6所示,计算公式如下:

P'=P1×a1+P2×a2+…Pn×an

P=P0×(1-b)+P'×b

其中,P表示地形纹理像素颜色值,P'表示细节纹理像素颜色值,Pi表示第i个材质的纹理颜色,ai表示灰度图灰度值字节第i位的值,P0表示基础纹理的颜色,b表示步骤41计算的融合因子。

步骤43:将车辙印decal纹理与地形纹理进行融合。目前的三维图形渲染技术的Z缓冲(Z-Buffer)消隐算法能够很好地解决decal网格与地形网格在Z方向上融合,对于水平面X-Y上的边缘融合需要通过纹理过渡的方法来实现,即为decal纹理增加一个对应的透明度灰度图,在步骤42像素叠加的基础上,对车辙印纹理进行叠加,计算公式如下:

>Pe=P+Pa255×Pd>

其中Pe为最终的地形纹理像素颜色值,P为步骤42计算的地形纹理像素颜色值,Pa为透明度灰度图的灰度值,Pd为decal纹理像素颜色值。最终实现的自然过渡效果如图7所示。

当然,本发明还可以有其他多种实施例,例如舰船在水面行驶时产生的航迹效果,以及本发明提到的用于车辙印效果增强的扬尘效果和行驶过程中的声音效果等。在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号