学习Houdini中“L-System”节点的基本工作方式

目标

L-System(L系统) 是什么?

——它是植物学家 Aristid Lindenmayer 提出的一个数学模型,命名为 Lindenmayer系统,简称为L系统

它的基本特点是:使用迭代来定义复杂的几何体。

它常用于模拟植物生长的状态,很擅长生成类似下面的图案:
在这里插入图片描述


Houdini中的 L-System节点 基于此原理工作
在这里插入图片描述
本篇的目标是:

  • 从对L-System完全未知的状态开始,一步步了解其核心概念,以及在Houdini中怎样使用它。

1. 基本原理——使用“字符串”来表示行为(海龟运动)

使用L-System,首先要明白的是:

  • 你将使用 “字符串” 来表示行为

例如:
规定F表示“Forward”,向前走一步。
那么FF就表示向前走两步;FFF就表示向前走三步,以此类推。


在Houdini中,你可以想象是:

  • 你有一个初始在原点的海龟。它头顶是z轴,面向y轴。
  • 你将使用“字符串”来控制其运动。
  • 其移动轨迹将是生成的图案。

在这里插入图片描述


下面做测试:

首先,为了便于观察,将 Step Size(步长) 设为 1
在这里插入图片描述
然后,清除掉Rules下默认的参数:
在这里插入图片描述
随后,在 Premise(初始状态的字符串)中不断增加F,可以看到随着F数量的增加,“海龟”逐渐朝它的前方移动:
在这里插入图片描述

2. 核心概念——替换与迭代

关于L-System,随后要明白的便是其核心概念:

  • 字符会以特定的规则发生替换行为。
  • 而这样的替换行为将会迭代多次。

例如:
假设初始字符串为A,以A=FFA作为替换规则。
那么第一次替换后为FFA,第二次替换后为FFFFA,以此类推


下面在Houdini中做测试:

接上例。

Premise(初始字符串) 中填A,在 Rule1(规则1) 中填A=FFA
在这里插入图片描述
然后,在 Generations(迭代次数) 中逐渐增大数字,能明白字符串逐渐被迭代替换:
在这里插入图片描述

3. 常用符号——右转‘+’ 左转‘-’

+ 代表控制海龟右转,-代表控制海龟左转。
默认的转向度数在Angle参数中指定。

下面做测试:
Premise(初始字符串) 中填FA,在 Rule1(规则1) 中填A=+FA
在这里插入图片描述
可以尝试改变Angle观察其变化:
在这里插入图片描述

4. 关键符号——分支“[]”

[]表示从当前状态开始分裂出一个新的海龟前进。

下面做测试:

设初始为FA,替换规则A=[-FA][+FA]FA。这表示:
A行为代表“分离出一个海龟左转前进,再分裂出一个海龟右转前进,最后本体也前进。同时,三只海龟之后的行为还将重复A行为”
在这里插入图片描述
提升Generations(迭代次数) 可以观察到这样的行为不断地迭代:
在这里插入图片描述
还可以玩一下Angle

5. 常用符号——俯转‘&’ 仰转‘^’

& 代表控制海龟俯视转向,^代表控制海龟仰头转向。
默认的转向度数在Angle参数中指定。

它和+-类似,只不过是延另一个轴:
在这里插入图片描述

6. 常用符号——顺时针翻滚‘/’逆时针翻滚‘\’

/ 代表控制海龟顺时针翻滚,\代表控制海龟逆时针翻滚。
默认的转向度数在Angle参数中指定。

下面做测试:
Angle设为90°
然后设初始为FA,替换规则A=[^F]F/A。这表示:
A代表分裂出一个海龟朝着仰视转动90°,随后本体超前进并顺时针翻滚90°,最后重复A
在这里插入图片描述

总结

“L-System”节点使用字符串来定义形状,可以想象是在用字符串给一个海龟发号命令,其运动的轨迹即为最后的结果形状。

字符串中的字符可以被替换,而这样的替换行为将会迭代多次。

一个比较关键的符号是[],它将创建出一个分支。

所有的符号,可以在L-System节点文档 中找到:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u013412391/article/details/114985129