×

工业设计互动平台

手机短信,快捷登录

微信登录,快人一步

QQ登录

只需一步,快速开始

Grasshopper中的矢量功能解释及使用方法介绍

发布于 2012-3-8 19 点赞 0 评论 60074 浏览

    Grasshopper 中提供的矢量功能是 Rhino 中没有的概念,因此可能很多即便熟悉 Rhino 的用户在学习 Grasshopper 的时候也会对这部分有一些陌生,本篇教学旨在为学习Grasshopper 的矢量功能提供一些帮助。
    无论在 Grasshopper 中还是初中课本里,矢量就是矢量,他都代表同样的意思:既具有大小又具有方向的量。在 Rhino 中制作模型,比如画曲线,拉控制点,移动,阵列物体等等几乎所有的手工建模都是在反复的做定义距离和方向的工作。而在以程序建模(参数化建模)的软件中,这个工作我们希望是尽量以输入数据和程序自动计算的方式来完成,以替代传统的手工去画的方式,在 Grasshopper 或者其他的参数化建模的软件中用来完成这个工作的工具就是矢量。
    我们先来看看grasshopper中的矢量物件是如何画出来的:如下图中,vector 栏中可以找到 vector 2pt 工具,这个工具 是 Grasshopper 中一个标准的定义矢量物件的工具。
   01.jpg


    其中元件左边的 A 和 B  端需要输入两个不同的“点坐标”数据,右边 V 端便可以输出一个方向由 A 到 B,大小为 A 到 B 的长度值的矢量。
    例如: 在Rhino场景中放置2个点物件:1点2,然后在 Grasshopper 中用两个point元件从 Rhino 中拾取这2个点,然后把这两个 point 元件分别接到 vector 2pt 的 A和 B 端,这样在 Grasshopper 中便生成了一个:方向由12 大小为12的距离值的矢量,如图所示:
02.jpg    
   03.jpg
     Rhino中没有看到矢量?没错,因为矢量不是一个常规标准几何物件,所以在 Rhino 中是看不到矢量物件的,但是有时候为了检查和分析,我们需要直观的在 Rhino 场景中看到这些矢量物件,这种情况下我们可以使用 Display 工具,如下图所示。
    04.jpg
    Display工具物件有2个输入口, A 和 V,V 端接入需要在Rhino场景中显示的矢量,而 A 端则需要输入一个点物件,用于定义需要显示的矢量的起始点

可能你会对这个“起始点”有些疑惑,刚才我们定义的矢量是从12,那么1应该就是起始点呀?为什么还要另外定义一个起始点?这里还要再特别强调一下矢量的概念:矢量只代表了一个具有大小和方向的量,并没有位置的定义。在这个例子中我们是以两个点的方式来定义一个矢量,因此这个矢量获得了这两个点之间的距离和方向的数据,因此还需要告诉程序矢量显示在三维空间中的具体位置,因此我们需要定义一个这样的“起始点”。

在这里,为了直观看出矢量是从点1到点2的方式定义的,所以我们就以点1作为这个起始点输入到display工具的 A 端,如下图所示。

05.jpg


显示效果如图。我们已经看到了显示出来的矢量。

06.jpg


如果我们在display工具的输入口输入其他的点,那么这个矢量就会显示在其他的位置,如下图所示。


07.jpg

08.jpg


以上两个不同的方式只是把同一个矢量显示在不同的位置处,虽然显示出的矢量在不同的位置,但是矢量本身并没有不同。

除了vector 2pt 工具,Grasshopper 还提供了一种直接以一个点来定义矢量的方式,如图所示。

09.jpg


这种方式其实仍然是以2个点的方法定义矢量,只是第一个点是默认的世界坐标原点,所以只需要入另外一个点坐标。这种方式得到的矢量的方向就是从原点到这个点的方向,而距离就是这个点到原点的距离。如下图是使用前面的点1点2输入得到矢量,为了直观,把矢量的起始点设置为原点。


10.jpg


因为输入了2个点:点1点2 ,因此得到了2个矢量。


11.jpg


Grasshopper 中除了如上两中常见在定义初始矢量的方式,还有好几种其他的方法都可以定义矢量,在 vector 栏目的 vector 中找到对应的这些元件。


顺便提一下,我们也可以使用 params 栏目下的 vec 元件直接点右键使用 set one vector 或者 set mutilple vector 在Rhino场景中定义矢量,默认初始点就是原点,也可以在指令区点 startpoint  切换成以2个点定义矢量的方式,也即是前面我们介绍的两中定义矢量的方式。

13.jpg

14.jpg


了解了Grasshopper中的矢量元素的概念之后,下面是一个简单的利用矢量元件的小案例。效果如下:

15.jpg

16.jpg

下面简要介绍一下制作过程:

打开场景,如图所示,场景中有上下放置的两块曲面。

17-300x231.jpg

在 Grasshopper 中,如下图设置

18.jpg


在左边的两个 srf 元素上点右键选 set one surface ,分别在 Rhino 场景中各拾取一块曲面,上下两块曲面都依据UV分布各自提取出100个点,效果如下图所示。

19-300x231.jpg


接下来依据上下两块曲面上对应提取出来的点作为起始点和结束点定义矢量。如图所示

20.jpg

如前面所说,这时候矢量已经生成,按照如下设置在场景中显示出矢量。

21.jpg

正确显示出的矢量效果如图

23.jpg

22.jpg

接下来我们要在 Grasshopper 中作一根圆管的程序,程序如下图所示:

24.jpg

这个程序比较简单,就不具体解释,需要说明:右边的 S 端输出的是圆管几何体,V 端输出的是圆管对应的矢量,其矢量的方向是圆管的轴心方向,大小是圆管长度的值。

Rhino场景中效果图图所示。

25.jpg


接下来要做的就是:把圆管复制到曲面上100个点对应的位置。


在 Rhino中,有一个工具叫做 Orient,中文叫做定位,他的工作原理是首先拾取场景中的2个点作为定位参考点,然后再拾取另外2个目标点,一句前后连个点之间的方位讯息为依据,将物件复制,这个方法的好处是可以同时定位物件的基准点,方向,并且缩放尺寸,不清楚这个工具使用方法的朋友可以在rhino的帮助文件查询该工具的纤细说明。

在 Grasshopper 中,同样有一个 Orient,功能也完全一样,但是用于定位的方式有些区别,它是利用基准点和矢量的方式来复制物件。如图所示:

26.jpg


该元件有5个输入口,G为需要复制的几何体输入端,pA 和 pB 分别为几何体的参考基准点和目标基准点,而da和db则代表几何物件的参考矢量和目标矢量,简单解释就是:pA 和 pB 定义几何体的基准点,而 dA 和 dB 定义几何体的大小和方向。

连接方式如下:

27.jpg


如果前面的步骤没问题,那么正确的效果应该如下图所示,所需要的曲面已经生成。

28.jpg

接下来的编辑曲面的部分因为不是该教学的主要介绍部分因此跳过,您也可以直接在Rhino中处理后面的部分,最终效果如图:每一根立足高度越高也就越粗,越矮的也越细,顶部整体呈现曲面起伏的感觉,整体形成一种有规律的美感。

29.jpg

30.jpg

如下图所示,运用类似的逻辑,配合矢量的运用,可以制作其他更复杂的效果。

39.jpg

40.jpg

41-1024x684.jpg



参与人数 2大洋 +6 收起 理由
Wangjie84 + 3 好东西 初学必看
jinhu525 + 3 非常有用

查看全部评分

本帖被以下淘专辑推荐:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩回复

文明上网理性发言、请文明用语

推荐学习