作为一名百折不饶的黑魂白金玩家同时也是个狂热的异形建模爱好者,一直想要有时间教大家怎么像游戏闯关一样把GH也玩得溜溜的,想要啥奇怪的造型,啥炫酷的表皮,都能像玩游戏一样轻松愉快。于是乎,借助疫情产生的空档期,我起草了一份GH白金攻略,希望大家能喜欢。
首先,像玩任何大型单机游戏,时长是个很重要的因素。笔者是2018年11月的假期正式开始学习GH的,看了skywolf的数字冥想,表叔白云山的小红书,网上流行的各种GH电子书,再加上一些Youtube上的视频,C# for grasshopper等等......笔者学习的时候每个案例都做了,每天学2-6个小时,期间使用了番茄钟进行监督和计时,3个月学成一共花费了400小时。但是!并不意味着大家学会GH也需要那么多时间,按照初步学会一项技能需要20小时来计算,搞定这份攻略,也就是20小时的时长,对于这样的游戏,也就2天时间而已啦,so easy~~
那让我们开始吧!
游戏 GH快捷键
像玩任何游戏一样,一开始当然是熟悉快捷键啦,快捷键都不背熟怎么捡装备,怎么打小怪?
OK,首先我们点击可爱的小蚂蚱图标,打开GH。
好的,界面弹出来了,首先我们把GH这样摆好。左边是Rhino,右边是GH。(当然也有一个GH小插件,可以让Rhino的页面像画中画一样显示进来。但后来我发现用途不大,装逼的话倒是挺酷。)
(咦,你的Rhino 6版本怎么跟我不一样?其实一样的,只是Rhino界面的颜色我自己设置过,做灰暗一点可以保护眼睛。)
接下来,我们来熟悉基本操作:
1. Double press left button to input your command. 双击鼠标左键进行命令输入。
读者可能会说我这里又跟别人的教程不一样了,人家教GH不是都要先过一遍这头上的图标吗?Nonono,完全没必要先了解那么多。我的经验是,要学好任何一个软件或者技能,兴趣最重要,而不是强迫自己去接受和吸收知识。带着心理负担是很难坚持得下去的。只有觉得GH既有趣又实用,形成学习的正向反馈,你才能解锁更多成就直到拿到白金奖杯~
就像学任何程序语言的第一句话是:Hello,world。我们学任何建模软件的第一步都是画一个点,Hello,point!
然而尴尬的事情发生了,页面什么东西都没有,Point图标也黄了...
我们把鼠标移到Point图标上,看看它写的什么:Empty Point parameter,啥意思?
啥,看不懂,英语不好?没关系的,忍忍就习惯了,GH没有中文版哦(^_^)
在这里,没有点的参数是因为GH中的初始参数是需要来自Rhino的,毕竟是个插件,不是独立的建模软件。如果我们在Rhino中画好一个点,再把这个点的信息给到GH,不就可以了吗?
接下来我们在Rhino当中随便画一个点,在GH中Point图标上右键单击Set one Point,再选中这个点,就可以把这个点的数据给进来了。这是RH-GH联动建模的第一步思维。
我们的点画好了,接下来怎么办呢?我们试试看移动这个点吧!我们知道Rhino中的移动需要输入命令:move,那GH做为它的好基友,也能这样操作吗?
答案是当然可以啦!基本上Rhino所有的命令都可以在GH中找到。OK,输入Move以后,又出现了一个小图标。接下来我们来到愉快的连电池环节。
(为了让点更显眼,我把Rhino的背景设置成了黑色)
等等,现在这个点是默认向上移动的,我可以改变它的移动方向吗?当然可以,聪明的盆友已经发现了。把鼠标移动到Motion这里,有提示语:
这又是什么意思呢?可以设定移动的方向吗?我们要输入什么呢?
先别慌,我们先来看看这个点在数据中长什么样子。为了解释方便,我把刚刚Rhino当中画的点移动到了0,0,0,接下来再给个Panel,观察数据的变化。那什么是Panel呢?Panel就是面板,可以用来读取GH运算器中的数据。就当它是个X光扫描器吧!
在这里,我们要熟悉第二个GH快捷键:
2. Double press "//" to access Panel command. Panel 直接双击键盘上的 // 即可。
不要在顶上慢慢找图标或者打字Panel啦。
(为了显示更清楚,我把点的颜色做成了黄色。)
这个“//”在C#中是指用于写注释,不进入程序计算中的语言。而GH本身就是C#写的程序打包组件,所以C#的语言习惯也可以用在GH。
注意,这个Panel除了读取数据以后,也能输入数据。比如:
先双击GH空白处,谈出输入框,然后敲//再加上数字。你就拥有一个定值啦~
在这里,我们又要熟悉一个新的概念,那就是定值和变量。顾名思义,定值指的是固定不变的参数。反之亦然,变量就是可以调节的参数噻。咱们不是经常看参数化大神拉一个数字小条来调节参数,模型就跟着变化吗?看着超级炫酷的功能叫啥?这个就是GH中的Number Slider啦(slider就是滑动的意思)。
好的,那么我们怎么用快捷键找到Number Slider呢?接下来我们使用第三个快捷键:
3. Directly double press left key to input random number to become NumberSlider.
直接双击左键输入任意数字,就能自动转换为NumberSlider。
怎么样?惊不惊喜,意不意外?
“某羊,我要设置小数点怎么办啊,只能输入整数吗?我怎么给它规定范围啊?” No worries, 我们只要右键单击图标,选择Edit 就行了。
既然是和数学设置区间是一个原理,那么我们能输入数学的表达式直接设置我们想要的NumberSlider吗?比如我想要个5.5 到15范围的数。那么我双击输入框:5.5<15
咦,真的会出现一个最小值为5.5,最大值为15的NumberSlider吗?这个嘛,你就自己试试咯~~~
接下来我们打一组小怪! 依次输入单个数据:0.1, 0.2, 1, 10. 1.1,10.1, 11, 100, 你发现了什么?是不是系统自动为你的单值加上了一个区间?
那这个区间是从哪里开始的呢?怎么都是0?
比如0.1就默认为[0.0, 0.1]。但是数字超过了1,10,100,怎么办呢?哦,系统会自动给你增加到下一个区间了。嗯...这不难理解的,多尝试下摸清规律就可以了。
“嘿,某羊你给我过来!我想输入-12怎么显示是个 - 减号啊???”
其实是这样的,输入负数要稍微麻烦一点,得像上面一样输入表达式:X< 0 比如输入-12,就得输入 12<0 (别打我)
怎么样,很高级吧,数学大神的既视感有么有?
好了,咱们NumberSlider的玩法已经摸清了。接下来继续看刚刚的move图标。
那移动多少的位置呢?这时候就把刚刚玩的NumberSlider连上去呗~ 这样,你的点就可以移动啦~
图中蓝色的点(我设置了display)就是刚刚移动以后的点,拉拉Slider试试吧!你的点也会实时移动哦~~
到这里,恭喜你完成了新手关第一个任务,移动一个点!!!解锁成就:GH Starter!
哇,是不是so easy???
想不想继续玩下去?
那我们来移动一组点吧!
在平时的Rhino建模中,我们想把单个的物体转化为一个组,是不是要用Array命令?那么我们在好基友GH的空白处双击敲个Array试试?
(如果有的命令我的屏幕里有而你的电脑里没有,千万别担心,不是版本问题,是我的GH插件太多了...)
在这里,我选择了一个线形阵列Linear Array。
接下来,把我们的点连在Array上,屏幕自动出现了一排10个相同距离的点。按照上面设置move的思路,我们来设置一下Direction方向和Count数量。
OK,那我们接下来试试把所有的点都一起向上移动一下吧?这时候要遇到我们这篇攻略的第四个快捷键了。
4. Hold Ctrl to disconnect the wire. 按住Ctrl键来取消所连的电池线。
接下来,我们把Linear Array中输出端与刚刚的Move输入端连接起来,一排向上移动的点就有啦!
有了两排点,是不是手痒,想再来做点啥?本着点-线-面-体的建模思路,我们先把点竖向连接起来看看?
嗯,连线,直接输入Line试试?哟,还真有。但是注意别选中那个黑色六边形的line,因为那是需要从前面的端口中获取参数的标志。我们想要上下连接两个点,得选上图打勾的Line。
好简单的样子,那我们把下面一排的点也连起来试试?额...两点画一条直线,那我只要找到第一个点和最后一个点不就行了吗?
怎么找呢???通过前面的练习,我们知道了GH的工作模式就是通过电池来进行各种数据传递,那除了单纯的读取数据,我们有办法能提取其中的数据吗?
当然有咯!在这里,我来介绍一位超级好用的NPC,它是一位数据屠夫,名字叫List Item (李斯特 · 爱藤木)。想象一下咱们的一组数据是头整猪,我们只想要这头猪的一个部位,就得请这位屠夫帮忙砍一下。但是!这位屠夫在一次战斗中失去了视力,看不见要砍的部位在哪里,但是可以通过特殊的超能力感知到对方 - 那就是Index(编号)!所以你只要告知这头猪的各部位编号,这位屠夫就能手起刀落,砍下你需要的部分。
这啥意思?请看以下对话:
- 您好,李斯特 · 爱藤木先生,能帮我把这头猪的头和尾巴砍下来吗?
- 不行啊,我看不见猪在哪里。不过我可以感知到一种名叫Index(编号)的神奇物质。你只要把头和尾的Index编号告诉我,我就能帮你分解出任意想要的部分。
- 好的!让我查看一下这头猪的数据列表。(双击//,弹出Panel,连接上,显示出的一串数字就是List.)
- 哦,猪头在0的位置,猪尾巴在19.
-好的,here you go!
原点的位置就是我们的猪头,最后一个点的位置就是我们列表中的19号。左边是爱藤木先生需要的编号,右边是猪尾巴所在的3维坐标上的位置。
请注意!在数据列表中的显示是从0开始的,聪慧的玩家已经注意到了,我们有20个点,但是列表最后一位却是19, 这也就是我们看很多GH高端玩家在玩Range的时候会输入表达式X-1。现在不必理会, 我们还没出新手村呢,先杀杀猪,逮逮鸡,干点农活儿积累经验值吧。
在这里你已经注意到了,我屏幕上的显示又发生的变化,之前做的步骤都被隐藏了???这是怎么办到的呢?
现在来学习本章攻略又一个重要的快捷键:
5. Select the wanted batteries then press Middle key, select Disable Preview. 先选中要隐藏的运算器们,再点击鼠标中键, 选那个蒙眼睛的图标,关闭预览模式。
这样,我们就看不到前面运算器所呈现的步骤啦~~~但并不意味着它们不存在了,只是被隐藏了而已。同样点击鼠标中间那个正常人头图标,你又可以看到它们了。
接下来,按照连接下面点的原理,我又把上面的点连了一遍。
为啥我推荐Ctrl+C来复制呢?
按照Rhino的好基友理论,按住Alt键也是可以复制的,只是不好操作,得先拖动到移动得状态再按Alt才行。不如Ctrl+C来得方便,所以推荐新手村的玩家们先使用最万能的复制方法~
现在我们有了两条线了,是不是有种想要loft的冲动???既然跟Rhino同根生的,那我们直接输入loft看能找到这个命令吗?
又成功了!我说了嘛,一直想着Rhino的建模步骤,GH就迎刃而解啦~~~对吧?
注意这里的Loft,选择Curves的时候,需要按住Shift进行加选,反之,按住Ctrl就是减选啦~~~
有了Loft,我们是不是习惯性的想要挤出这个面?无它,纯手痒尔... (某只建模羊的下意识反应。)
充满智慧的读者们啊,请看看这步挤出面的操作吧,还是熟悉的配方,熟悉的味道啊!跟move那是一模一样啊!
所以,只要熟悉了GH运算器那点小九九,咱们就能举一反三,见招拆招啦!
好了,今天的新手村任务就到这里,请带着你的战利品回家吧!!!
恭喜获得!!!GH...方块一个!!!
- “羊,我刚刚关了GH怎么图形消失了,我做的方块呢?”
- 啊,我还忘记提了。GH中所有的图形都以data数据的形式存在,不像Rhino是实体建模。GH需要将数据进行实例化才可以在Rhino中进行操作。
- 听不懂,说人话。
- ......想象GH中的空间就是天界,所有的图形都是以灵魂的形式存在的,它们从一个电池投胎到另外一个电池。而Rhino就是人间,灵魂想要诞生在世上,需要一个肉身,而赋予肉身的过程就叫实例化...
- “咚咚” (某羊被揍了) 正常点!!!
- 请右击“Bake”...
本章最后一个快捷键来了!
6. Press right key to bake your geometry into Rhino. 右键选择Bake(烘培),你的模型就可以出锅啦~
也许Grasshopper的制作者希望大家把这个平台看成一个大厨房吧,我们在连电池的过程就是烹饪料理的过程,最后放入烤箱或者煎锅里Bake一下,我们的菜就做好啦。
看到这里先别走!!!你刚刚解锁了本关卡最后一个成就 Bake!!!
好了,今天的攻略就到这里~~~我们下次再见吧!
下回预告:爱戴木先生想造一个房子,需要我们山上收集木材。但山间传说有怪物出没,要如何打败它们呢?
作者简介:土冒某只羊
澳洲皇家理工RMIT 建筑系研究生,今年7月家里蹲儿大学毕业了。
热爱参数化设计,异形建模,3D打印。熟悉Rhino+GH,也会一点Maya, Zbrush, 一知半解C#。