使用 Blender 和 Python 进行 3D 打印连衣裙

597 位读者喜欢这篇文章。
Using Blender and Python to 3D print a dress

westonhighschool library 在 Flickr 上, CC BY-SA 2.0

2016 年里约残奥会开幕式上,单板滑雪运动员 Amy Purdy 身穿 3D 打印连衣裙,佩戴着与连衣裙材料相同的假肢,并与 Kuka 机器人手臂 共舞

这段舞蹈是对人类精神和科技融合的宣言。“主流媒体忽略的背景是开源软件在制作这件连衣裙中起到的关键作用:它使用 BlenderPython 创建。”

Paralympian dress

图片来自 Danit Peleg。经许可使用。

偶尔我会遇到一些从事计算机图形的人,他们从未听说过越来越流行的开源 3D 动画软件 Blender。 公平地说,它主要在开源社区中为人所知,但它已经成为全球数百万有抱负的艺术家和动画师的现象。 开放电影项目 展示了 Blender 的一些功能。 当涉及到 3D 打印时,它是 创建和准备模型 最流行的解决方案。

偶然进入开源领域

我第一次发现 Blender 是在 2006 年大学期间,当时我主修音乐。 当我在学校的工程部门兼职时,我去校园里的一栋房子修理别人的浴室水槽排水管。 租户恰好是 Nathanael Anderson,他是开源社区的坚定支持者。 他最近在 Linux Journal 上引起了轰动,他是最早创建自定义 Rock Band 版本的人之一,该版本使用带有 MIDI 拾音器的真实吉他。 我最后一次听说他接受了一份使用 VR 在医学领域创建教育工具的工作。

当我遇到 Nat 时,我几乎没有使用电脑的经验。 我买了一台笔记本电脑来记笔记,但我的知识仅限于对 Microsoft Word 的基本了解。

另一方面,他与众不同。 他的家简直令人叹为观止:各种各样的电子设备覆盖了每个平面甚至排列在墙壁上。 电脑显示器正在快速输出神秘的代码行,无法读取。 我仍然不知道大多数东西是做什么用的。 他改造了一台幻灯片放映机,为电影和游戏制作了一个定制的家庭影院系统。 后来他教我如何使用菲涅耳透镜和阳光来液化便士。

尽管我完全缺乏与计算机代码相关的知识,但我有一个想法,即使用随机数生成器来创造个体性和自由思想的错觉,从而使人工智能更人性化。 当我拧着浴室水槽时,我一直在谈论我的想法。 Nat 和我一拍即合,成为了朋友。 随着时间的推移,他开始向我介绍计算机科学的世界。

有一次,有人把茶洒在他的笔记本电脑上,他修好了我的笔记本电脑,当我从他那里拿回来时,他已经在上面安装了一些开源程序,包括 Blender。

学习 Blender

我一直很喜欢做动画的想法:小时候,我用一台旧的 VHS 摄像机,使用乐高积木和橡皮泥制作了一些定格动画视频。 Nat 一直催我开始使用 Blender,我最终屈服了。 我按照一个简单的教程,用几个按键制作了一个棋子。 我的大脑爆炸了。 这是一种使用数学来创作艺术品的方式。 当我发现关键帧动画时,我不得不收集爆炸的灰质,以便我的大脑再次爆炸。

Blender 立即成为了一种痴迷。 我不知道动画会这么容易。

在玩了 Blender 几周后,我坐在星巴克,试图弄清楚如何使用带有顶点权重的骨架来制作机器人的动画。 那时 3D 还相当新颖,所以当一位 Web 开发人员在我的电脑上看到 3D 时,他放下了手头的一切,开始问我关于它的问题。 他想让我为一家唱片公司制作一个动画商业广告。 该商业广告将由一个巨大的、布满宝石的奖章组成,该奖章在太空中旋转并撞入熔岩场,留下唱片公司徽标的印记。 它需要光焦散、流动的熔岩、火焰和烟雾效果、相机目标、路径跟随——所有关于 UV 贴图和材质设置的细枝末节,我对这些一无所知。

我花了大约三个星期的时间学习了足够多的知识来制作这个商业广告。 Web 开发人员和录音艺术家都非常喜欢它,但这部分是因为这是他们第一次接触 3D。 我得到了惊人的 300 美元报酬,但我不在乎。 我对通过玩免费软件来赚钱的可能性敞开了眼界。

小猫和建筑

我从小型自由职业项目开始,最终拥有了令人尊敬的作品集。 我为游戏 Kung Fu Kittens 提出了一个方案,其中包含大量各种武术姿势的 小猫渲染图。 该游戏从未通过 Unity 中的一些原型,但凭借我作品集中小猫的渲染图,我在爱达荷州博伊西的一家建筑公司找到了我的第一份全职工作,负责可视化。 由于某种原因,小猫的渲染图给部门主管留下了深刻的印象,并且我一直专门使用 Blender 和 Python 谋生大约七年了。

大约两年前,我从动画师转型为开发人员。 我现在在 Gerber Technology 担任模拟工程师。 我最终在 Gerber 工作,因为他们正在开发一种 3D 解决方案,用于可视化图案设计和模拟服装行业的纺织品特性,并且他们选择 Blender 作为开发环境。 我花了几年的时间制作游戏资产,所以我对实时图形有所了解。 我还做了很多需要各种物理模拟的项目,包括布料,这恰好是 Gerber 的一个重点。 我离开了建筑职位,将我的家人搬到约 3,000 英里外的康涅狄格州,以便有机会成为一名开发人员。

社区 FTW!

当我开始编写代码来操纵欧几里得空间中的 3D 对象时,我开始希望我至少学过代数 1,但我不知何故跳过了高中的这一部分。 幸运的是,所有这些都可以从免费的视频教程中学习到。 在我编写第一行计算机代码大约六个月后,我使用 Numpy 从头开始创建了我的第一个布料引擎。 我在阿姆斯特丹的 Blender 会议 上就此做了一个 演示。 每个人都说这对我和其他人来说都是一项了不起的成就,但我所能想到的就是开源社区的现象。

开源社区中的很多人都在做着我从未梦想过的惊人事情,而且他们都在自由地分享他们的想法、资产,甚至源代码。

接触到这种全球性的慷慨(而不是封装为类变量的慷慨)和创造力,产生了一种宣泄效应,接近于一种精神体验。 我还没有找到合适的词来形容它。 我想我必须接受这样一个事实,即在有机会在 Blender 会议上成为其中的一员之前,“开源”比我意识到的具有更深刻的含义。 也许我把荷兰人互相买啤酒和拥抱这件事看得太重了,但我认为不是。

残奥会礼服

这一切与残奥会有什么关系? 我想这要从 Danit Peleg 说起。 当每个人开始谈论服装行业的一颗冉冉升起的新星时,我正在忙于为一些纹理工具或其他东西创建 UI 元素,这位新星在她家里制作了一系列 3D 打印服装。 有人发给我一个 视频 和一个 Ted 演讲 的链接,然后解释说 Danit 即将来到康涅狄格州与 Gerber 的一些人会面。 Danit 使用 Blender 创建了她所有项目的模型,我是 Gerber 的“Blender 专家”,所以有人邀请我参加会议。

会后,她问我什么时候可以开始帮助她组装一件礼服的原型,以便寄给残奥会委员会。 一阵尴尬的沉默之后,我盯着我的老板……经过一番讨论,管理层批准我停止手头的所有工作,开始为一件礼服建模。

在许多方面,我们在为可打印的连衣裙设置 3D 模型方面处于完美的位置。 我已经精通 Blender 并且已经创建服装设计工具两年了。 然后,我们收到了 Amy Purdy 的尺寸。 因为我们使用 Blender 作为 Gerber 的 AccuMark 3D 软件中的引擎,所以我们只需插入尺寸,然后开始围绕我们的虚拟 Amy 代理进行建模。 通过与 Danit 的合作,我们开发了一种支持 3D 服装设计制版的工作流程。 Danit 能够在一个与 Amy Purdy 具有相同身体尺寸的虚拟人物上工作,我们开始了。

在完成这个过程不久之后,我意识到我需要一些我没有的工具。 幸运的是,Blender 中的 Python API 允许以最少的努力创建一些非常复杂的工具(就软件开发而言)。 我不是在说宏。 我制作的第一个工具使用了 N 维矩阵上的爱因斯坦求和来测量身体和服装的轮廓部分的长度,以测试几何体的扁平版本和变形版本之间的虚拟贴合度和变形。

所有这些听起来可能有点过于复杂,仅仅是为了做一件连衣裙。部分原因是因为我现在是一名工程师,人们期望我把事情说得比实际情况更复杂。复杂性的另一个原因是,我们受到了残奥会委员会的压力,要确保连衣裙尺寸合适,没有任何故障或造成任何问题。我们一直听到关于机器人控制系统的一些模糊信息——它的运动是部分动态的,对舞者的动作做出反应。如果连衣裙弯曲太多,可能会混淆机器人的传感器,或者如果连衣裙的某个部分卡在机器人上,舞者可能会被困住(而且这个机器人足够强大,可以举起一辆汽车,所以舞者可能会受伤或死亡)。我们也有严格的截止日期和有限的时间,所以尺寸必须一次就正确。“嘿,我们需要你建模一件连衣裙,如果你搞砸了,一位残奥运动员可能会被杀死。祝你好运,没有压力。” 当时危险可能有些夸大,但我没有冒险。

通过与Danit合作并利用Gerber的AccuMark 2D和3D应用程序,产生了一些有用的工具和工作流程,这些工具和流程将有助于创建3D打印服装。我能够入侵Blender的UV展开工具,进行一些修改,并从围绕化身建模的服装中提取平面图案。Numpy 让我们构建了一个凸包生成器,它可以跨越化身来创建一个基本的服装作为起点。通过围绕色轮的一些旋转矩阵,我们可以看到我们需要制作飞镖和缝线的位置,以使扁平的几何形状更好地符合身体的形状。 Numpy再次出手相助,提供了一个重心系统,使任何形状的网格遵循简单表面的变形。这使我们能够在平面图案上创建复杂的结构,并使用平面图案将这些结构包裹在 3D 中的化身周围。我知道这说了很多术语,但是当你看到 3D 程序中发生的事情时,你会明白更多。为了更好地理解,您可以观看我的演示

结束语

作为开源社区的新手,我不得不说我印象深刻。 我能够带一位同事参加上届Blender大会,那里的工作让他说不出话来。 事实上,他太惊讶了,以至于在与Blender大会上的人互动了一整天之后,直到凌晨四点左右,他一直在说开源社区有多么了不起。 我不介意。 我第一次参加Blender大会时也有同样的经历。

正如斯科特·亚当斯所说,这真的就像没有离合器的范式转变。 当我已经把我的想法都拿出来时,不用担心人们窃取我的想法,这让我减轻了很多负担。

Crazy-looking guy drinking his own head from a coffee cup
Rich Colburn目前在Gerber Technology担任仿真工程师。 他是一名 3D 建模师、动画师、python 开发人员,也是科幻小说《不朽肉体的决心》的作者

3条评论

这篇文章里有很多很酷的东西值得挖掘! 谢谢 Richard 的分享。

这是一个非常好的机会。 我感谢所有参与使Blender成为如此强大工具的人!

很棒的文章,谢谢! Blender 一直在我的关注范围内。 你给了我另一个去看看它的理由!

大哈特福德Python小组很乐意邀请您作为嘉宾演讲者(或成员)! 如果您有兴趣,可以通过我的名字.我的姓氏在 gmail 与我联系。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.