基于L-System、遗传算法、人工生命进化模型的人工生命的计算机动画策略

本文介绍了如何利用L-System、遗传算法和人工生命进化模型来模拟植物生长,以提高植物形态和生长过程的逼真度。通过BSP空间剖分技术和L-System字符串替换,实现了更丰富的植物形态。研究中,作者对比了BSP、L-System以及优化后的算法在模拟植物形态、逼真度和复杂性方面的表现,发现优化后的算法在兼顾效率和逼真度上具有优势,有望应用于军事、农业和3D等领域。
摘要由CSDN通过智能技术生成

基于L-System、遗传算法、人工生命进化模型的人工生命的计算机动画策略

广州市真光中学肖毅 华南理工大学张嘉华、梁成

【摘 要】 随着计算机图形学的飞速发展,人们一直研究在计算机上模拟各种植物形态的可能性。目前,人们基本上利用Navier-Stokes方程来模拟植物的形态,而其模拟出来的植物由于形态单一、逼真度不够高,已经不能满足农业、工业、军事、3D等方面的要求。通过对上述的情况进行研究和分析之后,我们寻找出一种能够逼真地模拟出植物的方法即BSP的优化—L-System。在BSPL-System的基础上,我们做了大量的实验,以验证这一方法的可行性、有效性。

【关键词】 L- System  BSP   龟形  迭代   递归   字符串替换    

AbstractWith the rapid development of the Computer Graphics ,many experts have been working on the possibility of the Simulation of various arborescences. Currently ,people are simulating arborescence by using the stochastic Navier-Strokes equation, however, due to the monotony and less fidelity of the arborescence .these arborescences can’t meet the needs of the development in agriculture ,industry and military affairs. After researching and analysing the circumstances,we have found out a way that can realistically simulate the plants,which called the optimize of BSP-L-System.On the basis of BSP and L-System,we have done a great deal of experiments so as to prove the feasibility and validity of this method.

Key wordsL-System BSPturtleiterativerecursionstring replacing
Simulation of Plants

 

 

 

 

 

 

 

 

一 、研究现状

 

近年来,自然景物的模拟一直是计算机图形学中最具挑战性的问题之一。作为自然景物模拟的重要内容,对树木、流水、波浪的模拟正日益引起人们的关注。植物是自然界最常见的景物,其种类繁多,形状各异,长势千姿百态,以及它们结构的不规则性和自相似性,给研究者提出很多难题。

现有的模拟植物方法一般是利用Navier-Stokes方程去构造模拟植物函数,从而模拟植物的形态和生长过程。Navier-Stokes方程具有随机性,而植物的生长不仅具有随机性,还具有自相似性(即植物的某一子树被放大后仍然与整棵植物相似)。如果仅仅利用Navier-Stokes方程模拟植物,无论是植物的形态、逼真度等方面都存在一定的缺陷。

由于利用Navier-Stokes方程模拟出来的自然景物形态单一、逼真度不够高,已不能满足人们在军事、农业、工业、3D等方面的要求。为了克服Navier-Stokes方程模拟植物的缺点,我们寻找出一种新的、能更逼真地模拟植物形态和生长过程的方法---BSP的优化—L-System

 

二、BSP在树木模拟中的应用

 

(一)BSP概述

BSPBinary Space Partition是一种空间剖分技术,由Fuchs1980年首先提出并应用于平面对空间的剖分,从而建立起空间二叉树结构。它基于这样一种事实,即空间中的任何平面都将整个空间分割成两个半空间,所有位于该平面某一侧的定义了一个半空间,位于另一侧的点定义了另一个半空间,根据这种对空间剖分的方法,就可以建立起整个虚拟场景的描述以及场景中各种对象的描述。

2-1-1是一棵BSP树。分开的平面用黑色表示,对象用实心图形表示。

让我们选择一个平面(p1)将空间分割成两个半空间(p2p5),所有位于该平面一侧的点定义一个半空间(p2),位于另一侧的点定义另一个半空间(p5);选择任何半空间中的一个平面,它会进一步将此半空间分割成两个更小的子空间……如果我们将这一过程进行下去,子空间将会越来越小,直到不可分割为止。二叉树中,分割多边形被存储为树的结点,所有位于子空间中的多边形都在相应的子树上;对每一子树,分割多边形将空间分成两个子空间;这两个子空间分别作为该子树的特点;对于与分割多边形相交的平面将被切开为两个多边形,并分别归入相应的子空间;这样递归直到处理完所有的多边形为止,最终就得到物体的对象和二叉树的结构。

2-1-1

2-1-2

 

 

 

 

 

 

 

 

 

 

 

 


(二)BSP模拟植物算法

 

BSP的“空间剖分”技术,即对空间进行剖分并建立起空间二叉树结构,尽管这种建立的过程是基于递归,但由于它在将空间分割成两部分之后,对每一部分中的对象都进行了细致的描述,更多地关注对象的结构和行为,因而在树木模拟中,就能够发挥它的“空间剖分”优势,进而能够更逼真地模拟出植物的形态结构特征。

BSP模拟树木形态,影响树木模拟效果的参数有:

        1)递归的深度(iter

树木的枝干随着iter的递减而逐渐变细。

2)偏转角(angle

分枝的偏转角有一定的随机幅度。偏转角过大或过小则剪枝。当iter较大,即处于较为底层的状态时,可使分枝的偏转角的随机幅度减小,使树木看起来长势更为集中。

3)步长(step

我们可以通过步长控制叶子的长度。

4)根结点的坐标

根结点的坐标用于确定植物的位置。

在实际的模拟过程中,除了要考虑上述参量外,还需要考虑树木的生物属性,如当树枝的偏转角度过大时,给予“剪枝”,以及控制叶子的长度。

    BSP是迭代和递归中最基本的算法之一。简单描述如下:

Sub recursion (iter)

If 递归的深度等于0 

Then

     Exit Sub

Else

 

'画树干

左转

recursioniter-1'画左子树

右转

recursioniter-1'画右子树

End if

 

            End Sub

 

其中画子树的过程即递归的过程。iter表示递归的深度(iter递减到0)

iter=0              iter=1        iter=2         iter=3        iter=4

 

 

 

 

 

 


2-2-1

 

 

如果我们将二叉树进行一些修改,就能生成简单的二维树:

首先,生成的枝干更加复杂(如图 2-2-2)。其中侧枝较多的分枝出现在树干的左边还是右边是随机决定的。

其次,分枝的偏转角得有一定的随机幅度;当iter较大,即处于较为底层的状态时,分枝的偏转角的随机幅度也应较小,使树木看起来长势集中些。

再次,应考虑树木生长时的顶端优势。当分枝与最初主干之间的夹角较小时,可以在这个分枝上画两个子树,使分枝看起来更长。

最后,考虑树干的粗细及叶子。随着iter的递减,树干逐渐变细;当iter小于1时,画叶子。在末端画上叶子,还可以有其他效果。

 

 

 

 

 

 

 

 

 


2-2-2

BSP具有遍历速度快的优点,BSP树的遍历思想是根据点和分割平面的位置关系来实现的,在引擎的设计中,充分考虑了二叉树的多种特点。特别是用来描绘场景中的静态物体取得良好的效果。

经过对比,我们发现将BSP进行修改后生成的简单二维树(如图2-4)与用原始方法生成的树(如图2-3)相比,形态更丰富,逼真度更高。

 

三、L-System在植物模拟中的应用

 

(一)L-System的数学模型及其构型的基本方法

几个世纪以来,自然界中多彩多姿的植物深深地吸引了许多数学家,他们对其显著的几何特性作了广泛的研究,例如,叶子的左右对称,花的旋转对称,松果上鳞片的螺旋排列等。1968年,美国的生物学家Aristid Lindermayer(19251989)提出了Lindenmayer系统,简称L-System。它是描述植物生长的数学模型,其基本思想可解释为理想化的树木生长过程:从一条树枝(种子)开始,发出新的芽枝,而发过芽枝的枝干又都发新芽枝……最后长出叶子。这一生长规律体现为斐波那契数列:11235813213455,…

记该序列的第n项为Fn,则有递推关系式:

Fn+2Fn+1Fn (n=1,2,3,…)

根据L-System的基本思想,我们先建立二维树的数学模型:从树干开始,然后沿着树干逐渐扩展到连接的树枝,再以递归的方式进行同样的过程,该过程持续到最终分枝。为简明起见,在这一模型中,每一树枝都化为一条直线,每次循环,树枝都被缩放,旋转和平移到其父枝的新位置上(如图3-1-1)。

3-1-1

L-System做为数学理论框架,研究植物的进化和造型,SmithAnonoKunii率先将L-System引入到计算机图形学中,显示了L-System在计算机模拟植物方面的潜力,为计算机模拟植物的真实感图形提供了强有力的工具。

(二)字符串替换(string replacing)

L-System的核心思想是“字符串替换”。字符串即按一定规律的排布的字符集合。它可以包含短语、字母、数字或标点符号,一般用大写字母书写。字符串替换可以定义为根据一组改写规则或产生式(production)依次替换一个简单初始物的每一部分,即给出初始物(一条字符串)然后根据产生式规定的替换规则去替换初始符串中的每一个字符。这种替换的次数是无穷的,可得到无限推导序列。替换中每一次反复称之为字符串深度,例如深度为3就表明字符串替换进行了3次。以下是一个例子:

初始符ωAB

产生式P1A→ABP2B→A

 

深度

生成物

解释

0

AB

深度为0,替换结果即初始符

1

ABA

根据产生式,将初始符中的AAB替换,BA替换。以下反复依次类推。

2

ABAAB

 

3

ABAABABA

 

N

……

 

 

假如我们观察一下真实植物的生长,就可以发现它们从种子开始(L-System中称之为初始物),每一个细胞都根据由DNA决定的生长法则不断地繁殖自身,每一根枝条也会抽出与自身几乎一样的新枝,最终生成一棵完整的植物。以上观点说明如下:

n=1时植物在n=0的基础上抽出两条新枝,则原本的枝干变成旧枝,而且再也不会抽出另外的新枝。从中可以看出二叉树按两条规律生长:1、每个反复中,新枝将会抽出另外三条新枝,而且自己变旧。2、枝条会继续生长,但旧枝不再抽新枝。假如我们用字符F来代替新枝,G代替旧枝,那么从初始物F开始,每次用G代替F,并加上FF,继续反复并转换成图象,就能简单地用字符串替换算法生成植物。正是字符串替换的思想,为植物的模拟提供一个简单快捷,而又强有力的武器。

 

(三)龟形(turtle)

字符串替换的概念可以看出,L-System中的初始物和产生式均是由字符串来描述的.归根结底是因为L-System是一种形式语言。若要将L-System植物模拟联系起来,使之能表现真实植物枝条的构造,就需给L-System中每一个字母赋予一个特定的几何图形含义。为了形象地说明,可以引进龟形这个概念。

最初的龟形来自于一个称为LOGO的内置了制图字符指令集的绘图软件。龟形的本质也就是一个运动指针。

龟形的主要思想是:将龟形状态定义成一个三元素集合(xyα),其中坐标(xy)表示龟形的位置,方向角α表示龟形的方向,给出步长d和角增量δ龟形行为对应于下列命令:

命令

作用

结果

F(d)

向前移动一步,步长为d

龟形状态变为(x′y′α),其中x′=x+dcosαy′=y+dsinα,在点(xy)(x′y′)间画一直线段

+(δ)

逆时针转δ

龟形的下一状态为(xyα+δ)

-(δ)

顺时针转δ

龟形的下一状态为(xyα+δ)

龟形的当前状态压入堆栈

将信息(包括龟形的位置和方向,可能还有其它属性,如所画线段的颜色及宽度)存入堆栈

从堆栈中弹出一个状态作为当前状态

不画线,但龟形的状态通常是改变的

给定一个字符串ω龟形的初始状态(x0y0α)以及                            固定参数dδ龟形就可以产生相应的图形(如图3-3-1)。

3-3-1

 

A

A

    给予龟形一条命令:FF[+F][-F]龟形即做以下操作                             ——首先向正方向移动|2d|个单位,到达A点,然后把当前位置存入栈中࿰
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值