众所周知,在绘制图纸的时候大家经常会用到各种各样的植物素材,那对于Rhino用户而言,因为本身犀牛素材库的欠缺,通常我们会采取导入SU的植物素材或者后续在PS等二维软件中进行配景的添加。但实际上借助一些并不复杂的运算器,大家完全可以在GH中生成特定类型的植物素材而无需借助其他软件的辅助。在这期文章中我就带着各位带着大家从头到尾通过Grasshopper完成这样一个线稿植物素材的绘制并创建打包运算器。STEP 1 首先先选择一根Rhino曲线到GH中。 之后使用perp frame获取曲线的末端点。到此为止大家可以认为我们完成了树木第一段树干的绘制并且提取了第二段树干的起点(第一段树干的终点)。之后就需要绘制第二根树干了,因为树木生长是一个相对随机的状态,最终我们获取的植物枝桠也是随意分布的,因此在这可以采用极坐标+随机的方式确定第二个点。 使用point polar,极坐标运算器需要三个输入端,xy平面方向,z轴方向,以及距离。其中xy方向可以认为是第二节枝桠相较于第一节枝桠在水平方向变化的角度,而z方向则可以认为是垂直方向变化的角度,距离就是第二节枝桠的长度。水平方向变化的角度使用random给它一个0-180度中的随机值。垂直方向因为树木大多是往上生长的,在这给一个0.3pi到0.8pi的角度范围。最后的长度,因为树木大多上部枝桠的长度小于下部主干,在这我们先创建一个小于1的随机数,然后用它乘以原来树干的长度作为d值。所有这些操作完成之后就能得到第二段树枝的末端点。 有了点之后只需要使用Arc SED就可以创建第二段圆弧,初始点是第一段枝桠终点,末端点是第二段枝桠终点,方向为第一段终点的切线方向,(使用evaluate curve即可得到,重参c端之后,t输入1,T端即为终点切线方向) 那到此为止我们就完成了基本枝桠逻辑的建模。 STEP 2 完成单个枝桠建模之后,因为树木不会只有一个枝桠,因此在这我们需要不断的重复这样一个建模的逻辑。
但直接的ctrl+c,Ctrl+v复制运算器的话又会使得这个GH电池数量非常多看起来较为繁杂,文件的可读性也会变差。这也是Grasshopper作为一个单向数据流动的编程语言同其他正规编程语言相比一个比较大的劣势——对于循环的处理。 所以在这需要各位去Food4Rhino下载一个专门用于处理循环的插件Anemone (连接:https://www./app/anemone)
建议各位下载最新的0.4版本。
下载安装好了之后就可以在GH中得到这样一个Anemone卷展览。
相较于之前版本的Anemone,0.4版本多了不少运算器,但是我们用的最多的还是classic中的这两个老运算器:loop end和loop start. 这两个运算器的使用方法并不复杂,>连接<.
输入曲线连接到loop start的DO输入端,在从D0输出端连接到之前需要曲线的那些运算器上。 之后再把经过枝桠部分输出的结果连接到loop end的输入端。 下面需要给N连接一个数字,表示循环的次数。在这假设我们循环4次。
但是连接完成之后各位可以看到在这我们只获取了最初的枝干以及最后两个枝干,之前的枝桠并没有生成。
要解决这个问题的话需要在loop end那边点击record data 之后再点击loop start,中间所有循环生成的枝桠就都出现了。 STEP 3 通过上面这些操作,的确我们可以得到一个树木枝桠的造型,但无论怎么修改参数,显而易见,当前我们获得的树木造型和最开始期望获取的树木造型存在较大差距。 分析下当前的造型主要有两个问题,首先树木分支的现象并没有得到体现,一个主干对应的就是一个分支,从而无法做出树木"枝繁叶茂"的那种感觉。 其次造型过于重复,这里面蓝色标注的枝桠和绿色标注的枝桠造型完成相同,只不过是大小渐渐变小。而真实树木造型是绝对不会出现如此重复的状态的。
因此要实现真实树木的效果我们必须解决这两个问题。限于篇幅,具体的解决方法和打包运算器的制作我会放到下一期的教程中,大家如果有什么解决思路也欢迎在文后进行留言讨论,那各位小伙伴们下周见啦。
|