![d4c04fea61090c65b6e2cc96f2d58fc4.png](https://img-blog.csdnimg.cn/img_convert/d4c04fea61090c65b6e2cc96f2d58fc4.png)
一:简介
Lindenmayer-systems是由荷兰乌特勒支大学的生物学和植物学家aristid Lindenmayert在1968提出的属性模型。此人在1996年还有一本书籍《THE ALGORITHMIC BEAUTY OF PLANTS》出版,内容挺不错的。l-system效果就是能用几条简单的指令画出复杂的形状。比如树木啦
![9ac1f1d60b30cc0bddab3b82265f236a.png](https://img-blog.csdnimg.cn/img_convert/9ac1f1d60b30cc0bddab3b82265f236a.png)
建筑啦
![9d93101e94f8b1f4f09c75d46509fe41.png](https://img-blog.csdnimg.cn/img_convert/9d93101e94f8b1f4f09c75d46509fe41.png)
各种各样的图案啦
![83c38044adb2f5f88db81db067f8a4a9.png](https://img-blog.csdnimg.cn/img_convert/83c38044adb2f5f88db81db067f8a4a9.png)
算法看起来不错,但要实现它,如果用python,java还要自己去找能画线,能解析l-system语句的函数,有些麻烦。而在houdini中,早已准备好了一个节点。
二:前提
在houdini中新建一个l-system节点,Values值改成如下
![ddbf0e291d1030e8e3aaaaa82b894867.png](https://img-blog.csdnimg.cn/img_convert/ddbf0e291d1030e8e3aaaaa82b894867.png)
然后进入rules选项卡,把rules1和rules2的勾勾掉,暂时用不上。然后再来看看premise,也就是前提,输入
FfFHhF
![307b4840ef19ef495161f3b542a506c8.png](https://img-blog.csdnimg.cn/img_convert/307b4840ef19ef495161f3b542a506c8.png)
效果如上,F代表往上一格并画线,f代表往上一格不画线,H代表往上半格并画线,h代表往上半格不画线。
然后是旋转
![6e9d7a94a222e76622703ebe76e08e2e.png](https://img-blog.csdnimg.cn/img_convert/6e9d7a94a222e76622703ebe76e08e2e.png)
先弄清概念。在houdini,
Pitch是围绕X轴旋转,也叫俯仰角,houdini里的符号是"&","^"
Yaw是围绕Z轴旋转,也叫偏航角。这里的符号是"+","-"
Roll是围绕Y轴旋转,也叫翻滚角,houdini里的符号是"","/"
比如,第二条线绕Z轴旋转,与Y轴和X轴夹角都为45度。
F+F
![9439bcbf85fdebe0bb96858c070c4d8d.png](https://img-blog.csdnimg.cn/img_convert/9439bcbf85fdebe0bb96858c070c4d8d.png)
分支表达如下
![e5e7e7bdbd489e81e37b2c9282eb3930.png](https://img-blog.csdnimg.cn/img_convert/e5e7e7bdbd489e81e37b2c9282eb3930.png)
三:迭代
houdini中,l-system的规则是这样的,把迭代叫做generation,第0个generation执行promise,假如有两个rule,那么第一个generation执行rule1,第二个generation执行rule2,第三个generation又执行rule1,第四个generation执行rule2如此往复。
那我们勾上rule1和rule2,premise填上
FFFA
那么会首先生成一个高度为3的线段,这里的A和B只是没有任何意义的占位符,相当于一个点
rule1填上
A=[B][B][B]
这里就会把A替换成三个分支B
rule2填上
B=&FFFA
这里把B替换成旋转一定角度的线。然后到value里把angle改成28,再到gemotry里调整迭代次数即可看到树状线生成了。这也就是默认的I-system节点。
![3ee2d60da2c676cf19e378f8b9b411e3.png](https://img-blog.csdnimg.cn/img_convert/3ee2d60da2c676cf19e378f8b9b411e3.png)
四:更多
好了,非常好玩吧?houdini的帮助文档非常详细。你也可以去找找《THE ALGORITHMIC BEAUTY OF PLANTS》也就是开头提到的那本,上面有更多的l-system示例。
![987a8cb9efcabb7c502c803dd725ddb5.png](https://img-blog.csdnimg.cn/img_convert/987a8cb9efcabb7c502c803dd725ddb5.png)