EVEngine 开发博客 EVEngine 的开发日志与技术笔记

从样条到动态网格:EVEngine 的新一代 Mesh Authoring 工作流

EVEngine v0.5.0 将样条、Modifier Graph、布尔运算、运行时雕刻和 UV 绘制串成一条可组合、可撤销、可脚本化的动态网格生产线。

过去,程序化网格经常是“一次性生成”:输入参数,得到模型,之后想局部调整就只能回到生成器重来。EVEngine v0.5.0 加入的新一代 Mesh Authoring 工作流,目标是把这条单向流水线变成一组可以组合、编辑和复用的能力。

它不只是一批新的几何算法。样条、Modifier Graph、布尔运算、顶点选择、雕刻、UV 投影与纹理绘制现在可以围绕同一份动态网格工作,并且通过 Squirrel 脚本接入游戏、编辑器或自动化工具。

一张图理解新的工作流

新的网格生产线可以概括为:

  1. 用内置配方、导入模型或程序化算法创建基础网格;
  2. 用 Spline 定义道路、管线、河流或其他路径;
  3. 用 Modifier Graph 串联 Bend、Twist、Noise、Spherify、FFD、Cut 等修改器;
  4. 用 Boolean、Geometry Stroke 或直接顶点编辑改变拓扑与轮廓;
  5. 完成 UV 投影,并把笔刷结果写回动态纹理;
  6. 把最终网格上传给 Graphics,或发布为 Scene / Physics 可以消费的 artifact。

每一步都可以独立使用,也可以组合成项目自己的建模工具。

Modifier Graph:把变形变成可复用资产

MeshModifierGraph 用节点描述网格处理顺序。与把一串操作写死在工具代码中相比,图的价值在于参数、顺序和中间结果都能被保存、检查和重新执行。

当前工作流覆盖常见的非破坏式与拓扑修改操作,包括:

  • Bend、Twist、Noise、Spherify 与自由形变(FFD);
  • Subdivide、Weld、Cut 与封口;
  • 沿样条生成或变形;
  • 多个连续变形的融合执行,减少不必要的中间网格复制。

图的执行结果仍是一份普通动态网格,因此后续可以继续雕刻、绘制或生成碰撞体,不会被锁在某个专用编辑器里。

Spline 不再只是“画一条线”

新的 Spline 工作流把路径数据、编辑文档、场景 Gizmo 和网格生成拆成清晰的几层。项目可以使用同一份路径数据生成道路、管线或装饰带,也可以在游戏运行时提供自己的交互界面。

控制点编辑支持稳定身份、选择与变换;工具层负责绘制和拾取,路径文档负责数据与历史,最终的网格构建则由程序化生成模块完成。这意味着桌面编辑器、游戏内建造模式和未来的 VR 工具可以共享底层能力,而不必共享同一套 UI。

仓库中的 examples/spline-tube-lab 展示了从路径到管状网格的完整过程,examples/geometry-stroke-lab 则展示了如何用连续笔划创建几何体。

运行时雕刻与顶点编辑

MeshDeformationSession 为运行时网格编辑提供了明确的会话边界。它负责保存工作网格、选择状态和撤销历史,并提供球形选择、框选、轴向移动以及 pull、push、grab 等操作。

选择只是瞬态工具状态,不会污染网格历史;真正的几何提交才形成 Undo 快照。轴向 Gizmo 也只负责生成可渲染、可拾取的箭头,最终位移仍通过 Session 提交,因此渲染、拾取和撤销不会各自维护一份互相漂移的状态。

examples/mesh-impact-lab 进一步把这套能力接到了 Box3D:物体受到碰撞后,可以根据接触点和冲量修改渲染网格。碰撞代理不会在物理求解回调中直接重建,而是延迟到安全阶段更新。

Boolean 与 UV Paint:从形状到表面

新的 Mesh Boolean 支持通过结构化结果返回并、交、差等操作。操作失败时,调用方得到明确诊断,而不是一份看似可用但已经损坏的网格。

几何完成后,可以继续使用 UV 投影和动态 UV Paint:

  • 对动态网格生成或更新 UV;
  • 把笔刷限制在指定 UV 区域;
  • 将绘制结果写回纹理;
  • 在工具和运行时之间共享同一套底层数据路径。

这让“程序化生成形状”和“在表面留下玩法痕迹”第一次进入同一条生产线。例如,游戏可以生成一块岩石,再根据撞击位置改变几何,同时在对应表面绘制裂痕或烧灼痕迹。

一个更适合 AI 与自动化的边界

这些能力没有被封装成一个只能人工点击的巨型编辑器。参数、执行和结果通过明确的对象与 Result 协议暴露,编辑器只是其中一种前端。

对自动化工具或 AI Agent 来说,这个边界尤其重要:它们可以创建路径、调整节点、执行图、读取诊断,再决定是否继续修改,而不需要模拟屏幕点击,也不需要从一张截图猜测操作是否成功。

可以从哪里开始

仓库中已经提供了几组可运行示例:

  • examples/mesh-modifier-lab:在同一场景对比多种 Modifier 与 Sculpt 结果;
  • examples/spline-tube-lab:编辑路径并生成管状网格;
  • examples/geometry-stroke-lab:用笔划创建几何;
  • examples/mesh-impact-lab:物理碰撞驱动网格变形;
  • examples/uv-texture-paint:动态 UV 与纹理绘制。

新的 Mesh Authoring 工作流还在继续扩展,但它的核心方向已经明确:让网格不再只是导入后静态使用的资源,而是可以在编辑器、运行时和自动化流程中持续演化的数据。

← 返回博客首页