【共享插件024】草丛
一个可以生成草丛的CorelDraw小插件。
插件见附件。
背景
这个插件的原始概念比较简单,就是想尝试一下使用单一形态要素来生成丰富(甚至有含义)的场景。这个插件的形态要素确实单一,只有一根弯曲的草叶子,基于几个参数的随机变化不停地复制。可以看到,计算机的单调能力也可以产生复杂的组织和变化。
功能
插件的功能只有一个:生成大量的……草。提供了若干参数来确定草的位置、数量、叶子形态、宽度、展幅、倾角,以及重力、风向、空气透视等环境要素。
插件加载方法
本插件不需要安装,打开cdr文档就能用;不出意外的话,也不需要加载说明和使用说明。如果用过以往发布的23个插件没有问题的,这节可以跳过了。
本插件内嵌在CorelDraw的.cdr文档中,不需要安装。打开.cdr文件,用户界面就会自动跳出来。如果没有,后面有解决方案。
插件是在CorelDraw X3上使用VBA开发的。事实上,“创意之代码”发布的所有插件都是在X3开发的,因为旧版插件可以在新版CorelDraw使用,而反过来不行。基于X3以前的版本开发的插件拿到高级版本上使用会出很多错,估计是X3对VBA模块做了大量改动造成的。所以X3就成了最佳选择。
尽量避免在X4使用本插件,因为X4的VBA与其他版本兼容性比较差,易出错。我没有装X4,也懒得专门为X4准备一个特别版本。
打开文档“【共享插件024】草丛04.cdr”。文件名末尾的“04”表示这个程序修改了4轮。为避免程序意外崩溃造成重大损失,每有关键改进就另存一版文档。
正常情况下,应该出现如下警告对话框(以X3为例):

选“启用宏”,cdr文档打开,正常情况下,插件的用户界面应该跳出。
如果用户界面成功调出,可以忽略下面的内容直接跳到“使用说明”部分了。否则继续往下看。
如果没出现上述警告对话框而是直接把.cdr文档打开了,并且没有出现用户界面,那是因为安全设置太高,把宏屏蔽了(插件以宏的形式运行)。解决方法:工具>>Visual Basic>>安全性:


安全级别选“中”,然后点确定。重新打开.cdr文档。
尽量不要从资源浏览器中直接把本.cdr文档拖到CorelDraw界面中打开,因为有可能会造成警告对话框被隐藏到界面背后无法点击,从而造成死机假象。出了这种情况,资源管理器也会处于假死状态。有个解决方式是,把CorelDraw切换到最前端,然后打开一个其他软件(比如Word或Excel),点右上角最小化按钮将其最小化,多试几次,可以把警告对话框带到前面来。
插件在X7上运行的情况稍有不同。
在我的X7上,.cdr文档打开后没有跳出用户界面。这时可以通过两个步骤调出用户界面:
1) 工具>>宏>>宏管理器:

宏管理器加载后出现在界面右侧的泊坞窗位置:

2) 在宏管理器中双击打开“VBAProject”条目,找到ThisDocument下面的Document_Open,双击,打开用户界面。

使用说明
用户界面与以前的插件类似,能小则小。

跟以往的插件相比,这一个参数比较多,因为形态是完全单一化的,所以要靠各种参数来营造丰富感。
直接点“Go!”按钮,基于默认参数选项可以得到如下图所示的草丛。草的色彩使用下浅上深的渐变色,并带有一定程度的随机变化。

下面解释一下各参数的含义和用法。
“簇数”和“簇容”分别指的是有几丛草、每一丛最多有几片叶子。真正的草一般都是一簇一簇扎堆生长的,这里也模拟了这个效果。簇容是每簇里面草的最大数量,实际数量在簇容的一半到最大之间的随机数。簇的根点范围设置为页面宽度的五分之一,草很多时并不是很能明确地区分出簇来。以下是一簇草的效果。

草叶子是一片一片生成的,但是一颗草一般都会有多片叶子。这个倒是,严格copy真正的草的生长状态,视觉效果达到即可。程序设置一片叶子在生成时会以40%的概率选择上一片叶子的根点生成,产生随机而不僵硬的效果。
程序假设所有的草都生长在一个平面上,因此草根位置的Y坐标就代表了远近,根部越靠上的草就表示越远,因此也就被遮挡在其他(根部靠下的)草的后面,同时也越细越矮,以营造近大远小的透视感,如下图所示。

因此所有草的根部都分布在页面的下半部,页面的横中分线表示地平线,草们不会长到地平线以上。
簇数和簇容两个参数决定了草的数量,即草丛的茂密程度。
“叶宽系数”指定草叶子的宽度。这是一个相对的系数,默认值为0.1,测试几次就可以找到合适的宽度设置。以下是叶宽系数为0.4的两簇草。

叶宽不是等值,会在30%范围内浮动,并且随着距离的拉远跟整体一起缩小。
“展幅”参数会改变草的展开幅度,默认值为0.6。展幅越大,草的展开程度就越大;展幅越小,草就显得越直、越“挺”。下图左侧两簇草的展幅是0.1,右侧两簇草的展幅是0.8。

“倾斜角”是指草的根部与垂直方向夹角的最大值,实际的倾斜角会在这个值以内随机取值。下图分别为倾斜角为30度和60度的两簇草。


“重力系数”用于模拟重力效应,这个系数越大,草就越低垂,不堪重负的样子,否则就看起来很轻盈。
下图是重力系数为0.7情况(默认值为0.3)。

对比一下不考虑重力的情况(重力左侧的复选框去除)。

“风向”选中后,所有草都往一边歪,被风吹的。西风从左边吹,东风从右边吹。下图是西风。

草叶的形态有两个选项:兰花叶和流星叶。前述案例均为兰花叶,下图为流星叶。

流星叶的所有参数与兰花叶相同,只是整个叶子根部细,端部粗,看起来像流星。
其实还可以做出更多的草叶子形态供选择,只需替换一下单元形态的造型函数即可。多种不同的草长在一起应该是个很有生机的场景。
“前后调序”按钮用于调整草的前后顺序。使用“Go!”按钮一次性生成的草丛不需要调序,程序内部已经做过调整了;如果多次使用Go按钮生成草丛,就会出现远处的草跑到近处草前面的情况,应该进行调序。
最后一个按钮“空气透视”的作用是使画面产生空气透视的效果,即近处清晰、远处模糊。对比一下增加空气透视效果前后的草丛——


这个插件属于对自然界形态的抽象与再现。从视觉形态中抽象出数学规律是个很有意思的工作,它可以强迫你对形态的本质进行最理性化的理解,和最简洁到位的表达,以及把形态形成过程背后的机制推演出来。
自然形态的建模已经进行很久了,2D和3D都有,各种植物和生物形态都有人在做。现在更有挑战的工作是对人类艺术形态的建模,作者发布过一个“蒙德里安”插件,即属此类。这种工作是自动化创意的基础。
Enjoy.







































