Edgy 直接在几何体上切出崩边与裂纹:Cinema 4D 与 Blender 共用同一内核
艺术家 Cornelius Dämmrich 发布了 Edgy——一款面向 Cinema 4D 和 Blender 的插件,可直接在物体的几何体上切出崩边、凹坑和裂纹。该工具改变的是网格本身,因此无论相机距离多远、使用哪种渲染引擎,磨损都能在轮廓上被读出来。
与此同时,原始模型不会被改动。在 Cinema 4D 中,结果会成为 Edgy 生成器的子物体;在 Blender 中则写入原物体旁边的一个新物体,因此随时可以回到干净的几何体。
六个损伤模块
损伤被拆分为六个模块,每个模块都有自己的分布逻辑:
- Chips — 沿开放边产生的崩缺。
- Corners — 在多条开放边交汇处产生的较大损伤。
- Craters — 平面上按面积分布的浅凹坑。
- Fracture — 最多三级的裂纹网络。
- Buildup — 反向操作:不是削去材料,而是在内角和凹槽处堆积。
- Breaker — 从物体上整块地移除部分。
插件附带六套现成的参数预设,用户也可以创建并复用自己的预设。
共用内核与损伤的独立材质
Edgy 的几何内核不依赖宿主程序:它接收一个网格和一组参数,再返回一个网格,内部没有与 Cinema 4D 或 Blender 相关的代码。在 Blender 中,插件以编译好的 Python 模块 edgy_core_py 的形式加载该内核;在 Cinema 4D 中,同样的文件随商业插件一起提供。内核一侧包含边的判定、切割体的摆放、布尔运算、二次处理、裂纹模块、断裂几何以及损伤缓存。
结果会被缓存。每种损伤类型在 Cinema 4D 中写入各自的选集,在 Blender 中写入独立的面属性并对应独立的材质槽,因此可以为崩边、裂纹和堆积分别指定不同的材质。磨损具体出现在哪里由遮罩决定:在 Cinema 4D 中是场(Fields),在 Blender 中是顶点组。
输入几何必须是封闭的:该工具是在封闭网格的边和表面上切出损伤,其方法的基础是布尔运算。
Blender 一侧的开源代码
Blender 插件所加载的内核已在 GitHub 上以 GPL-3.0-or-later 发布:源码之所以公开,是因为许可证有此要求——每一位拿到编译模块的买家,同时也会拿到它的源代码。作者仍是唯一的权利人,并以另一份专有许可证把相同的文件放进 Cinema 4D 插件中分发。该仓库不接受 pull request:它在每次发布时都会从插件仓库重新生成,而双重许可只有在全部代码的权利归属于同一个人时才成立。不过,分叉(fork)是允许的。
每个版本对应一次提交和一个带版本号的 git 标签,因此任何已发布构建的源码都可以按标签找到。编译后的模块绑定到具体的 CPython ABI,所以面向 Blender 4.5(CPython 3.11)和 Blender 5.x(CPython 3.13),同样的源代码会构建出不同的二进制文件。内核依赖 Manifold、Clipper2 和 oneTBB;Windows 和 macOS 的构建脚本也在同一个仓库中。Edgy 页面——插件也可以在那里下载。
为什么几何层面的损伤重新变得有意思
Edgy 的发布,正值人们对几何层面(而不仅是着色层面)破坏效果的兴趣明显升温。Blender 近来出现了以类似逻辑工作的 Geometry Nodes 工具,例如 Jesse Miettinen 的 Damage Control 套件,包含破坏、物体散布以及 The Last of Us 风格的污渍。而在 Cinema 4D 中,这一细分领域看起来一直填补得少得多。
其背后大概是质量标准的变化。只要画面是静止的远景,着色层面的磨损就够用,但一旦相机运动、出现特写,一条绝对锐利的边就会暴露模型。与此同时,这项运算本身也在变便宜:封闭网格上的布尔计算变快了,而对结果的缓存让人可以交互式地处理损伤。
如果这一趋势延续,磨损和损伤将越来越多地从贴图阶段回流到建模阶段,环境艺术家也会多出一层可以针对新机位重新生成的程序化图层。最有可能从中获益的,是小团队和单打独斗的人——他们既没有时间做手工细化,也没有自己的技术美术从零搭建一个类似的生成器。