编程学习网 > 编程语言 > Python > grasshopper python教程(使用ChatGPT在Grasshopper中写Python)
2023
05-05

grasshopper python教程(使用ChatGPT在Grasshopper中写Python)

在DigitalFUTURES组织的AN INTRODUCTION TO AI FOR DESIGNERS系列演讲中,Arturo Tedeschi提到了可以将ChatGPT与GH对接,虽然ChatGPT不能直接操作GH的图形界面,但是它可以帮助写代码,由GH Python运算器来实现。于是我进行了两次小实验以测试其可行性。

实验一:梦露大厦
第一次实验是关于几何描述。我选取了MAD的梦露大厦(Absolute Towers)原型这一新手常用教学模型让ChatGPT尝试。在最开始的prompt中,我尝试让它直接以伪代码的形式告诉我如何建梦露大厦,想把其回答作为新一轮提示词让GPT实现。不过GPT毕竟还无法做图像读取,因此在不知道梦露大厦具体长什么样,只能借助网上对其描述的文字信息的情况下,它提供的方案是建一个平面再进行扭转。
我将提示词换成了please provide a code in Python for Grasshopper 3D that stacks oval-shaped floors and rotates them gradually to form a twisted tower。GPT理解了。在最初的代码中,它已经能够设定层高和楼层数,将其作为在z轴方向堆叠平面椭圆的间隔,并且设定了递增的旋转参数。
但GPT一直无法搞清楚如何旋转几何形。这其中包括两个问题:
ellipse这个class在Rhino Python中并不具备transform这一方法,然而GPT一直试图使用xform来解决它的旋转,因此代码反复报错。解决方法是询问它how do you rotate any geometry with Python for Grasshopper 3D without using the xform method?GPT会反应过来可以调用RhinoScript中的rs.RotateObject这一方法,并给出一个范例代码。再继续问它can we integrate what we have just learned into our previous code,问题解决。
GPT无法正确找到旋转的中心。旋转中心应为椭圆重心,但GPT在找到这个方法上一直有困难,尝试用上述的启发法,它会一直遇到不同的问题。最终解决方案为问它我们能不能用最开始建立椭圆的平面原点来旋转,它会恍然大悟yes of course we can,问题解决。

一边听东南大学的讲座,一边克服网络问题,耗时约90分钟,成图如下:

实验二:L-system树形
因为上参数化设计基础课,在生成式设计这一节中刚好讲到了L-system,因此试着让ChatGPT写作一个以单一直线作为输入,生成一棵树的Python代码原型。这个代码我8年前在日本工作时做过,当时为了在一条观景步道上排布18种共100棵花期、花色、树形各不相同的樱花树探索排布策略,做了一个使用Anemone插件进行循环的L-system来辅助可视化,大致效果如下:

因为L-system是一个经典的系统,因此给出提示词can you write me a python code in Grasshopper 3D to generate a tree form using l-system, with a single line from GH curve component as an input后,ChatGPT迅速给出了经典规则:
rules = {    "F": "FF",    "X": "F+[[X]-X]-F[-FX]+X" }
并完成了余下代码,但它忘记要把single line作为输入。在提醒它并修改后,代码只有一个错误,即LineCurve is not subscriptable。这个问题我也没遇见过,反复修改无法解决后,新开窗口问它如果我遇见了这个问题,可能是什么原因。回答是this error message typically occurs when you are trying to access a specific element of an object that cannot be indexed。检查代码,发现其中有这样一行:
input_curve = x[0]
这说明ChatGPT没有理解single line输入的涵义,而是试图在一个list中寻找第一个项目作为输入;GPT不能修复它的原因很可能是这个解决方案本来就不应该在代码中修改。把python运算器的输入类型从item access改为list access后,问题解决。
整个过程用时不到一小时,结果如下:

小结

本次测试了ChatGPT为Grasshopper写作几何描述式和生成式代码的过程。GPT能有效阅读基于文本的简单几何描述信息,因此只要伪代码写得好,使用它完成GH代码是可行的。但是在经典的生成式代码中,它的效率显然更高,并且错误率也更低。也许现阶段使用它辅助生成式设计更有潜力。

由于Rhino.Python的用户数和现存资料本来就较少且混乱,因此GPT最大的问题仍出在调用Rhino特有的函数和方法上。这个问题可以通过提高用户对Rhino的基础认识,并为它提供启发性的思路得到缓解。

以上就是grasshopper python教程(使用ChatGPT在Grasshopper中写Python)的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取