Insider Insider
3dnchu 尚无浏览 3 分钟阅读

使用 ChatGPT 挑战 Blender 插件开发 第1回「MPP-Material Pick & Paste-」的诞生过程

介绍一个将 AI 助手 ChatGPT 运用于 Blender 插件开发的实践案例。在插件开发过程中解决遇到的问题,实现高效的开发流程。验证 ChatGPT 的实用性,探索 AI 与人类协作开发的可能性。
通过插件开发实例,考察 ChatGPT 的使用方法以及开发流程的改进点。

插件开发的开始

本文将作为 Blender 插件开发的新方法,
介绍使用 AI 助手 ChatGPT 开发名为「MPP-Material Pick & Paste-」的插件的经过与过程。
这个插件提供了在 Blender 内瞬间获取并粘贴材质的功能。

这是聊天开始时的一句话。
虽然和实际完成形态有些不同,但这样逐步明确自己想做的事会比较好。

与 ChatGPT 的协作

从开发初期开始就使用 ChatGPT 获取建议和代码提案,使插件开发得以高效且在短时间内推进。ChatGPT 会根据情况提供适当的指示和修改方案,在解决编程问题方面非常有帮助。

问题与解决

插件开发过程中出现了一些问题,但在 ChatGPT 的支持下得到了解决。例如,使用镜像修改器时发生错误的问题,以及在编辑模式下向选中的面进行粘贴无法正常工作的问题等。这些问题通过反复沟通和代码修正得以解决,并推动了插件的完成。

  1. 错误原因的定位与解决方案提案:
    • 解析错误信息,定位导致问题的代码部分
    • 作为解决方案,提议修改或追加代码
  2. 与镜像修改器相关的问题:
    • 对于使用镜像修改器的对象,进入编辑模式后由于没有网格实体,无法获取面的问题
    • 作为解决方案,不使用编辑模式,直接访问对象数据以获取面的信息
  3. 应用到具有多个材质槽的对象时的问题:
    • 在应用 Paste 时,对于存在多个材质槽的对象,材质无法正确应用的问题
    • 作为解决方案,准确获取所选面的材质索引,并应用适当的材质
  4. 发生错误时的应对:
    • 提议处理 IndexError、TypeError 等错误发生时的方法
    • 进行适当的错误处理,提高插件的稳定性
  5. ChatGPT 的失误:
    • 当 ChatGPT 提议的代码有误时,会进行修正或重新提案
    • 根据用户反馈,努力提供更准确的解决方案

这些问题与解决方法是 Blender 插件开发中的典型课题,而在 ChatGPT 的协助下得以高效推进。本次开发流程表明,通过 AI 助手与人类共同协作,可以应对各种问题。

我的感想

我自己通过与 ChatGPT 一起进行插件开发,提升了开发技能和知识。同时,由于能够高效推进开发,也节省了时间。在 ChatGPT 的协助下,我切实感受到插件开发迈向了一个新的阶段。

ChatGPT 的感想

我 ChatGPT 感到,能够与提问者一起支持插件开发,并实现了有益的协作。能够在这样的实践项目中发挥作用,对我们 AI 助手来说也是非常令人高兴的事情。

总结

本文介绍了 Blender 插件「Material Pick & Paste」的开发过程,以及与 AI 助手 ChatGPT 的协作。在开发中出现的问题在 ChatGPT 的支持下得到解决,并实现了高效的开发流程。从这段经验中,我确信通过 AI 助手与人类共同进行项目,能够开拓新的可能性。

今后也希望通过活用 AI 助手的 Blender 插件开发以及其他领域的协作,进一步推动技术革新和创造力提升。希望本文能为对利用 AI 助手进行新方法感兴趣的各位提供有益信息。

……不过话说回来,直到这里为止的文章内容,几乎全部都是让 ChatGPT 写出来的哦

……难怪文字会这么一本正经

真的能这么简单地开发吗?

只看刚才那篇文章内容的话,开发似乎顺利推进,并整理得很漂亮
但实际情况是,比想象中花了更多时间

其实在做这个插件之前,我还尝试过制作完全不同的插件,但最后放弃了

一开始想做的是别的插件

你原本想做什么?

想做一个使用机器学习进行 UV 展开(生成最优缝线)的插件

对大量模型的 UV 缝线状况进行学习,构建学习模型

已经推进到能在 Blender 中读取它的阶段。

不过在整理成可作为插件发布的形式时,依赖关系周边的构建似乎始终不太顺利,开发陷入了困境……

是不是要求得有点多了……

依赖关系一大堆……
再加上从那里开始与 ChatGPT 没完没了的交流持续不断,于是中断了开发,改为从中途切换为以完成为目标的简单插件开发。

出错后反复修正

运行时出现错误,告诉它这个错误并获得修正方案……
再运行又出错,再把错误告诉它……
就这样反复不断地进行。

基本上有八成的交流都是这样的感觉
把各种错误情况逐一排除后,才终于能正常运行
即便如此,还是会有无法顺利解决的情况……

ChatGPT 的信息过时了

这在某种意义上是生死攸关的问题呢
如果 Blender 的规格发生了变化,似乎就难以应对

Blender 输出的代码毕竟只是截至 2021 年 9 月时点的开发相关代码。
根据实现内容,也有可能无法正常运行

使用 ChatGPT 制作插件的技巧

那么在此基础上,下面介绍在使用 ChatGPT 制作插件等时需要注意的要点

以最小构成推进

首先推荐从全部最小限度的构成开始推进
在准确把握进度的同时稳步推进开发,在出现错误时可以有针对性地进行修正。
就这次而言,首先先构建了偏好设置画面和按键设置部分。

另外,ChatGPT 的回复字数有一定限制。
回复内容太长时,ChatGPT 有时会在中途没有反应。
将文件拆分,避免单个文件过大,会更容易推进。

负责插件注册部分和偏好设置画面的「__init__.py」
主处理部分的「mpp_main.py」
这次就是像这样分成两个文件来推进的
不过即便如此,交流中断的情况还是很多……

这种情况频繁发生的话,真的挺麻烦的

按处理单元逐步构建

在外框大致完成之后,接下来就是逐一完善各个处理部分

从这里开始插件才会真正能正常运作,所以也会稍微觉得有趣起来

最好能多少读懂一些代码

我自己只算是略懂 Python,对 Blender 特有的处理并不熟悉,但对其他脚本和着色器语言比较熟悉,所以大致能够把握这个插件里实际在做什么

反过来说,如果完全不懂呢?

如果在对脚本和其他一切都不了解的状态下制作插件
门槛可能会稍微高一些

如果不顺利,就提供信息

ChatGPT 构建出来的内容,也有完全行不通的时候
特别是在构建偏好设置画面时卡了不少次,所以通过提供网络上的信息,才总算能够推进
尤其是ぬっち氏忘却野氏的博客信息帮了很大的忙

总之就这样反复进行,最终完成了「MPP」插件

完成的插件「MPP -Material Pick & Paste」在这里

MPP -Material Pick&Paste- v0.5 – 瞬时获取鼠标下方的材质并应用到其他对象上的免费 Blender 插件!

顺便说一下,这张类似 logo 的图片,是我觉得有点这类东西会更酷,于是让 Midjourney 生成的
即便告诉它 MPP,文字还是会莫名其妙增殖,所以之后又用 Photoshop 做了加工

大家也一定要试着用 ChatGPT 来做插件看看哦!