很难找到的犀牛gh详细教程_第1页
很难找到的犀牛gh详细教程_第2页
很难找到的犀牛gh详细教程_第3页
很难找到的犀牛gh详细教程_第4页
很难找到的犀牛gh详细教程_第5页
已阅读5页,还剩176页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.犀牛Grasshopper详细作坊: 淘宝TAO设计工c.w137644-11936346401.38.M5IFz2&id=521346428618I使用 GRASSHOPPER 算法建模译序08 年底,ID 名为 Foral 的一个海外留学生在 ABBS 上开贴Parametric Design,这是国内大多数人认识“参数化”的开始,自此之后,“算法”、“代码”等曾经与我们毫不相干的名词开始被频频用于我们的言辞当中。面对新事物,大多数人选择的是去尝试和,我们开始学习使用Grasshopper、Rhinoscript、ParaCloud、Catia、Digital Project 等

2、辅助设计。在这些参数化当中,基于犀牛平台的Grasshopper 是一个较为直观、代码呈现较少的参数平台,因此目前被使用得非常广泛。在国外尚且是新事物,参数化设计中文的学习更是有限。等人在早先也给我们带来了Grasshopper_Primer 第一版和第二版的汉化翻译,NCF、Shaper3d 等也给我们提供了交流平台,目前上已经积累了大量的中文学习。总是在不断演变和更新,在我们翻译 AlgorithmicM的版本从 0.5.0099 更新到了 0.6.0059。但 AlgorithmicMling 这本书的过程中,Grasshopperling 这本书对算法思维的关注更甚于对技巧本身的使用,

3、正如作者所说:本书的章节设计是以“如何结合几何对象和算法逻辑”以及“使用算法思维来处理某些设计”为出发点,因此本书更能帮助你解决如何使用“参数化”“算法”来辅助设计的迷茫。当然,本书中作者列举出的实例涵盖到了设计的很多方面,是一本绝佳Grasshopper 实例。感谢以下志愿者对本书的翻译工作作出了努力:(排名不分先后)犀牛Grasshopper详细计工作坊: 淘宝TAO设关于本书中文版的任何建议和意见请致信 ic.w137644-11936346401.38.M5IFz2&id=521346428618校对、编订:Op-tin、王大川翻译:王大川重庆大学东来-西往上海交通大学西安科技

4、大学大连理工大学沈阳大学II使用GRASSHOPPER算法建模简介你尝试过LEGO公司的Mindstorms NXT人套装程序吗?联想一下我们建模也以那种行。目前所有行业似乎都在倾向于使用算法和参数化进行处理,为何设计不那样做呢?我在AA学院攻读新兴技术与设计课程(Emergent Technologies and Design)的过程中,我发现在算法设计和相关方式建模的领域里,Grasshopper是以这种方式来完成项目的一个强大平台,我遂决定将我获得的诸多经验在这本书里给大家。我这样做也是因为我发现在这非常有趣)。这是本书的初稿,我希望以个领域的著作、相关非常有限(尽管有很多后能逐渐改进之

5、,同时我也希望它能对你有所帮助。mad Khabazi犀牛Grasshopper详细 淘宝店铺TAO设计工作坊:© 2009mad Khabazi本书以电子文档的形式制作和用于评论中的文字除外。作者,本书的不得进行的再利用,m.khabaziIII目录第一章_算法建模1第二章_入门52_1_入手. 62_2_ Grasshopper的基本要素72_2_1_界面、工作区72_2_2_运算器82_2_3_数据匹配142_2_4_运算器帮助(弹出菜单)162_2_5_命令行式运算器寻找172_2_6_几何体预览. 172_3_其他. . 18

6、第三章_数据设定与数学. 193_1_数据设定203_2_点和点阵223_3_其他数据设定233_4_函数253_5_数值和类型283_6_挑选数据303_7_2D几何图案35第四章_变动464_1_和工作平面484_2_对于二维直线和曲线494_3_结合实验:再保险塔574_4_关于吸. 68IV第五章_参数化空间805_1_一维(1D)参数化空间815_2_二维(2D)参数化空间835_3_空间之间的转换845_4_参数化运算器基础855_4_1_曲线上取值855_4_2_曲面上取值865_5_参数空间对象增殖88第六章_ 变形和形态生成966_1_变形和形态生成976_2_面化996_3

7、_微调1026_4_回应性调整106第七章_NURBS曲面和网格1127_1_参数化NURBS 曲面1137_2_与NURBS1247_2_1_几何学与拓扑学1247_3_粒子系统1267_4_色彩分析1357_5_操控,作为一种设计. 139第八章_. 1418_1_数据表1438_2_激光切割和切割体组装155第九章_设计策略170参考文献174第一章_关于算法建模2关联式建模第一章_关于算法建模如果我们视些几何学和数学设计是一门以表现表达空间的为目的学科,在这个过程中我们通常需要处理一。在学的历史中,不同类型的风格呈现给了我们多种多样的几何形式及与之相关联的逻辑性,而且每个时期处理这些几

8、何学的。自从计算机开始辅助设计以来,对于模拟空间和相关几何,它便成了整个设计过程中不可或缺的一个组成部分。计算生成的几何形式成为一个有趣的研究课题,编程算法与几何学算法相结合的学科被称作生成算法(Generative Algorithm),尽管许多3D才正在为设计行业提供可能性,就像可以帮助模拟几乎所有的空间形象,但是生成算法的观念设计领域中的“参数化设计(parametric design)”。师现在开始使用形式曲线和曲面来创造和研究空间,以传统约定俗成的被称作“ 欧几里得空间” 的几何空间形式。正是学与数字技术的结合产生了著名的“ 泡状物(Blobs)”,并且推动对它的研究。计算机技术的发

9、展极其迅速,展的脚步。学也正在设法跟上数字技术发当代学在经历了“泡状物”之后显得更为复杂。设计已经受到来自多层关联和高度复杂的算法几何潜移默化的影响。使用传统来设计具有多部分和复合模式而又在外观上为自由曲面、曲线形式的绝非易事。目前来说,算法和代码正是解决这些难题的。显而易见,当我们需要琢磨某种复杂形式的几何形态,我们需要借助恰当的工具,特别是能够模拟这些几何形式以及其属性的计算机。因此,师们开始对群智算法( Swarms)、细胞自(Cellular Automata)或是遗传算法感,并藉此寻找适合设计的算法系统以现有的平台体系。这将是一个复杂性和多样性相结合并且充满创造力和美好前景的课题。第

10、一章3关联式建模图例1.1 进化计算和遗传算法的参数化模型,2008下学年度。mad khabazi,AA学院新兴技术研习班,导师Michael Weinstock,更进一步来看,在材料系统的内在属性中置入算法法则在目前的参数化概念中似乎更为可行。分析一下材料特性和它们在设计阶段对整体环境的影响,那么这些组件和系统内在属性的就可以置入这个设计的参数化模型之中。因此这些遗传算法不仅仅是与形式上的遗传有关,而且可以将其置入材料系统的内在逻辑之中。“参数化设计的内在逻辑在此可以帮助我们作为另一种设计的出发点,其中之一就是参数化模型的几何学严谨性最初可以在单个部件范围内下整合业上的限制、装配逻辑和材料

11、特性,进而增殖这些单个部件以形成更为复杂庞大的系统和集合。这种用对参数化的可变性的探索来理解这外在的内在行为并且利用这种理解来制定相应的策略以使系统能够良好反馈整个环境状”(Hensel, Menges, 2008)。为了处理这些复杂的对象,一个设计过程通常开始于一个非常简单初级的阶段,然后再逐渐添枝加叶。复杂形式是由不同层级组成的,每个层级与其相逻辑和细节,这些层级也是互相和互相影响的。在理论上这种通常称作“关联(Associative ”。一般而言,关联模型涉及到这样法,设计元素在多层级和每个单层级下被逐步建立,这些元素的某些参数也成为在另一个层级其他元素的发生器,藉此延伸,逐步形成整个几

12、何体系。例如,某条曲线的终点可以是另一个圆形的中点,这条曲线发生任何改变都会使该圆形发生相应的改变。从根本上讲,这种设计需要处理大量数据和计算过程,并且通过计算机算法逻辑来实现。不同于绘图,算法生成建模通常以数字、数学法则和计算式开始作为初始数据来生成对象。就算是从对象开始,也会从该对象中提取参数数据来进行。设计中的任何对象很多内在属性,这些内在属性可以用来作为基本数据供以使用以及提供可能性让设计得以成长。这个过程之所以称作“算法”,是因为在这个可能性的过程中,每个对象在运算法则中的生成都是通过先前准备的的数据作为输入条件,对象本身也能输出数据供以这个运算法则中的其他步骤。关键之处在于一旦程序

13、完成,所有的几何形态都很容易实现调整。在一个设计中设计者通常亲历了从起始点至具体细节的设计成品中的每个元素。事实上,既然设计成品是一套运算法则的产物,一旦运算法则的初始条件发生改变那么结果也可相应得到更新。在传统设计中我们经常在纸上修改确定设计然后再到计算机上建立最终模型,以避免耗费时间的模型修改。一旦设计中的变化影响到其他几何元素,修改这些因为与变化对象相关联而发生变化的对象是一件非常麻烦的事,所有的这些几何体都将重新调整、重新设置大小、重新确定朝向甚至是重新绘制一遍。现在我们可以在设计项目中建立数字化的草图模型来推敲,生成大量有变化的形式以及调整只通过一些关键几何参数来它们。现在我们可以将

14、材料属性、过程和装配逻辑置入模型参数中。第一章4关联式建模现在我们甚至可以对环境做出反馈以及关联到更广义的情景当中 “参数化设计让我们认识几何行为模式以及认识与之相关联的系统性能和趋向。进一步接收外界环境的反馈,这些动作趋向又能通过其参数的差异性(内在属性)影响特中的发展 ” (Hensel, Menges, 2008)例1.2 A:形式-寻找膜结构中的极小曲面,物理模型;B:使用Grasshopper研究“膜”的运动。mad Khabazi,新兴技术与设计设计小组,导师Michael Hensel 、 Achim Menges,2008下学年度。Grasshopper 是犀牛上的处理生成算法

15、和关联模型的一个平台。以下章节的设计是以“如何结合几何对象和算法逻辑”以及“使用算法思维来处理某些设计”做为出发点。犀牛Grasshopper详细 淘宝TAO设计工作坊:c.w137644-11936346401.38.M5IFz2&id=52134642 8618第二章_入门6入门第二章_入门2_1_入手当你完Grasshopper时,你应该通过浏览Grasshoppe的主页来了解一下它是如何操作的,上面也会有一些入门去指导你如何进行操作,如果你看过”Grasshopper Primer”在(AndyPayne of Lift Arch

16、itects),那么你应该已经对Grasshopper的运算器基本原理掌握的差不多了,如,多种类型的曲线,曲面等等。我反复强调这些信息,我希望你可以去理解,所以在接下来的章节中,我 把重点放设计上的强大功能。在接下来的学习中,假设在用不同角度的思维方式来发挥Grasshopper在你已经有一定的基础,所以我就不再在“曲线的阶数”这种上浪费笔墨。为了更好的学习和掌握Grasshopper,我建议大家最好登Grasshopper的网页,在这里你会学到一些入门的基本知识,你也可在中参与讨论以获得新的信息,在此章节中,我要对工作界面和我们在学习前应掌握的基本知识作下简单总结。第二章7入门2_2_ Gr

17、asshopper的基本要素2_2_1_界面, 工作区和WINDOWS界面同出一辙,Grasshopper共由两大部分组成,即运算器面板和工作区,运算器面板中提供了设计用到的所有区,Grasshopper界面的其他,工作区可以用来编辑运算器,你也可以将运算器直接拖至工作也很容易操作,我们会在接下来的学习中逐步了解。(如果你想了解取, 请细节)。explained_26.html获图例.2.1. Grasshopper计算器按钮和工作区。第二章8入门2_2_2_运算器在Grasshopper的面板下有不同种类的工具栏,你可以在 9种工具栏下找到你需要定义的数据类型,如Params, Logic,

18、 Scalar, Vector, Curve, Surface,Mesh, Intersect 以及 XForm。参数(Parameters)是指数据类对象,例如“点”或“线”对象,我们也可以直接从Rhino中手动选择这些对象。运算器是指对参数对象进行变动的一类工具,例如“移动”、“定位”或“解组”。通常情况下我们需要输入相关参量才能让它们工作。但在本手册中,为图方便,我使用“运 算器(component)”这个词来指代工作面板上的任何对象!在文本中我会对运算器单词使用<>符号标示出来,例如<Point>。<Point> 运算器如果你右键点击某个运算器按钮,

19、会弹出一个包含该运算器相关功能属性的菜单,这个菜单我们称作“弹出菜单(context popup)”。<Pt> 运算器的弹出菜单第二章9入门定义附加几何体通常在开始设计的时候我们需要花费一些时间在Rhino工作区中先建立一些几何体,如 点, 线 , 面, 互相叠加形成复杂的形体, 因为任何对象都需要用一个运算器与其对应, 使其在Grasshopper中变得有效,所以我们可以通过Grasshopper面板中的PARAM工具栏中的运算器来给Rhino中的几何体加以定义。把适合的几何体运算器拖至工作区后, 通过右击运算器, 选择“set one . / set multiple ”可以把

20、Rhino中的几何对象指定给运算器。通过指定单个或多个几何对象给运算器, 该对象就变成了Grasshopper中可以调用的一个对象。这意味着我们可以通过手动创建物体和编写程序语言两种方式在Grasshopper中创建物体。图例2.2. Params > Geometry菜单下的不同类型几何对象下面举一个简单的例子。比如我们在Rhino视图中定义三个点,想使3点连线形成三角形,那么首先我们需要将点导入Grasshopper中,在Params >Geometry > Point找到<Point>运算器。单击并将其拖至工作区右击鼠标并选择set one point 选择

21、其中一个点,其余两点依次进行相同操作(图例2.3)。第二章10入门图例2.3. Grasshopper运算器从Rhino中选择点。图例2.4. Grasshopper工作区以及被定义的三个点在Rhino工作区变成(x)状态。我把点运算器重新命名为A/B/C对应Rhino上相应的选点以便在Grasshopper工作区更好的识别运算器。第二章11入门运算器和运算器的关联我们可以应用这些运算器去达到多种不同目的,通常一个运算器可以从多个数据源中获取数据(如参数)并输出结果。我们需要做的是将这些含有输入数据的运算器与编程运算器的结果与需要这些输出数据的运算器相连。,把输出回到刚才的例子, 在Curve

22、工具面板工具栏中,在Primitive区域可以找到<line>运算器。将其拖至工作区,然后将<point A> 拉至<line>的A把手,将<point B>拉至B把手(鼠标左键按住运算器一端的“半圆”然后将其拖至目标运算器上的另一个“半圆”,你可以看见在Rhino中,两点之间绘制了一条直线)。图例2.5. 拖拽<point B>的输出端至<line>的输入端将<point>运算器和<line>运算器连接起来。现在将一个LINE运算器拖至区将pointA,pointB至其输入端,使BC两点连线,拖至

23、第二个LINE运算器至工作区按照相同操作我们可以得到一个三角形。图例2.6. <line> 运算器可以在连续的两个点运算,可见任何运算器作为数据源可以多次被使用。第二章12入门图例2.7. 如果你在Rhino视图中改变点的位置,这个点在Grasshopper中的坐标(X点)和三角形的形状将随之改变,而不需要重新进行操作。正如在第一个实例中所见,关联建模技术可以使手动馈给我们,而不需要重新进行繁琐的操作。点的位移而及时的把变化后的结果反输入/ 输出如前面所言Grasshopper中每个运算器中的输入项与输出项意味着它可以处理输入数据以及将处理后的数据输出。运算器左边为输入部分,右面为

24、输出部分,任何数据来源都可以与运算器输入项,输出的为经过运算后的结果。你需要知道在函数输入何种类型的参量和之后要得出何种结果,接下来让我们来了解下不同运算器所需要的数据类型,将鼠标箭头在运算器输入输出部分停留,你就可以在工具提示上看到此位置所需要数据类型。图例2.8. 弹出工具提示第二章13入门运算器多重连接有时一个运算器可以连接多个数据来源,想象一下上面的例子,如果你要用2条线连接A topoint B and C.你可以用两个不同的LINE运算器或只用1个LINE运算而把B C 点同时连接在LINE的B项,如果想增加一条源,你只要按住SHIFT拖拽连接线至输入端即可,否则Grasshopp

25、er会将原有的数据源替换掉(图例2.12)。当按住shift键时,连接线的端头的箭头周围会出现绿色的数学大括号并且出现一个正常情况下为灰色的 (+)小图标。你也可以使用Ctrl键来取消运算器之间的连接(或者使用菜单)。此时,箭头周围的大括号会呈现红色,并带有一个(-)小图标。图例2.9. 通过按住shift键来建立运算器的多重连接。颜色编码Grasshopper中自带的颜色编码可以显示运算器的工作状态。图例2.10. 颜色编码运算器若显示为灰色则表示该运算器的数据流没有,可以正常工作;如果运算器呈橘红色表示它至少有1个待解决的,但这并不影响其;而如果运算器呈红色表示数据源(如数据类型不匹配)出

26、错而无法正常运行,为了使其正常算器的右键弹出菜单中寻求最初帮助(context,你必须设法找出错误的源。你可以在运> Runtime warning/error),然后检查输入数据找到错误。运算器显示为绿色表示该运算器被选中。在Rhino建模区中与该运算器相几何体同样会呈现绿色(除此之外的其它Grasshopper会呈现红色)。预览在Rhino中创建几何体的运算器的弹出菜单中有“Preview”选项。我们可以利用这个选项在Rhino场景中隐藏或是显示该几何体。运算器一旦被取消预览它会呈现较深的颜色。我们经常利用第二章14入门Preview选项来隐藏多余的对象 如线,面,以免在复杂模型中型

27、中发生。2_2_3_数据匹配对于多数Grasshopper运算器来说我们经常为其输入一组数据而不是单个数据,你可以通过提供一组点给<line> 运算器来更 而不是反反是一条,我们可以用一个运算器来达到成百上千个对象。来看这个例子:如图我这里有两组各有7个不同位置的点,我们拖拽2个<point>运算器然后点右键单击选择setmultiple points来将这些点导入Grasshopper中。会形成七条线。可以看到我们也可以应用一个运算器来生,将2个运算器与LINE运算器相连就个对象。(图例2.11)图例2.11. 多重点集以及在它们之间产生直线。第二章15入门但是如果两

28、个POINT运算器中数据列表中的元素数目不同会出现什么情况?在此例子,第一行有7个点,第二行有10点在这里我们在LINE中加入一个新概念,称为“数据中看到三个选项:匹配”右键单击运算器标题在contextShortest list(短排法)Longest list(长排法)Cross reference(错排法)在图例 2.12中来看它们的不同之处:图例2.12. 数据匹配 A: 短排法(shortest list), reference)。B:长排ongest list)和C: 错排法(cross第二章16入门很明显,短排法采用最少的一条数据来建立直线,而长排法采用最长的一条数据来建立直线,

29、同时短数据列的某个数据被多次使用。错排法两个数据集合中的任何两个数据的联系。错排法需要处理大量数据,因此很多时候在这种去情况下更新场景时会花较长的时间。既 然 图 像 阐 释 得 很 清 晰 , 因 此 我 不 再 赘 述 , 请:ofdatastreammatching.html 获取信息。2_2_4_运算器帮助(弹出菜单)我不再把所有运算器一一作,而在接下来的学习中逐渐了解,我建议你在面板中随便选出2个运算器,在context所需要的参量。(右键弹出菜单中)中点击HELP来熟悉此运算器的功能及其数据类型和图例2.13. 运算器弹出菜单和帮助页面。第二章17入门2_2_5_命令行式运算器寻找

30、如果你知道你想要运用的运算器名称,或者你想快速的搜索到所需要的运算器,你可以在工作区双击鼠标左键,键入运算器的名称来获得。图例2.14.通过在工作区内双击鼠标左键弹出的到工作区。框中输入运算器名字来寻找<line>运算器,运算器会自动添加2_2_6_几何体预览图例2.15. 为了提高工作效率和得到更快的场景更新,当你的项目场景很大时,使用线框显示可以优化场景提高速度。第二章18入门2_3_其他在网上有许多学习,可以些有创造力的想法,这里我提供一些学习:Grasshopper主页:McNeel Wiki站点上的某些:(可到其他)还有前面提到的Grasshopper 初级:以及很容易在

31、互联网上搜索到的上百的。第二章第三章_数据设定与数学20数据设定与数学第三章_数据设定与数学尽管我们在使用一般3D建模时,我们使用建模按钮来选择和建立几何形体,而不用考虑其数学实质。但是为了处理算法建模,正如它的名称,我们需要或多或少考虑一些数据和数学问题来建立运算法则和生种几何形体。既然我们并不是所有形态都手动生成,因此我们需要处理一些原始数据作为基本要素让这个运算法则起来。算法工作的容易理解而且逻辑清晰。正如我所说,我们用算法将一个物体在X方向100次,而不是在屏幕上用鼠标点击100次,为了完成这个步骤,我们需要定义100这个数据最为复制次数,定义X轴作为方向,之后算法就能自动完成工作。算

32、法建模中我们建立的几何体背后数学原理可依。我们可以使用这类容易理解的数学函数用于我们的算法当中,将数据和物体结合,生成无穷无尽的几何体组合。让我们来具体看看!算法其实真的不难。3_1_数据设定首先,我们需要瞧瞧数据类运算器,来看看我们如何进行不同类别的数据设定,之后我们就能相应的使用它们。单个数据最有用的数字生成运算器当属<Number slider> 运算器(Params > Special> Number slider),它可以个数字而且可以手动调整。可以是整数,实数、奇数和偶数,并带有滑块的上限和下限设定。你都可以跳过弹出菜单的“EDIT”命令设置。通过Param

33、s > Primitive > <Integer>运算器可以设定单个固定的数值。第三章21数据设定与数学数列我们可以用<series>(Logic > Sets > Series)运算器来获取离散的数值,这个运算器可以产生一组我们可以调整其起始量,公差,项数,的数值。0, 1, 2, 3, , 1000, 2, 4, 6, , 10010, 20, 30, 40, , 1000000数值范围我们可以定义一个含有最大值与最小值的区间,然后在这个范围之间按照一定的间隔均分来得到一系列数值。(Logic > Sets > Range).1,

34、 2, 3, , 101, 2.5, 5, , 101, 5, 10区间【译者注:新版本中interval已经更新为<domain>(Scalar>Domain>Domain)】区间提供一个实数范围中较大值和较小值的间隔区域。这里有一维区间和二维区间两种类型,位置是 Params > Primitive > Interval/interval2,或者Scalar > Interval ,这种让运算器位于多个相关位置的程序设定让工作更为灵活。interval本身不提供数据, 它只是提供最大值和最小值的一个区间。你知道两个实数之间有无穷的数。我们可以使用不

35、同的函数来分割它们并且最终作为需要的数值使用。第三章22数据设定与数学3_2_点和点阵点是几何体与算法建模中的基本元素,正如点可以标记空间中的一个具条曲线或者多条曲线的起始点,圆的中心,平面的基准点,或者充当其他的有多种办法获取点。置,他们可能是一,在GH中我们可以- 我们可以用Params > Geometry > point从视图窗口中将一个或多个点通过POINT运算器导入GH工作,你可以利用这些点来达到不同目的(在RHINO视图中手动移动点的位置后,grasshopper会自动将数据更新不需要再次进行操作)。- 我们可以用(point XYZ)运算器vector > p

36、oint > point xyz)导入点,根据要求,用xyz数值来定点的坐标。- 我们还可以用<grid hexagonal> and <grid rectangular>还产生点阵。- 再者我们也可以用不同种从集合对象中抽取点,如endpoints, midpoints,等等。- 有时我们可以用planes (origins) and vectors (tips)作为几何体或vice versa.的起始点。我们已经在chapter_2中看到了生成点的,下面让我们看看如何用<series>,<range>and<number slid

37、er> 以及其他生成点。图例3.1. 用来使用<point xyz>得到一个点, 你可以通过 输入xyz的值来修改点的坐标。图例3.2. 用<series> and <point xyz>产生一个点阵,用第一个<number sliders>(与N项)两点间的距离,第二个<number sliders>来然你也可以尝试其他选择。生成的点的数量,将数据匹配模式改为cross reference 可以形成点阵,当第三章23数据设定与数学图例3.3. 定义一组5个数的从0到1的等差数列。并与<pt>运算器是相连,选择Lon

38、gest list数据匹配模式,你会看到在RHINO工作区有6个点,这些点的横纵坐标都在(0,1)之间(你也可以更改range运算器的区间)。第一个例子很简单,你可以通过不断的学习来研究这些运算器,来产生不同种排布的点阵。间距3_3_其他数据设定随机数设定接下来要产生一组随机分布的点,我们所需是一组随机数据而不是一组有等差的数列来链接<PT>运算器(我用<point>而不是<point xyz>运算器),在这里向大家介稍如何Random运算器,为了避免出现相同的XYZ值 我需要为每一个输入项定义不同的随机数值。图例3.4.系列随机点。<random&g

39、t;运算器通过<number slider>输入提供了10个随机数,之后这个数列输入到<jitter> 运算器(Logic > Sets > Jitter)转换为点的Y坐标值,以及再次使用转换为Z坐标值。否则你会在最后的生成点网格看到某种规则图案 (仔细检查一下!)。将数据再次设定为“longest list”以避免最后产生规则图案。在图例3.4中所有点都分布在0到1范围内的空间中。要想改变点的分布区域我们需要更改数据范围,<random>运算器用此来产生数据。我们可以通过手动设定<random>运算器的范围,或者通过一个数据滑块来输

40、入给<random> (图例3.5)。第三章24数据设定与数学图例3.5. 用<interval>运算器来定义一个范围(Scalar > Interval > Interval)来扩大点的分布区域(注意与Fig.3.4视图中点阵的函数变化)如果你只用一个大限值(最小值仍为0)。限定一<random>的范围,它仅仅可以可以作为这个范围的最斐契数列如何创建一组两点间距离成等差数列的点阵?让我们看看可以利用的运算器,在logic标栏中找到<Fibonacci>运算器。斐契数列是一组某项值等一项的值的和等于后一项之和的一组数列。N(0)=0,

41、 N(1)=1, N(2)=1, N(3)=2, N(4)=3, N(5)=5, , N(i)=N(i-2)+N(i-1)这里列出该数列的一些值: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 你可以看到数值增长很快。在这里我用<Fibonacci>运算器(Logic > Sets > Fibonacci)来产生逐渐增长的一组数值,并用PT运算器与它相连,生成渐变点阵。图例3.6. 使用<Fibonacci>运算器来产生间隔越来越大(非均匀数列)的点阵。点的数量可以通过<number slider>运算器来调整

42、。.第三章25数据设定与数学3_4_函数函数运算器是能够提供数学函数的一类运算器。GH提供了处理从一个到八个未知数的函数类型(Scalar > Expressions).函数需要各种数据的输入, ( 不一定总是数值, 也可能是值, 坐标等。) 然后更具用户定义的函数进行运算。自定义函数可以通过双击运算器的(F)部分,然后通过弹出的Expression Editor 来定义函数。.Expression editor带有很多的预定函数和数学符号供以使用。数学函数用已经被定义好的运算器有时无法达到目的,因此为了达到预期的结果,我们还可以用函数解析式来生成形体。举一个简单例子,函数式X=Sin(

43、t) and Y=Cos(t)t的范围是(0到2pi),我们应用<range>运算器来生成0到1区间内的一组数值,使用函数来乘以2 我们就得到了0 倒2pi的范围。我们就是得到了一个完整的圆。图例3.7.生成圆 ,你要用到<Sin> and <Cos>函数,位于lar > Trig。 (F(x)=x * 2Pi)。图例3.8.通过函数数列定义的系列点和形成的复杂曲线,(x>F(x)=x/100, y>F(x)=x/10)。选择的绿色函数F(X)是一个简单的函数,将<number slider>产生的数据加1,以让<seri

44、es>生成的数值和斐例子目的是说明我们可以通过简单的数据设定生成复杂有变化的几何体。契数类似富有变化。这第三章26数据设定与数学图例3.9.<range>运算器生成的0到2的一组数列使用自定义函数乘以2Pi让其变为0到4Pi的一组数, 再使用这个函数处理:(X=t * Sin(t), Y=t * Cos(t),然后输入给<pt> 运算器。.你可以将<range>与<pt>间的所有运算器都省略,用2个编辑变量表接来定义整个程序。的函数运算器与<pt>链X of pt > F(x)=X * Sin (x*2*Pi)Y of p

45、t > F(x)=X * Cos(x*2*Pi)图例3.10两组倒置相切的螺旋线点集(将<range>设置为0到4区间并与2pi相乘,使第一组数据的变量取值变为0到8pi区间,并从Logic > Lists中找到<Reverse list>运算器与该区间区间)。,使得第二组数据的变量取值变为8pi到0首先 <pt>: X=t * Sin(t), Y=t * Cos(t) 其中 t=0 to 8Pi然后 <pt>: X=t * sin(t), Y=t * Cos(t) 其中 t=8Pi to 0 (<reverse list>

46、;)第三章27数据设定与数学图例3.11.乌斯点。X= Sin(u)*(-2+v*sin(u/2)Y= Cos(u)*(-2+v*sin(u/2)Z= v*Cos(u/2)u=0 to 8Piv=-2 to 2函数的功能很强大,你会找到很多的数学表来与你的数据进行匹配,重要的是你可以通过对原始数据进行修改,进而形成一系列不同的数据,并用这些数据与其他运算器。我们可以看见同过一些简单的数据设置就可以生几何形体的数据源,在下面的学习中我们会不断的深入。样的几何体,我们要使得这些数据作为生成图例3.12.恩奈培曲面(Enneper surface),使用Rhino的Math function 插件。

47、用方程式建立曲面。第三章28数据设定与数学3_5_数值和类型一组数据并不受数量的限制,在程序与算法中,数据类型对程序的执行起着的作用,由于我们现在正在学习算法,我们应该知道算法的进程并不总是呈线性增长的,有时候我们需要决定他们是否有必要执行下去,在,我们称此为条件语句。我们会通过条件语句来程序是否符合特定条件和该如何做。而条件语句中的yes和no在算法中我们用值的true 、false替代。如果语句满足条件,则返回值为true 否则为false。当你想执行某些命令或是按特定要求选择对象时,值起着重要作用。图例3.13.在这个例子中我们先随即生成10个数值,并用<function>运

48、算器来这些值是否小于一个最大上限值。将<function>中的表定义为X>Y并与<panel>,你会看到所有满足条件的数值显示在 <panel>中。图例3.14 A 在这个例子,我们用<Modulus>运算器(Scalar > Operators > Modulus)来得到这些数值除以2所得到的偶性。,并且用<function>运算器来这些值是否为0,我们可以在<panel>中看到结果,并且这些数值的奇第三章29数据设定与数学图例3.14 B 此例中,我们用一个<Gate And>运算器(Lo

49、gic > Boolean > Gate And)将两个<function>并在<panel>中观察习如何利用这些值的变化,可以看到只有即满足是偶数并且小于上限值的数值的返回值为true,下面我们来学值。在Logic>Boolean面版中有多种运算器,你可以按你所需更好的将他们结合起来运用。图例3.15. 我们用<Boolean>运算器( param>Primitive> Boolean) 来定义一组值, 或用<Boolean Toggle>(param>Primitive> Boolean>Tog

50、gle)来定义单一可变的值。第三章30数据设定与数学3_6_挑选数据很多情况下我们需要选取一组已给出数据中的某些元素,我们的函数不需要对所有的元素起作用。我们需要从一组数中选出我们需要的数据或者让程序忽略掉其他数据。Grasshopper中有2个<cull>运算器可以用来移除数据列表中的单独数据。<cull Nth>可以将数据列表中的第N个数据删除,而<cull pattern>则是用一系列的值来移除列表中与这列值所对应的数据,值为true的保留,flase的则删除。如果,列表中的数据数量与预先在运算器中定义一组简单的式反复对数据列表中的数值进行值数量相同,

51、则仍按同样的方式执行运算,但是你也可以值(如False/False/True/True), <cull>运算器可以相同的模运算。间距逻辑我们想要从一系列点中以它门到参考点的距离为参量选出若干个点,用<point>运算器来定义这些个点,首先我们需要拖拽一个<distance>运算器到面板(Vector > Point > Distance)用来测量这些点到参考点的距离,将得到的数据与<F2>运算器的y相,同时<number slider>运算器与x输入项,将他们相比较(<F2>component defined

52、as f=x>y).,在<F2>的输出端将会产生一系列的值,通过这些值我们可以这些点到参考点的距离与上限值的大小,将输出结果与<Cull pattern>运算器的P项,将会得到符合条件的点。如上所述,<Cull pattern>运算器可以将数据列表与一组值关联计算,并且将对应值为false的数据从列表中移除掉,从而得到值为ture的一系列点,并且这些点到参考点的距离在<number slider>所限定的值范围内。为了更直观的看到结果,我们还可以用<line>运算器将这些点与参考点连线。图例3.16. 从一个点集中选取点,通过它

53、们距离某个点的距离,使用<Cull pattern>运算器。第三章31数据设定与数学地形利用前面所述的以距离为参量选取点的原理,的一系列点来放上树木模型。在山地模型上以高度为参量选取在等高线上图例3.17.地形轮廓线上有一系列点。如果想要以高度为参量选取点,我们要先用<point>(更名为 topography)运算器来定义一组点,其次我们需要得到这些点到水平面的垂直距离,以同样的原理来选出符合条件的点,拖拽<Decompose>(Vector > Point> Decompose)运算器到面板,得到这些点的z轴方向的坐标值,将其<F2>运算器X项, 并与<number slider>运算器的数值做比较, 输出一组值。<Cullpattern> 运算器会将值为true 的这些z 轴方向高度大于定值的一系列点筛选出来。(<F2>component defined as f=x>y)。Fig.3.18. 选取高度高于4.7550个的点! (用户自定)。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论