一种同种异态森林场景构建方法及系统与流程

文档序号:12472251阅读:181来源:国知局
一种同种异态森林场景构建方法及系统与流程

本发明涉及场景构建领域,特别是涉及一种同种异态森林场景构建方法及系统。



背景技术:

森林是自然界中常见的场景,在各种室外大规模场景中扮演着不可或缺的角色。在计算机领域,随着虚拟现实、3D游戏等技术的不断发展,用户对虚拟场景真实感的需求也与日俱增,这导致对构建大规模的虚拟可视化森林场景的需求也与日俱增。但由于树木的形态多样、结构复杂,建模的难度和成本随之大大提高;同时,由于森林场景中树木的数量多,系统输入的数据量非常庞大,导致渲染的效率随之大幅下降,很难在应用中得到流畅的表达。这与用户日益提高的体验需求是相违背的。

目前主流生成大规模森林场景的方法是基于单棵树木规则的编辑,通过对编辑后的参数进行随机扰动,从而生成同种异态的树木模型。然而这种方法有以下不足之处:

(1)建模周期长:由于树木本身结构的复杂性,建模人员往往需要较长时间才能构建一批形态各异的大规模森林场景。

(2)成本高:建模人员需要较长时间来学习了解树木建模规则中各参数的含义和树木建模软件操作技术,即学习成本较高。甚至需要很多美工人员费时费力才能把森林建模的任务完成,这样势必造成建模的(人力)成本也较高。

(3)多样性差:目前游戏与VR均采用以整棵树木模型为单位的重用方式来生成大规模森林,虽然足够轻量性,但是树木形态的多样性则严重不足,所以其美观度与真实性均十分欠缺。

(4)渲染计算慢:虽然采用了基于重用的轻量级树木建模,降低了网络传输的开销,但是到了网页客户端渲染时,每个树木模型仍然只能用独立的密集多边形面片来表示,其所需要渲染的数据量与计算量却依然没有降低,那么Web3D大规模森林的在线渲染的效率依然很低,给用户的体验也较差。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种。

本发明的目的可以通过以下技术方案来实现:

本发明的目的是提供一种能够对大规模森林进行快速建模和高效渲染的同种异态森林场景构建方法和系统。

为实现上述目的,本发明提供了如下方案:

一种同种异态森林场景构建方法,所述方法包括:

采集单棵树木的3D模型;

采用圆环切割法将所述模型骨架化,得到所述模型的骨架化数据,在所述骨架化数据中,每个枝干是以多个带半径和方向的圆环序列表示的;

对所述模型进行分层;

根据所述骨架化数据计算得到层内形态描述参数和相邻层间的传递规则参数;

计算各层内形态描述参数的高斯分布值和方差;

计算各相邻层间的传递规则参数的高斯分布值和方差;

根据所述层内形态描述参数和所述相邻层间的传递规则参数的高斯分布值和方差对所述层内形态描述参数和所述相邻层间的传递规则参数进行随机扰动,得到扰动后的参数值;

根据所述扰动后的参数值生成不同姿态的树干,所述不同姿态的树干构成所述模型的组件集;

选择所述组件集中的枝干组合生成所述森林场景中的树木。

可选的,所述采用圆环切割法将所述模型骨架化,得到所述模型的骨架化数据,具体包括:

采用不同方向的平面对所述模型指定位置的三角面片和与所述三角面片相邻接的面片进行切割;

将一次切割中得到的三角面片上的折线段相连接,得到封闭的折线回路;

判断所述折线回路是否与圆形的相似度达到预设值,如果是,则此次切割有效,将此次切割所得到的圆环加入到圆环序列中,如果否,则丢弃此次切割所得数据。

可选的,所述根据所述骨架化数据计算得到层内形态描述参数和相邻层间的传递规则参数,具体包括:

根据所述骨架化数据计算层内形态描述参数,所述层内形态描述参数包括层内枝干在指定位置以所述枝干与所述枝干的父枝干的交点为圆心的半径、所述枝干相对于所述枝干的父枝干的转角和偏角,所述枝干为从所述父枝干上生长出的枝干;

确定相邻两层之间的传递参数,所述传递参数包括子枝干相对于父枝干的偏角、所述子枝干半径与父枝干半径的比值、所述子枝干长度与所述父枝干长度的比值。

可选的,所述选择所述组件集中的枝干生成所述森林场景中的树木,具体包括:

在所述组件集中随机抽取与所需层次相对应的层的枝干;

将抽取的枝干组合,生成多个形态不一的树木。

一种同种异态森林场景构建系统,所述系统包括:

采集单元,用于采集单棵树木的3D模型;

模型骨架化单元,用于采用圆环切割法将所述模型骨架化,得到所述模型的骨架化数据,在所述骨架化数据中,每个枝干是以多个带半径和方向的圆环序列表示的;

分层单元,用于对所述模型进行分层;

参数计算单元,用于根据所述骨架化数据计算得到层内形态描述参数和相邻层间的传递规则参数;

层内参数特征计算单元,用于计算所述各层内形态描述参数的高斯分布值和方差;

层间参数特征计算单元,用于计算所述各相邻层间的传递规则参数的高斯分布值和方差;

随机扰动单元,用于根据所述层内形态描述参数和所述相邻层间的传递规则参数的高斯分布值和方差对所述层内形态描述参数和所述相邻层间的传递规则参数进行随机扰动,得到扰动后的参数值;

树干生成单元,用于根据所述扰动后的参数值生成不同姿态的树干,所述不同姿态的树干构成所述模型的组件集;

树木生成单元,用于选择所述组件集中的枝干组合生成所述森林场景中的树木。

可选的,所述模型骨架化单元具体包括:

模型切割子单元,用于采用不同方向的平面对所述模型指定位置的三角面片和与所述三角面片相邻接的面片进行切割;

折线获取子单元,用于将一次切割中得到的三角面片上的折线段相连接,得到封闭的折线回路;

圆形判断子单元,用于判断所述折线回路是否与圆形的相似度达到预设值,如果是,则此次切割有效,将此次切割所得到的圆环加入到圆环序列中,如果否,则丢弃此次切割所得数据。

可选的,所述参数计算单元具体包括:

层内参数计算子单元,用于根据所述骨架化数据计算层内形态描述参数,所述层内形态描述参数包括层内枝干在指定位置以所述枝干与所述枝干的父枝干的交点为圆心的半径、所述枝干相对于所述枝干的父枝干的转角和偏角,所述枝干为从所述父枝干上生长出的枝干;

层间参数计算子单元,用于确定相邻两层之间的传递参数,所述传递参数包括子枝干相对于父枝干的偏角、所述子枝干半径与父枝干半径的比值、所述子枝干长度与所述父枝干长度的比值。

可选的,所述树木生成单元具体包括:

枝干选取子单元,用于在所述组件集中随机抽取与所需层次相对应的层的枝干;

树木生成子单元,用于将抽取的枝干组合,生成多个形态不一的树木。

与现有技术相比,本发明具有以下有益效果:

1)利用树木枝干形态趋近圆环的特征,提出了圆环切割的骨架化方法,能够完全自动地进行模型骨架化,从而实现完全自动化地进行大规模森林场景的建模,不需要建模人员进行任何的编辑操作,解决当前主流方法建模成本过高的问题。

2)利用枝干的复用,大规模场景中同种异态的树木可以通过共享来极大地提高轻量化程度和渲染效率,保证模型存储、传输和渲染的高效性,生成的大规模场景之数据量远低于传统方法,并且能够十分流畅地渲染大规模的森林场景。

3)层内和层间规则中的参数都是相对值,使得在同一个枝干上不同位置长出的子枝拥有不同的形态特征,提高组件集的一般性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例同种异态森林场景构建方法的流程示意图;

图2为本发明实施例圆环切割的结果示意图;

图3为本发明实施例某一层的组件集生成结果示意图;

图4为本发明实施例同种异态森林场景构建系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的目的是提供一种同种异态森林场景构建方法和系统,能够对大规模森林进行自动化快速建模,无需人工的编辑,且能够降低渲染阶段的存储压力,极大地提高轻量化程度和渲染效率。

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

图1为本发明实施例同种异态森林场景构建方法的流程示意图,如图1所示,同种异态森林场景构建方法步骤如下:

步骤101:采集单棵树木的3D模型,3D模型可以来自计算机数据库、美术建模等途径;

步骤102:采用圆环切割法将所述模型骨架化,得到所述模型的骨架化数据,在所述骨架化数据中,每个枝干是以多个带半径和方向的圆环序列表示的,经过圆环切割法切割后的树木模型如图2所示,图2为本发明实施例圆环切割结果示意图;

具体为:采用不同方向的平面对所述模型指定位置的三角面片和与所述三角面片相邻接的面片进行切割;

将一次切割中得到的三角面片上的折线段相连接,得到封闭的折线回路;

判断所述折线回路是否与圆形的相似度达到预设值,如果是,则此次切割有效,将此次切割所得到的圆环加入到圆环序列中,如果否,则丢弃此次切割所得数据。

步骤103:对所述模型进行分层,此处的分层具体为将树干标记为第一层,从树干上直接分离出来的枝干被标记为第二层,从第二层枝干上直接分离出来的枝干标记为第三层,从第三层枝干上直接分离出来的枝干标记为第四层,依次类推,将整个3D模型上的所有枝干全部分层处理;

步骤104:根据所述骨架化数据计算得到层内形态描述参数和相邻层间的传递规则参数;

所述层内形态描述参数包括层内枝干在指定位置,以所述枝干与所述枝干的父枝干的交点为圆心的半径、所述枝干相对于所述枝干的父枝干的转角和偏角,所述枝干为从所述父枝干上生长出的枝干;

所述传递参数包括子枝干相对于父枝干的偏角、所述子枝干半径与父枝干半径的比值、所述子枝干长度与所述父枝干长度的比值。

步骤105:计算所述各层内形态描述参数的高斯分布值和方差;

步骤106:计算所述各相邻层间的传递规则参数的高斯分布值和方差;

步骤107:根据所述层内形态描述参数和所述相邻层间的传递规则参数的高斯分布值和方差对所述层内形态描述参数和所述相邻层间的传递规则参数进行随机扰动,得到扰动后的参数值;

步骤108:根据所述扰动后的参数值生成不同姿态的树干,所述不同姿态的树干构成所述模型的组件集;例如位于第二层的枝干A,在对其参数进行随机扰动后,可以得到多种描述枝干的参数,即得到了多种由A枝干演变出来的姿态各不相同的枝干B、C、D等等。

步骤109:选择所述组件集中的枝干组合生成所述森林场景中的树木模型。在所述组件集中随机抽取与所需层次相对应的层的枝干,将抽取的枝干组合,生成多个形态不一的树木模型。

树木作为一种非常复杂的3D模型,要正确抽取其骨架通常需要设置很多参数,并且需要针对每棵树木进行参数微调,缺乏自动化手段。本申请针对这个局限,提出了基于树木形态特征的的骨架化算法:基于圆环切割的树木模型骨架化算法。该方法抓住了树木形态的特征,即树木枝干可以用多个圆台的拼接来近似逼近。进一步地,该特征被转化为树木枝干可以用有限个圆环的序列来表示。由于树木模型通常是由三角面片模型建模所得,本发明用不同方向的平面去切割树木模型指定位置的三角面片及与其临接的面片,将一次切割中得到三角面片上的折线段连接起来将可以得到一个封闭的折线回路。由于树木枝干的横截面在几何上呈圆形,因此只有该回路的形状近似圆形时,才将其视为一次有效切割并将其加入到圆环序列中。这里采用不同方向的平面,是为了保证最大可能性地切割出有效的圆环。最后该方法将每个树木的枝干用带半径和方向信息的圆环序列予以表示,该表示即为树木模型的骨架化表示。图2为本发明实施例圆环切割的结果示意图,如图2所示树木为输入树木模型经过圆环切割后得到的树木骨架。

在树木的骨架数据中,每个枝干是以圆环序列作为表示方式的,这种表示数据量较大并且难以参数化,不宜直接用于大规模树木的生成。

本发明在获取树木骨架后,提出了基于树木形态特征的层次化规则表示,该表示采用分层的方式来描述树木的形态规则。在该种表示中,树木结构被分为若干层,每一层内部拥有自己的层内形态描述规则,这主要是通过统计目标层内所有枝干在每个等距离采样位置处圆环半径与起始圆环半径之比、圆心与父枝交点的连线相对于父枝方向的转角和偏角。起始圆环指的是第一个采样位置对应的采样圆环,并计算这些参数高斯分布的均值和方差;同时,两层之间还需要几何参数的传递规则,这主要是通过统计子层枝干相对于父枝的偏角、以及与父枝的长度比和半径比等参数,得到这些参数高斯分布的均值和方差。值得注意的是,在本发明的表示方法中,层内和层间规则中的参数都是基于离分支点的距离来进行采样的。这样做的好处是使得在同一个枝干上不同位置长出的子枝拥有不同的形态特征。

本发明在获取到树木层次化规则后并不直接基于该规则生成独立的树木模型个体,而是试图让大规模场景中的树木共享一个公共的枝干集,这样可以极大的减少渲染时场景数据存储的数据量。该方法基于层次化规则统计其各个参数(主要是层内规则中的半径、转角和偏角,以及层间规则中的长度比、半径比和偏角)的高斯分布均值和方差,并按层次进行随机扰动,即基于每个参数所服从的高斯分布,进行随机化以得到该分布下的一系列随机值。然后基于扰动得到的参数进行面片生成,从而得到层次化的组件集,如图3所示,图3为本发明实施例某一层的组件集生成结果示意图。在该方法中,每个层次的规则一一对应该层次的组件集,每个组件集由若干个该层次的枝条组成。在得到组件集以后,组件集中的每棵枝条将作为被共享引用的组件而存在,即使被多棵树木所引用,也只需要存储一份面片数据,大大降低了渲染阶段的存储压力。

在随机生成树木的层次化组件集之后,需要将大规模场景中的每一棵树木都以组件集中的枝条为共享元素来进行表示,确定每棵树木在什么位置放置哪个枝条成为了轻量化表示方式正确性的关键。本申请方法中树木的生成方式不仅依赖生成的组件集,同时,它直接依赖前面步骤获取到的树木层次化规则。实际上,层次化规则作为树木形态特征的统计数据,对于树木形态特征具有全面的刻画。直接对其进行随机扰动可以得到场景中任意一棵树木应具有的形态特征(例如分叉点位置、子枝个数等),然后再从组件集中获取最佳匹配组件。该方法一方面属于基于规则生成的范畴,因此它可以保证最终生成的树木都是同种异态的个体;另一方面,场景中每棵树木并不是独立占用面片集,它们共享组件集,因此在渲染阶段大大降低了内存和显存开销。同时,由于多棵树木共享同一组件的面片集,本课题还将其与图形硬件支持的实例化渲染方法相结合,对每个组件进行实例化渲染,大大提高渲染的效率。

本发明提供的同种异态森林场景构建方法基于圆环切割的树木模型骨架化,提高了树木模型骨架化的精度和鲁棒性;采用树木的分层规则表示,比起产生式形式的规则能够更准确地表达树木枝干的生长趋势;提出了树木枝干共享组件集的表示法,通过共享的方式极大地降低了大规模场景的数据量,并结合图形硬件的实例化渲染极大地提高了场景的渲染效率。

为达到上述目的,本发明还提供了一种同种异态森林场景构建系统,如图4所示,该系统包括:

采集单元401,用于采集单棵树木的3D模型;

模型骨架化单元402,用于采用圆环切割法将所述模型骨架化,得到所述模型的骨架化数据,在所述骨架化数据中,每个枝干是以多个带半径和方向的圆环序列表示的;

分层单元403,用于对所述模型进行分层;

参数计算单元404,用于根据所述骨架化数据计算得到层内形态描述参数和相邻层间的传递规则参数;

层内参数特征计算单元405,用于计算所述层内形态描述参数的高斯分布值和方差;

层间参数特征计算单元406,用于计算所述相邻层间的传递规则参数的高斯分布值和方差;

随机扰动单元407,用于根据所述层内形态描述参数和所述相邻层间的传递规则参数的高斯分布值和方差对所述层内形态描述参数和所述相邻层间的传递规则参数进行随机扰动,得到扰动后的参数值;

树干生成单元408,用于根据所述扰动后的参数值生成不同姿态的树干,所述不同姿态的树干构成所述模型的组件集;

树木生成单元409,用于选择所述组件集中的枝干组合生成所述森林场景中的树木。

其中,模型骨架化单元402具体包括:模型切割子单元,用于采用不同方向的平面对所述模型指定位置的三角面片和与所述三角面片相邻接的面片进行切割;折线获取子单元,用于将一次切割中得到的三角面片上的折线段相连接,得到封闭的折线回路;圆形判断子单元,用于判断所述折线回路是否与圆形的相似度达到预设值,如果是,则此次切割有效,将此次切割所得到的圆环加入到圆环序列中,如果否,则丢弃此次切割所得数据。

参数计算单元404具体包括:层内参数计算子单元,用于根据所述骨架化数据计算层内形态描述参数,所述层内形态描述参数包括层内枝干在指定位置,以所述枝干与所述枝干的父枝干的交点为圆心的半径、所述枝干相对于所述枝干的父枝干的转角和偏角,所述枝干为从所述父枝干上生长出的枝干;层间参数计算子单元,用于确定相邻两层之间的传递参数,所述传递参数包括子枝干相对于父枝干的偏角、所述子枝干半径与父枝干半径的比值、所述子枝干长度与所述父枝干长度的比值。

树木生成单元409具体包括:枝干选取子单元,用于在所述组件集中随机抽取与所需层次相对应的层的枝干;树木生成子单元,用于将抽取的枝干组合,生成多个形态不一的树木。

本发明提供的同种异态森林场景构建系统基于圆环切割的树木模型骨架化,提高了树木模型骨架化的精度和鲁棒性;采用树木的分层规则表示,比起产生式形式的规则能够更准确地表达树木枝干的生长趋势;提出了树木枝干共享组件集的表示法,通过共享的方式极大地降低了大规模场景的数据量,并结合图形硬件的实例化渲染极大地提高了场景的渲染效率。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

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