虚拟现实三维道路的生成方法与流程

文档序号:12604481阅读:586来源:国知局
虚拟现实三维道路的生成方法与流程

本申请涉及计算机虚拟现实技术领域,尤其涉及一种虚拟现实三维道路的生成方法。



背景技术:

虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统,该技术利用计算机生成一种模拟环境,是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。

目前虚拟现实技术被广泛应用在三维游戏、模拟演练等应用场景中。在虚拟现实技术中,常常需要对虚拟的环境进行塑造和渲染,使得虚拟环境尽量逼真。

在三维虚拟环境的渲染显示技术中,虚拟场景中通常会需要显示道路,这些道路可以用固定的道路模型铺建,也可以在地面上利用多重纹理,采用纹理混合的方式做出道路效果。所述多重纹理就是在渲染一个多边形的时候可以用到多张纹理图。把多张纹理图进行一些颜色的操作,可以达到一些虚拟显示的效果。

由于模型毕竟是固定的,而场景中需要用到的道路多种多样,不可能所有的道路都要美术人员去按照需求建造模型。而且建造的模型因为地形的高低起伏不同,大部分的道路模型无法复用。因此,在现有技术中的大部分的三维虚拟显示技术中,大都是采用多重纹理和纹理混合的方式实现道路效果的显示。具体是采用编辑地面网格和编辑地面纹理的方式生成三维场景的地面,而道路作为地面的一部分,在编辑地面纹理的时候同时编辑完成。在这个过程当中会使用到多层纹理,各层纹理根据地形的纹理混合权重值进行纹理混合得到想要的地形面貌,其中包括道路。

例如图1为现有技术中通过多重纹理混合的技术方法所构建的三维场景中的道路的效果图。

所述多重纹理的混合公式为:

FinalColor=TexelColor1×TexelColorFactor1+TexelColor2×TexelColorFactor2+...+TexelColorN×TexelColorFactorN

上述公式中,所述FinalColor为地面最终显示的颜色,假设有N层纹理层,不同的纹理层可以显示不同的纹理效果,所述TexelColorN为第N层的纹理颜色,所述TexelColorFactorN为第N层纹理的纹理混合权重。

所述通过调整TexelColorFactor1、TexelColorFactor2等每一层纹理的纹理混合权重,调整对应纹理层在FinalColor所占的比例。通过顶点纹理UV采样第N张纹理获得TexelColorFactorN值。

但是,上述利用多重纹理进行纹理混合得到地面道路,需要考虑到道路纹理的多样性,也增加了地形纹理所需的数量。而三维场景中地面是无处不在的,这就意味着增加了地面资源的复杂度。地面渲染时所消耗的计算资源也增加了一个数量级。美术人员在编辑地面时需要额外考虑到道路的实现,增加了美术人员编辑场景地面的难度。总之这种方法需要耗费大量的计算资源,渲染效率低,实现难度大。

当然,现有技术中仍然有一小部分的方案仍旧采用道路模型的方法来编辑虚拟现实中三维场景中的道路。例如图2为现有技术中的一种通过道路模型构建三维场景内的道路的效果图。参见图2,这种采用模型道路的方式的缺点是,所述道路模型是预先就做好的,而地面的地形往往是起伏不定的,该道路模型不可能正好贴合所要结合的地面,因此有可能出现道路模型和地面出现缝隙的情况,仿真的效果不佳。



技术实现要素:

有鉴于此,本发明的主要目的是提供一种虚拟现实三维道路的生成方法,能够使三维道路贴合三维地面,在保证仿真效果的前提下,降低计算资源,提高渲染效率。

本发明的技术方案是这样实现的:

一种虚拟现实三维道路的生成方法,包括:

确定出符合道路轮廓的道路基本网格;

基于所述道路基本网格,在该道路基本网格所在的地面网格范围内,采用网格动态分割方法生成贴合地面的三维道路网格;

基于所述三维道路网格渲染三维道路,得到与三维地面贴合的三维道路。

在所述方法的一种优选实施例中,所述采用网格动态分割方法生成贴合地面的三维道路网格,具体包括:

针对所述道路基本网格中的每个道路分段网格,做后述处理:针对该道路分段网格的每个边做垂直于水平面的投影,确定所述投影与地面网格的交点;在垂直于水平面的俯视图中,将落入该道路分段网格内的地面单元网格保留,在该道路分段网格的范围内,按照该道路分段网格的顶点、所述投影与地面网格的交点、以及地面网格的顶点,划分三角形;

将所述保留的地面单元网格和所划分的三角形组成的网格作为道路网格,将该道路网格的各顶点的高度设置为与该顶点相同水平坐标点的地面高度,得到贴合地面的三维道路网格。

在所述方法的一种优选实施例中,所述确定出符合道路轮廓的道路基本网格,具体包括:

选取道路的路径的关键点;

根据所述关键点确定路径的插值点;

针对每个关键点和插值点确定延展方向,沿所述延展方向,向所述关键点或插值点的两侧延展指定的道路宽度,得到顶点;沿着延展方向和道路的路径分段连接所述顶点,得到道路的基本网格。

在所述方法的一种优选实施例中,所述根据所述关键点确定路径的插值点,具体包括:

确定所述每个关键点的前插值辅助值和后插值辅助值;

根据设定的插值步长和各关键点的位置,确定每两个相邻关键点之间需要插值点的个数M;

针对每两个相邻的关键点,做后述处理:将该两个关键点作为端点,确定该两个相邻端点的中间插值点的位置;再以新的中间插值点和原端点作为端点,继续确定每两个相邻端点的中间插值点的位置,重复本步骤,直到两个相邻关键点之间的插值点的个数达到M。

在所述方法的一种优选实施例中,所述确定所述每个关键点的前插值辅助值和后插值辅助值,具体为:采用埃尔米特插值方法确定所述每个关键点的前插值辅助值和后插值辅助值。

在所述方法的一种优选实施例中,所述确定两个相邻端点的中间插值点的位置,具体包括:

采用如下公式确定所述中间插值点的位置:

Pos=Q1.pos×x+Q1.forw×y+Q2.back×z+Q2.pos×w

其中,所述Pos为待求的中间插值点的位置,Q1.pos为当前端点的位置,Q2.pos为下一端点的位置,Q1.forw为当前端点的前插值辅助值,Q2.back为下一端点的后插值辅助值,x、y、z、w为插值参数,所述插值参数的取值在0到1之间,具体取值根据本中间插值点的排序确定。

在所述方法的一种优选实施例中,所述确定延展方向,具体包括:

确定本关键点或插值点附近两点的位置,该两点的位置相减得到本关键点或插值点的切线方向,将该切线方向的垂直方向作为本关键点或插值点的延展方向。

在所述方法的一种优选实施例中,所述基于所述三维道路网格渲染三维道路,具体包括:选取道路的纹理,将所述纹理渲染到所述三维道路网格上。

与现有技术相比,本发明中没有采用现有技术中的那种计算量巨大的多重纹理混合的技术方案,而是通过针对道路的轮廓划分出基本的道路网格,然后在此基础上采用网格动态分割算法生成贴合地面的三维道路网格,最后基于所述三维道路网格渲染三维道路,得到与三维地面贴合的三维道路,其虚拟仿真的效果,比现有技术所述的通过道路模型构建三维场景内道路的方法要强很多,同时本发明的计算量又比现有技术所述多重纹理混合的技术要小很多,因此可以兼顾现有技术两种方案的优点,在保证仿真效果的前提下,降低计算资源,提高渲染效率。

附图说明

图1为现有技术中通过多重纹理混合的技术方法所构建的三维场景中的道路的效果图;

图2为现有技术中的一种通过道路模型构建三维场景内的道路的效果图;

图3为本发明所述虚拟现实三维道路的生成方法的一种流程示意图;

图4所示为一种选取道路的路径的关键点的示意图;

图5为一种连接道路的路径的关键点并确定其路径的示意图;

图6所示为一种道路的基本网格示意图;

图7所示为根据本发明所述方法生成的一种道路基本网格的示意图;

图8为一种含有道路基本网格和地面网格的俯视图;

图9为图8所示的地面网格和道路分段网格在划分三角形后的一种示意图;

图10为图7所示的道路基本网格经过动态分割后成为三维道路网格的一种示意图。

具体实施方式

下面结合附图及具体实施例对本发明再作进一步详细的说明。

本发明的核心思想是:快速地生成贴合地面地形的道路网格,使道路和地面编辑分开,降低地面编辑的难度又不限制地面的多样性。同时提高道路的仿真效果,避免出现道路和地面出现缝隙的情况。

图3为本发明所述虚拟现实三维道路的生成方法的一种流程示意图,参见图3,该方法包括:

步骤301确定出符合道路轮廓的道路基本网格。

步骤302、基于所述道路基本网格,在该道路基本网格所在的地面网格范围内,采用网格动态分割算法生成贴合地面的三维道路网格。

步骤303、基于所述三维道路网格渲染三维道路,得到与三维地面贴合的三维道路。

在一种优选实施例中,所述步骤301中,所述确定出符合道路轮廓的道路基本网格,具体可以包括如下步骤311至步骤313:

步骤311、选取道路的路径的关键点。此处,关键点的选取需要人工来参与选取,由美工人员根据需要的道路路径进行选取。

如图4所示为一种选取道路的路径的关键点的示意图。在本图4中,工作人员选取了五个关键点Q0、Q1、Q2、Q3、Q4。图5为一种连接道路的路径的关键点并确定其路径的示意图,其中D0为关键点Q0的切线方向,D4为关键点Q4的切线方向,所述切线方向在后述的确定延展方向时需要用到。

步骤312、根据所述关键点确定路径的插值点。

在一种进一步的优选实施例中,所述根据所述关键点确定路径的插值点,具体包括如下步骤a1至步骤a3:

步骤a1、确定所述每个关键点的前插值辅助值和后插值辅助值。具体的,可以采用埃尔米特插值方法确定所述每个关键点的前插值辅助值和后插值辅助值。

所述埃尔米特插值方法,即:设函数y=f(x)在区间[a,b]上有定义,且已知它在n+1个互异点,要求函数与被插值函数在某些节点或全部节点上与f(x)的导数值也相等,这样的插值函数能更好地逼近函数f(x),这种插值问题称为埃尔米特插值问题,解决这个插值问题的函数称为埃尔米特插值函数。

步骤a2、根据设定的插值步长和各关键点的位置,确定每两个相邻关键点之间需要插值点的个数M。所述设定的插值步长可以是人工输入的插值步长,相当于所述个数M可以是由人工来确定。

步骤a3、针对每两个相邻的关键点,做后述处理:将该两个关键点作为端点,确定该两个相邻端点的中间插值点的位置;再以新的中间插值点和原端点作为端点,继续确定每两个相邻端点的中间插值点的位置,重复本步骤,直到两个相邻关键点之间的插值点的个数达到M。

在一种优选实施例中,所述确定两个相邻端点的中间插值点的位置,具体包括:

采用如下公式确定所述中间插值点的位置:

Pos=Q1.pos×x+Q1.forw×y+Q2.back×z+Q2.pos×w

其中,所述Pos为待求的中间插值点的位置,Q1.pos为当前端点的位置,Q2.pos为下一端点的位置,Q1.forw为当前端点的前插值辅助值,Q2.back为下一端点的后插值辅助值,x、y、z、w为插值参数,所述插值参数的取值在0到1之间,具体取值根据本中间插值点的排序确定。

步骤313、针对每个关键点和插值点确定延展方向,沿所述延展方向,向所述关键点或插值点的两侧延展指定的道路宽度,得到顶点;沿着延展方向和道路的路径分段连接所述顶点,得到道路的基本网格。

所述确定延展方向,是指确定每个关键点和插值点的延展方向,针对每个关键点或插值点,其确定方法具体包括:

确定本关键点或插值点附近两点的位置,该两点可以是该当前关键点或插值点前后相邻的关键点或插值点,该两点的位置相减得到本关键点或插值点的切线方向,将该切线方向的垂直方向作为本关键点或插值点的延展方向。

如图6所示为一种道路的基本网格示意图。参见图6,从每个关键点或插值点出发,向该点两侧沿着所述延展方向延展指定的道路宽度,得到顶点。该道路宽度可以是人工预先输入的宽度。最后,沿着延展方向和道路的路径分段连接所述顶点,得到道路基本网格。例如本实例中,所述道路基本网格中的每一个四边形的单元格都是一个道路分段网格。

在一种优选实施例中,所述步骤302所述的采用网格动态分割方法生成贴合地面的三维道路网格,具体包括:

针对所述道路基本网格中的每个道路分段网格,做后述处理:针对该道路分段网格的每个边做垂直于水平面的投影,确定所述投影与地面网格的交点;在垂直于水平面的俯视图中,将落入该道路分段网格内的地面单元网格保留,在该道路分段网格的范围内,按照该道路分段网格的顶点、所述投影与地面网格的交点、以及地面网格的顶点,划分三角形;

将所述保留的地面单元网格和所划分的三角形组成的网格作为道路网格,将该道路网格的各顶点的高度设置为与该顶点相同水平坐标点的地面高度,得到贴合地面的三维道路网格。

下面结合附图,进一步说明所述的网格动态分割方法。

如图7所示为根据本发明所述方法生成的一种道路基本网格的示意图,其中每一个四边形都是一个道路分段网格。在做网格动态分割方法之前,道路基本网格只是一个大体的道路网格,该道路网格与起伏不定的地面网格没有完全贴合,而网格动态分割的目的就是要让道路网格与起伏不定的地面网格贴合。

图8为一种含有道路基本网格和地面网格的俯视图。该图8中,所述俯视图是垂直于水平面的俯视图,其中粗线条的一个单元格801是道路基本网格中的一个道路分段网格,细线条的网格是地面网格。为了简洁清楚地表示本发明的方案,图8中只显示了一个道路分段网格,其它的道路分段网格在本图8中暂时省略掉,但是其它道路分段网格也都要采用本发明所述的网格动态分割方法进行处理。

下面针对所述道路基本网格中的每个道路分段网格,都要做后述处理:

首先,如图8所示的道路分段网格801,针对该道路分段网格的每个边做垂直于水平面的投影,确定所述投影与地面网格的交点,如图8中的黑点为所述交点。

然后,在垂直于水平面的俯视图中,将落入该道路分段网格801内的地面单元网格保留。例如在图8中,每一个地面单元网格都是一个三角形,那么需要判断都有哪几个三角形完整地落入了所述道路分段网格801的四边形内,此处只有一个三角形的地面单元网格800完整地落入了所述道路分段网格801内,所以需要将该地面单元网格800保留作为道路网格的一部分。

其他与所述道路分段网格801四个边的投影相交的地面网格,需要重新划分三角形,以很好的贴合地面。具体是按照该道路分段网格801的顶点、所述投影与地面网格的交点、以及地面网格的顶点,划分三角形,如图9为图8所示的地面网格和道路分段网格在划分三角形后的一种示意图。

在划分三角形之后,将所述保留的地面单元网格和所划分的三角形组成的网格作为道路网格,从而使得原道路分段网格由一个平板的四边形,变成了多个三角形组成的道路网格,然后将该道路网格的各顶点的高度设置为与该顶点相同水平坐标点的地面高度,从而得到贴合地面的三维道路网格。

在针对图7所示的道路基本网格中的每一个四边形的道路分段网执行所述动态分割方法后,可以得到如图10所示的三维道路网格,该三维道路网格可以完全贴合起伏不定的地面网格。

最后,基于所述三维道路网格渲染三维道路,得到与三维地面贴合的三维道路。所述基于所述三维道路网格渲染三维道路,具体包括:选取道路的纹理,将所述纹理渲染到所述三维道路网格上,最终生成了与三维地面紧密贴合的三维道路,其虚拟仿真的效果,比现有技术所述的通过道路模型构建三维场景内道路的方法要强很多,同时本发明的计算量又比现有技术所述多重纹理混合的技术要小很多,因此可以兼顾现有技术两种方案的优点,在保证仿真效果的前提下,降低计算资源,提高渲染效率。

另外,本发明的每一个实施例可以通过由数据处理设备如计算机执行的数据处理程序来实现。显然,数据处理程序构成了本发明。此外,通常存储在一个存储介质中的数据处理程序通过直接将程序读取出存储介质或者通过将程序安装或复制到数据处理设备的存储设备(如硬盘和或内存)中执行。因此,这样的存储介质也构成了本发明。存储介质可以使用任何类型的记录方式,例如纸张存储介质(如纸带等)、磁存储介质(如软盘、硬盘、闪存等)、光存储介质(如CD-ROM等)、磁光存储介质(如MO等)等。

因此本发明还公开了一种存储介质,其中存储有数据处理程序,该数据处理程序用于执行本发明上述方法的任何一种实施例。

另外,本发明所述的方法步骤除了可以用数据处理程序来实现,还可以由硬件来实现,例如,可以由逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌入微控制器等来实现。因此这种可以实现本发明所述方法的硬件也可以构成本发明。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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