返回行业情报
✦ 精选

3D艺术家用AI打造几何磨损边缘插件

3D Artist on Creating a Geometry-Based Plugin That Makes Realistic Worn Edges

德国3D艺术家Cornelius Dämmrich借助Claude开发了Cinema 4D和Blender插件Edgy,通过几何布尔运算真实移除模型边缘材质,生成裂缝、缺口、碎裂等6种损伤效果,而非依赖着色器贴图。插件基于2007年Eurographics论文实现,同一套几何代码跨双平台运行,并解决了性能优化与缓存难题。

深度解读

Cornelius Dämmrich用Claude辅助开发了一款名为Edgy的Cinema 4D与Blender插件,通过真正的几何布尔运算在网格上切削出磨损边缘,而非依赖着色器伪造效果——这件事的核心意义不在于插件本身,而在于它验证了一个信号:23年经验积累的3D直觉,现在可以直接转化为工具,中间那道"你得找人帮你写代码"的墙已经塌了。

一个非程序员如何用Agentic Coding造出专业插件

Dämmrich在科隆做了23年3D,15岁时朋友递给他一张烧录的Cinema 4D R8光盘入行,此后为NASA、THQ Nordic、ZA/UM(《极乐迪斯科》开发商)、Atlantic Records、Elastic.tv等工作。他的Python水平是"不需要太多帮助能写几行",职业生涯90%的时间花在3D上而非编程上。

但他说了一句关键的话:

"Agentic coding tools made this project a lot more doable for me, and what surprised me is how much of the 3D experience actually carried over."

23年使用经验让他清楚知道一个工具该做什么、用起来该是什么手感、哪些设计要避开。这些知识过去单独存在时"一文不值",因为你还需要另一个人来把它实现出来。现在这个障碍消失了。这不是"AI让程序员更快",而是"AI让领域专家不再需要程序员"。

为什么几何磨损比着色器磨损更值得做

Edgy的起点是一个已消失的Cinema 4D研究插件。那个插件基于Eurographics 2007的论文 "Exemplar-based Worn Edges"(作者Christoph Brachmann、Benjamin Walther-Franks、Jorn Loviscach),早已不兼容当前版本,原始下载也找不到了。Dämmrich没有试图修补旧插件,而是找到论文,用Claude从零构建了自己的实现。

他明确选择几何路线而非着色器路线,理由非常具体:Pointinesscurvature mapsAOproximity masks——这些方法只是把边缘着色得不一样,没有任何一个真正移除材质。在平光转台上看不出来,但在真实镜头里,"只要边缘对着亮背景,或者摄影机推近,一个着色伪造的边缘读起来就是一个完美锐利的边加上一层脏纹理"。

"If you want a chip that reads as missing material from every angle, then the material has to actually be gone."

这就是整个技术路线的根本理由:剪影不会说谎。

六个损伤模块的设计逻辑

Dämmrich对模块的取舍标准只有一个:这个模块是否能做到其他模块做不到的事?做不到就砍掉。

Chips(崩边) 是基础模块——边缘失去材质。Edgy寻找所有两个面以超过特定角度相交的边缘,将它们链接成沿圆柱或倒角延伸的连续脊线,然后按长度沿脊线分布崩边,每个崩边在自己的局部坐标系中,确保它正确地贴合在弧形边缘上。

Corners(角损) 存在的原因是"角根本不是边"。角是第一个撞到地面的地方,也是最后一个被修复的地方,所以它得到的不是侧向崩裂,而是沿汇入角的所有边的平均值方向打出一个大坑。"A corner doesn't chip sideways; it gets knocked off."

Craters(凹坑) 是平面上的撞击损伤,按表面积分布而非按多边形分布,并且受限于到最近边缘的距离——因为一个延伸到边缘之外的凹坑会凿伤相邻面,立刻看起来像bug。

Fracture(裂纹) 是Dämmrich认为最难的模块,也是他最满意的。第一版让每条裂纹生长固定长度然后停止,看起来完全不对。他花了一段时间才想明白原因:真实裂纹不会随机停在中间,它们一直延伸直到撞上某个东西——另一条裂纹或物体边缘。一旦让裂纹持续延伸到边界,裂纹网络就变成了表面的真正分割,这才使得第二级和第三级裂纹能够继续破碎第一级产生的碎片。

Buildup(堆积) 做的是与其他所有模块相反的事——它添加材质而非移除。水泥、油漆或锈迹积聚在没人用刷子够得到的内部角落。"Damage on its own looks like pure destruction; but damage with buildup looks old." 损伤单独看起来是纯粹的破坏,但损伤加上堆积看起来才老。

Breaker(断裂) 是整个大块物体缺失。你在场景中放置一个gizmo,它携带一个噪声表面,一侧的所有东西被减去。因为是针对噪声表面的真实布尔运算而非平面切割,断口面有实际结构,产生的边缘还可以继续被崩边。

一个Dämmrich决定保留而非修复的行为:Breaker切割Buildup。如果一块碎片断裂,它会带走上面的水泥边。他起初感到惊讶,但仔细看后认为这是正确的。

技术实现的三个关键决策

所有损伤都是小闭合实体——崩边是碗形,凹坑是椭球,裂纹是楔形,断裂是体积。它们全部通过 Manifold 库进行批量布尔减法。批量处理而非逐个处理,是让重叠损伤合并成一个空腔而不是留下一地破碎壳体的关键。

性能瓶颈的直觉是错的。 Dämmrich最初假设成本随网格大小扩展,所以优化了那部分。实际上不是。真正重要的是切割器数量,几乎与网格大小无关。一旦实际测量而非猜测,修复方案就很明显——每个切割器现在根据它实际渲染的大小进行tessellation——一个测试场景从40秒降到13秒,结果无法区分。

缓存问题同样花了大量时间。Edgy记住已经构建的内容,避免每次微小改动后重新计算一切,通过比较所有输入来判断。

跨平台移植的意外便宜

同时支持Cinema 4D和Blender"不是一个计划——只是数学"。Dämmrich在C4D中工作,所以从那里开始,那仍然是参考版本。但Blender市场更大,而他已经在不知不觉中做了一个让移植变得便宜的决定:几何代码不接触任何Cinema 4D类型。你给它点和多边形,它还你网格。

所以Blender最终是同一个编译二进制文件的前端,而非第二套实现。相同的seed在两个宿主中产生相同的损伤,逐chip一致。有一个测试向两者输入相同数据并要求精确匹配,零容差。

这对行业意味着什么

Dämmrich的背景横跨游戏(THQ Nordic、ZA/UM)、音乐视觉(Atlantic Records)、动态设计(Elastic.tv)和NASA。他不是全职工具开发者,他是一个有明确需求但发现市场上没有对应产品的3D艺术家。

过去这种情况的结局是:要么忍受没有,要么花大钱雇人开发,要么自己学几年编程。现在他找到了论文,用Claude构建了实现,做了两个平台的版本,还写了跨平台一致性测试。

"That knowledge used to be worth nothing on its own, because you still needed somebody else to build it. That barrier is just gone now."

对于工具开发者来说,这意味着竞争格局变了——你的竞争对手不再只是其他工具开发者,而是每一个有23年领域经验、知道工具该怎么做、现在能自己实现它的从业者。对于3D艺术家来说,这意味着"我想要一个做X的工具"和"我有了一个做X的工具"之间的距离,可能只是一个周末加上一个Claude订阅。

软件技术Cinema 4DBlender几何磨损AI辅助开发3D插件