木偶变形到透视网格:VectorCraft 的4大高级变形工具完整指南(Puppet Warp / Envelope Distort)
【免费下载链接】vectorcraftAn open-source, clean-room reimplementation of Adobe Illustrator, built in pure Rust.项目地址: https://gitcode.com/gh_mirrors/ve/vectorcraft
VectorCraft 是一款用纯 Rust 编写的开源矢量插画软件,完整复刻了 Adobe Illustrator 的工作流。本文带你快速上手它的 4 大高级变形工具——操控变形(Puppet Warp)、封套扭曲(Envelope Distort)、透视网格(Perspective Grid)与透视选择(Perspective Selection),从零开始把图形掰弯、织进网格、放进三维透视里,每一步都有对应的菜单和快捷键。
一分钟了解:4 大变形工具解决什么问题?
| 工具 | 一句话定位 | 快捷键 / 入口 |
|---|---|---|
| 📌操控变形 Puppet Warp | 打几枚"图钉",像操纵木偶一样拖动形状 | 扭曲与变形菜单 |
| 🧵封套扭曲 Envelope Distort | 用预设样式(Warp)或自由网格(Mesh)整体包裹变形 | 对象 → 封套扭曲 |
| 📐透视网格 Perspective Grid | 定义 1/2/3 点透视地面与墙面,画出有纵深感的场景 | Shift+P |
| 🎯透视选择 Perspective Selection | 在透视平面内直接移动、变换、绘制对象 | Shift+V |
这四类工具共用同一套几何内核,实现集中在 crates/tools/src/distort.rs,命令层在 crates/engine/src/cmd/distortcmds.rs。
1. Puppet Warp 操控变形:打图钉,让形状像木偶一样听话
选中一个图形(路径、组都行),切换到操控变形工具,VectorCraft 会立刻在图形中心和各"肢体"末端自动放置图钉。接下来:
- 单击图形:追加图钉并选中它
- 拖动图钉:图形平滑地跟随变形,可按住 Shift 多钉同拖
- Alt+拖图钉附近:图形绕该图钉旋转,图钉会"记住"这个转角
- Delete / Backspace:删除选中的图钉
三个细节让它非常好用:
- 变形不叠加:图钉保存着图形"最初的样子",把图钉拖回去就恢复原形,而不是在上一轮变形上继续扭曲;
- Undo/Redo 与图钉一体:图钉随文档存储,撤销一步,图钉和图形一起回到之前状态;
- 网格可放大:控制栏可开启"显示网格"、设置"扩展网格(pt)"让图钉能落在图形稍外侧,还有"全选图钉"。
💡 变形算法是经典论文As-Rigid-As-Possible Shape Manipulation(SIGGRAPH 2005)的完整实现,位于 crates/tools/src/distort/arap.rs,工具交互逻辑见 crates/tools/src/distort/puppet.rs——简单说:拖拽再多,形状也尽量保持"局部不变形",不会糊成一团。
2. Envelope Distort 封套扭曲:15 种样式一键弯出波浪和拱形
选中文字或图形,进入对象 → 封套扭曲,有 3 个子项:
用变形创建(Make with Warp)
打开Warp Options对话框,支持15 种内置样式(Arc 弧线、Wave 波浪、Shell 贝壳、Flag 旗帜……),每个样式可调 3 个 −100%~100% 的滑块:
- Bend 弯曲度:整体弯折多少
- H / V:水平 / 纵向拉伸
- 可切换Horizontal / Vertical方向
用网格创建(Make with Mesh)
把对象包进一张行数 × 列数(1~50)的网格,拖动任意交叉点即可自由塑形,比 Warp 更精细,适合做 S 形飘带、起伏的横幅字。
封套选项(Envelope Options)
决定变形的"质感":抗锯齿、保留形状方式(裁剪蒙版 / 透明度蒙版)、0~100 的保真度(fidelity,越高路径越精细),以及是否连外观、线性渐变、图案填色一起扭曲。
已选中的是封套对象时,菜单会自动变成Reset with Warp / Reset with Mesh(重置并换一种变形方式),对话框内的预览会实时画在画布上——全部逻辑在 crates/ui-egui/src/dialogs/envelope.rs。
3. Perspective Grid 透视网格:把场景"钉"进三维空间
这是画建筑、街道、城市插画最有力的功能,按Shift+P切换透视网格工具,视图 → 透视网格 → 显示透视网格(Mac 上 Cmd+Shift+I)随时开关网格显示:
- 定义网格:支持1 点 / 2 点 / 3 点透视,拖动定义地平线、原点和左右灭点(3 点透视还有竖向灭点);
- 三个彩色平面:左平面(蓝)、右平面(橙)、地面(绿),用Plane Switching Widget一键切换当前活动平面;
- 预设开箱即用:菜单里有一/二/三点透视的高视角、低视角、正常视角预设,可保存、导入导出自己的透视网格预设;
- 附着与释放:
附着到活动平面把对象投影到平面上,之后对象留在平面上仍然可编辑;不需要时在透视中释放即可还原几何。
配套示例文件 examples/perspective-city.vectorcraft 就是上图中那座日落下的透视小城,可直接打开研究每个平面上对象是怎么放的。
4. Perspective Selection 透视选择:在透视里直接改图
网格定义好之后,按Shift+V切换透视选择工具,就能像 2D 选择一样操作平面上的对象:
- 在透视中移动 / 微移:拖拽或方向键移动对象,对象始终"贴着"自己所在的平面;拖动平面 Widget 还能连对象一起搬(按住修饰键可移动或复制);
- 在透视中变换:拉手柄缩放、旋转,深度方向(沿平面法线)也能推拉;
- 在透视中绘制:直接用形状工具在平面上画图,新图形自动附着并吸附网格线;
- 透视文字:贴在平面上的文字可双击进入"平直编辑模式"改完字,退出隔离(Esc)后自动重新投影回透视。
4 大变形工具怎么选?速查表
| 你想做的效果 | 用哪个 | 关键操作 |
|---|---|---|
| 让脸、动物、飘带"弯"出特定姿态 | 📌 Puppet Warp | 自动图钉 + 拖拽,Alt+拖旋转 |
| 标题文字做波浪、拱形、旗帜效果 | 🧵 Envelope Distort · Warp | 15 种样式 + Bend/H/V 滑块 |
| 大面积不规则塑形(S 形、褶皱) | 🧵 Envelope Distort · Mesh | 拖网格交叉点,1~50 行列 |
| 城市街景、建筑立面、地面纵深 | 📐 Perspective Grid + 透视选择 | Shift+P 定义网格 → 附着平面 → Shift+V 编辑 |
常见问题 FAQ
Q1:Puppet Warp 变形过头了怎么办?把图钉拖回原位即可完全复原(变形以"初始形状"为基准,不叠加);也可以直接 Ctrl/Cmd+Z,图钉和图形会一起撤销。
Q2:封套扭曲后还能改回普通路径吗?可以扩展封套把它变成真实路径,之后就能用直接选择工具逐点修改,或走 PDF/SVG 导出(见 docs/development.md 中的文件章节)。
Q3:透视网格会"压扁"对象吗?不会。对象附着到平面后仍保留完整外观与可编辑性,换网格预设时对象位置保持不变;透视相关的命令清单可在 crates/engine/src/cmd/distortcmds.rs 中查到。
Q4:这些工具能批量/脚本化操作吗?能。VectorCraft 的每个菜单项都能通过 JSON 控制通道或 MCP 服务器驱动,object.puppetWarp、object.envelope.*、perspective.*等命令都可以编程调用,详见 docs/mcp.md。
写在最后
从"打几枚图钉"的 Puppet Warp,到网格包裹的 Envelope Distort,再到三点透视的 Perspective Grid,VectorCraft 把 Illustrator 里最考验功底的 4 大变形工具全部搬进了这个纯 Rust 的开源项目——免费、跨平台(macOS / Windows / Linux / FreeBSD / 网页)、还能被 AI 代理直接驱动。选对工具、跟着快捷键走,复杂变形其实比想象中简单得多。🚀
【免费下载链接】vectorcraftAn open-source, clean-room reimplementation of Adobe Illustrator, built in pure Rust.项目地址: https://gitcode.com/gh_mirrors/ve/vectorcraft
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考