本发明专利技术提出一种基于动态子结构的三维虚拟植物构建和存储方法,包括子结构参数初始化,根据动态子结构方法进行植物结构的构建,以子结构方法的数据保存,利用子结构信息进行对植物结构的交互式编辑。本发明专利技术的特征在于,对植物结构中相似的子结构定义一个子结构库,通过对其中的信息重复调用节省时间和空间。子结构库中的样本能根据需要动态产生,避免产生的子结构未被调用。能通过对重复调用的子结构只保存一个备份达到虚拟植物数据的压缩存储。能根据子结构的调用信息对构建后的植物和植物子结构进行交互式的编辑。
【技术实现步骤摘要】
本专利技术属于虚拟现实、数字农林业、数字娱乐、景观设计等
,特别是涉及 虚拟植物结构的造型方法与动态展示。
技术介绍
随着三维显示技术的发展,对数字环境下显示内容的需求迅速增加。植物作为自 然界重要的组成部分,对其造型与动画是数字场景构建必不可少的部分。构造实现虚拟植 物三维结构的主要方法大致上可以分为两类。一类是手工交互方式,即通过应用专业设计 软件定义虚拟植物的结构。简单的植物结构或者植物器官可以通过交互的方式进行手工建 模,但对于复杂的植物结构,其中可能包含成百上千万个器官,完全用手工建模的方式是不 可行的。另一类建模方式是基于算法的模拟,自动生成植物结构。常见的模拟算法有字符 串替换系统、粒子系统、自动机等。在利用算法模拟植物结构时,共同的特点是要定义生长规则,描述不同顶芽或侧 芽产生的分枝类别甚至包含的器官类别和个数。直观的模拟方法是在每次迭代中对所有植 物结构以一定顺序进行遍历,逐个更新分枝的状态。如果所模拟的植物数量大,而且植物结 构复杂,那么植物结构的遍历非常耗费计算时间,难以进行结果的调试和实际应用。事实上,复杂的植物结构中通常会包含大量相似分枝,在成熟的树中更为常见。根 据对植物的观察,可以将整株地植物分枝划分为有限的几类。植物植物学家认为可以将分 枝类型按生理年龄进行划分。植物分枝的相似特征能用于植物结构的快速构建。每类分枝 可称为一种子结构,每个子结构可分解为一个生长轴和下一层的子结构,直到不再包含下 一层子结构。对单株植物来说,顶层的子结构是植物本身。子结构构建方法是,对每类子结 构,定义一个子结构库;植物结构的构建过程从最简单的子结构起,通过子结构的调用和几 何变换,逐层自上而下地进行。此算法中,计算时间与子结构库的大小成正比,而不是和植 物结构中的器官个数成正比,这对于复杂的植物结构具有明显优势。通过试验证明,对于复 杂植物结构,该算法的效率高于植物结构的遍历算法。然而,以往此类方法中子结构库是按 从简单到复杂、自顶向下的顺序一次性构建,不仅不直观,而且存在部分子结构未被调用而 浪费资源的情况,对于简单的植物结构,模拟时间反而高于遍历算法。目前国际上有几款专门用于构建虚拟植物结构的商业软件,例如xfrog,Onxy tree, Speed tree,AMAP等,大多提供用于桌面设计的主流软件的插件。国内尚无此类的专 业软件。本专利技术可以用于此类软件的算法设计。
技术实现思路
本专利技术欲解决的技术问题是如何高效灵活地利用植物分枝的相似性,同时保留植 物结构遍历算法的优势,进行虚拟植物的构建、保存、调用、交互式编辑以及压缩存储。为 此,提出。为实现本专利技术的目的,本专利技术基于动态子结构的三维虚拟植物构建和存储方法的步骤如下步骤Sl 子结构参数初始化,确定虚拟植物中分枝即子结构的类型及逐层调用关 系;给定每层子结构的最大个数,即子结构库大小;步骤S2 根据动态子结构方法构建植物结构,首先构建虚拟植物的生长轴,对于 虚拟植物生长轴上的任意子结构位置,如果对应的子结构在子结构库中已经存在,则直接 从子结构库中调用,进行几何变换后组合到当前子结构;否则,递归地逐层构建子结构,放 入对应子结构库中,直到虚拟植物结构构建完毕;步骤S3 以子结构方法的植物数据保存;对于每一类子结构,其中植物数据是在 模拟过程中创建的植物生长轴的信息,以及子结构位置上的子结构编号和变换矩阵;步骤S4 利用子结构信息对植物结构进行交互式编辑;子结构之间的调用关系可 以从步骤S3获取,也可以从步骤S2获取。其中,对植物结构中相似的子结构定义一个子结构库,通过对其中的信息重复调 用节省时间和空间。其中,所述子结构库中的样本根据需要能动态产生,能避免产生的子结构未被调用。其中,能通过对重复调用的子结构只保存一个备份达到虚拟植物的压缩存储,能 根据子结构的调用信息对构建后的植物和植物子结构进行交互式的编辑。本专利技术的有益效果对于植物结构中重复出现的子结构,只需模拟有限的子结构 样本,通过重用子结构样本的信息而提高模拟效率。注意子结构是个递归的概念。虚拟植 物可以分解为主轴和直接长在主轴上的子结构,主轴上的子结构又可划分为生长轴和下一 层的子结构。虚拟植物本身是森林场景中的子结构。由于本方法中子结构是在植物结构构 建过程中根据需要动态创建,因此不存在子结构未被调用而产生的时间和空间的浪费,对 不同复杂度的植物结构都能保证模拟效率高于对植物结构进行完全遍历的算法。用户可以 改变子结构大小获得期望的效率和子结构多样性。植物的构建过程是从下而上进行,对动 态创建的子结构进行遍历,比较直观。通常保存虚拟植物几何结构的文件所占用的空间随 其中器官个数线性增加;对于应用动态子结构算法构建的植物结构,由于子结构的信息被 重用,因此仅需要保存子结构的变换和调用信息,从而达到节省空间的目的。在读取这样的 文件时,由于需要进行子结构的逐层解开和变化,需要花费一定时间,因此这是一种以时间 换空间的方法。由于子结构的调用信息被保存,可以对植物进行交互式操作。附图说明图Ia是基于动态子结构方法的框架图。图Ib是图Ia中步骤S2的子流程图。图2是基于随机子结构的模拟和调用示意图。图3是植物结构中包含的不同类别的子结构示例。图如和图4b是森林场景的子结构方法构建示意图。图5是青园软件中对复杂植物结构的模拟结果。图6是青园软件中对随机植物结构的模拟结果。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,以下结合具体实施例子,并参 照附图,对本专利技术进一步详细说明。这里假定读者熟悉植物结构模拟算法,例如自动机、字 符串替换系统等,集中介绍如何在这类算法中应用动态子结构算法。图Ia所示为实现动态子结构方法的各个部分的关系。步骤Sl对植物结构进行参数的初始化,确定虚拟植物中分枝即子结构的类型及 逐层调用关系;给定每层子结构的最大个数,即子结构库大小;要实现预期的虚拟植物结 构,首先对植物结构进行分解,确定其中包含的子结构类型以及逐层组合关系;子结构类型 的划分可参考植物学家提出的生理年龄。每类子结构采用相同的植物结构模拟参数。步骤S2根据动态子结构方法进行植物结构的构建,具体流程如图Ib所示。由于 子结构为递归的概念,为描述方便,当前正在构建的子结构称为当前子结构,当前子结构的 生长轴上着生的子结构称为下一层子结构。当前子结构相对于下一层的子结构称为上一层 子结构。当前子结构的类别用整数P表示,P = O时表示虚拟植物本身。当前子结构中包 含的下一层子结构的类别用整数q表示,一般q大于P。子结构P所对应的子结构库的大小 为Tp,子结构q所对应的子结构库的大小为Τ,,都在步骤Sl中定义。模拟过程从植物的主 轴开始(P = 0)。步骤21 根据植物结构模拟算法构建编号ηρ的当前子结构的生长轴,存入子结构 P所对应的子结构库中,np e ;步骤22 以一定次序遍历编号np的当前子结构的生长轴上的所有产生下一层子 结构的位置。根据植物结构模拟算法获得编号np的当前子结构的生长轴上的下一层子结 构的类别q、位置和方向。步骤23 判断遍历是否已经结束,下一层的子结构的信息是否已包含到当前子结 构;如果遍历没有结束,还存在空缺的下一层子结构位置,则转步骤24,本文档来自技高网...
【技术保护点】
一种基于动态子结构的三维虚拟植物构建和存储方法,其特征在于,所述方法包括步骤如下:步骤S1:子结构参数初始化,确定虚拟植物中分枝即子结构的类型及逐层调用关系;给定每层子结构的最大个数,即子结构库大小;步骤S2:根据动态子结构方法构建植物结构,首先构建虚拟植物的生长轴,对于虚拟植物生长轴上的任意子结构位置,如果对应的子结构在子结构库中已经存在,则直接从子结构库中调用,进行几何变换后组合到当前子结构;否则,递归地逐层构建子结构,放入对应子结构库中,直到虚拟植物结构构建完毕;步骤S3:以子结构方法的植物数据保存;对于每一类子结构,其中植物数据是在模拟过程中创建的植物生长轴的信息,以及子结构位置上的子结构编号和变换矩阵;步骤S4:利用子结构信息对植物结构进行交互式编辑;子结构之间的调用关系可以从步骤S3获取,也可以从步骤S2获取。
【技术特征摘要】
【专利技术属性】
技术研发人员:康孟珍,华净,胡包钢,
申请(专利权)人:中国科学院自动化研究所,
类型:发明
国别省市:11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。