Fillinger 智能填充脚本实战:让 Illustrator 自动把几百个元素 1 分钟铺满任意形状
【免费下载链接】illustrator-scriptsAdobe Illustrator scripts项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts
Fillinger 是开源项目 illustrator-scripts 里的一个免费 Illustrator 脚本,核心功能是"把一堆元素自动均匀地塞进一个形状里":自动避让、自动留白、随机旋转,几秒完成过去 40 分钟的重复劳动。它适合所有在 Illustrator 里做底纹、包装、海报装饰元素的普通设计师与 UI 从业者——不需要任何编程基础,一个.jsx文件装好即用。
先别急着装:这张决策卡帮你判断要不要用
| ✅适合谁 | 经常要把几十上百个小对象(咖啡豆、星星、波点、图标)放进一个轮廓的人;愿意花 3 分钟装脚本、换长期效率的人 |
| ❌不适合谁 | 只放三五个元素、追求每个元素精确位置、完全不能接受随机分布的人;需要逐对象命名管理的场景 |
| 🎯解决什么问题 | 在一个形状内自动分布元素:三角剖分算可用区域 → 随机采样 → 距离检测避让 → 从大到小逐批投放,同时保证均匀、无重叠、自然 |
一句话总结:如果你干过"把 200 个元素一个个拖进形状里"的活儿,它就是为你写的。
一个没人愿意提的真相:为什么手工填充永远做不好
做过地图类信息图的人都知道这种痛:要把几十个景点小图标(相机、咖啡杯、地铁标)均匀铺进一座"城市剪影"轮廓里。手工干这件事,本质上是在同时做三个互相打架的判断——放哪不重叠、留白匀不匀、朝向乱不乱。人眼一次只能盯住一个,于是结果永远是:这边叠成小山,那边空出一大块。
同样一个任务,用 Fillinger 的操作是:画好剪影、放好图标组、全选、回车。几秒后图标自动铺满轮廓,既不越界、也不重叠、留白自然得像人手撒的。手工 40 分钟的工作量,被压缩到 1 分钟内,而且质量稳定——这就是"把判断交给算法"和"用眼睛硬排"的本质区别。
最短上手路径:复制一个文件,改一行路径
安装只有一个动作:把fillinger.jsx放进 Illustrator 的脚本目录。先获取文件:
git clone https://gitcode.com/gh_mirrors/il/illustrator-scripts克隆完成后,在illustrator-scripts目录里找到fillinger.jsx——它是单文件脚本,不依赖项目里任何其他文件(同目录的libraries/AI_PS_Library.js是其他脚本用的,Fillinger 用不到)。然后按你的系统复制到对应位置:
| 系统 | 安装路径 |
|---|---|
| macOS | /Applications/Adobe Illustrator [版本]/Presets.localized/en_GB/Scripts/ |
| Windows(64 位) | C:\Program Files\Adobe\Adobe Illustrator [版本] (64 Bit)\Presets\en_GB [或你的语言]\Scripts\ |
重启 Illustrator,打开任意文档,菜单文件 → 脚本 → fillinger就能弹出面板。想验证脚本是否生效,画个圆、放两个小方块,全选后运行——弹出对话框即安装成功。⚠️ 如果菜单里找不到,多半是路径里带了(64 Bit)或语言文件夹名写错,对照上表核对即可。
它到底怎么"自己找位置":给算法一个生活化解释
Fillinger 改编自 Jongware 的圆填充算法(Alexander Ladygin 重构,脚本顶部注释写明了出处,想深挖的可以直接读fillinger.jsx前 360 行)。它的逻辑可以类比成给食堂打菜区安排餐盘:
- 先铺桌布:把容器形状三角剖分,切成无数个小三角形拼图,算出"哪些区域能放餐盘";
- 按面积撒点:在每个三角形内按面积权重随机取点,保证大区域多撒、小区域少撒;
- 挨个试放:每个候选点都检查"离边界够不够远、离已放的餐盘够不够远",不合格就跳过;
- 先放大盘、再放小盘:元素按尺寸从大到小分多个批次投放(每批尺寸约为上一批的 2/3),大元素先占位,小元素见缝插针把空隙填满。
所以你完全不用告诉它"放哪里",只需要告诉它**"多大、多密、转不转"**——这就是面板上那三组开关的由来。
面板参数速读:三组开关,一次讲透
对话框是英文的,但每个词都对应一个直觉动作。按"体积 → 密度 → 态度"三个维度记忆,比死记参数名快得多:
| 分组 | 参数 | 默认值 | 它在背后干什么 | 怎么调 |
|---|---|---|---|---|
| 体积 | Max / Min(Items size in % of total size) | 10 / 4 | 元素尺寸按容器"对角线参考尺寸"的百分比计算,Max 到 Min 之间按 2/3 比例递减分多批投放 | Min 调低→填充更细密;Max 与 Min 差距拉开→层次感更强 |
| 密度 | Min distance | 0 | 元素之间的最小间隔(pt),填 0 允许紧贴 | 越大分布越稀疏,过大(如 >20)会出现大片空洞 |
| 密度 | Resize value | 70 | 实际元素尺寸与"算法算出的可用空间"之间的比例系数 | 调小→整体收缩、留白多;调大→更饱满,接近撑满 |
| 态度 | Random / By value(Rotate items) | Random | Random 每个元素随机旋转 0–360°;By value 按你填的固定角度旋转 | 有机纹理选 Random;几何底纹选 By value 填 0 |
| 收尾 | The item to fill is | On top | 决定容器的上下层关系;默认脚本把选中对象中"最靠上"的那个当作容器 | 想让指定对象当容器,勾选As in [Layers]并让它成为第一个选中的对象 |
| 收尾 | Group all items | 关 | 完成后把所有填充元素编进一个组 | 需要整体移动时勾选 |
| 收尾 | Random items | 关 | 当填充源是一个编组时,从组内随机抽取元素,避免千篇一律 | 多元素混排时勾选 |
| 收尾 | Remove the item to fill | 关 | 填充完成后自动删掉容器 | 想要"纯元素阵列"时勾选 |
几个提升手感的小彩蛋:所有数字框都支持方向键微调——按住 Shift 每步跳 10,按住 Ctrl 每步跳 0.1;在 Max 框按Ctrl + →把数值复制到 Min(反之 Ctrl + ←);按 Enter 执行、Esc 取消;每次关闭窗口,你的配置会自动存到系统文档目录下的LA_AI_Scripts/Fillinger__setting.json,下次打开直接沿用。
三个实战复盘:照着抄参数就行
案例一:城市漫游海报的图标铺装
背景:一张竖版海报,要在"城市剪影"轮廓里铺满 300 个景点图标(相机、咖啡杯、地铁、书店),要求零重叠、留白自然。关键操作:把图标全选后编组 → 剪影放最上层、全选两个对象 → 运行脚本。参数快照:
| 参数 | 取值 |
|---|---|
| Max / Min | 12 / 4 |
| Min distance | 2 |
| Resize value | 70 |
| Rotate | Random |
| Random items / Group all / Remove container | 全勾 |
效果:1 分钟内铺满,边缘干净,图标零重叠。勾选 Remove the item to fill 后,剪影自动消失,只剩"图标云",直接可做背景层。
案例二:甜甜圈包装的孔洞避让
背景:要在一个环形(带内孔)的图形里铺满小圆点,但孔洞里绝不能落元素。关键操作:把外圈和内孔合并成复合路径(选中两个路径 → 对象 → 复合路径 → 建立),作为容器。参数快照:Max 8 / Min 3 / Min distance 0 / Resize 60 / Random / Remove the item to fill 勾选。
效果:算法把内孔识别为"禁区",元素自动绕开。文字也能这么玩——先把文字转曲(创建轮廓),再选中轮廓当容器,就能在文字内部生成图案。需要留意的是内孔如果方向不对可能识别失败,此时选中复合路径执行一次"反转路径方向"再试。
案例三:UI 界面的克制底纹
背景:给 App 引导页做几何背景,要求整齐克制、不抢前景内容。参数快照:Max 8 / Min 3 /Min distance 8/ Resize 70 / RotateBy value 填 0/ Group all items 勾选。
效果:圆点按固定角度整齐排列、间距均匀,输出是规整的网格感而非随机撒花。想要"大元素点缀 + 小元素铺底"的双层层次,可以跑两遍:先 Max 30 / Min 15 铺大点,再 Max 8 / Min 3 铺细点。
最容易翻车的 6 个瞬间
| 翻车点 | 一句话解法 |
|---|---|
| 只选了一个对象 | 脚本至少需要 2 个对象(1 个容器 + 1 个元素),弹窗会提示 "Please select 2 or more objects" |
| 容器类型不对 | 容器必须是路径或复合路径,弹窗提示 "must be PathItem or CompoundPathItem" 时,先执行 对象 → 扩展外观 再试 |
| 容器被识别错 | 默认把"最靠上"的选中对象当容器;不确定时勾选 As in [Layers] 并让容器成为第一个选中的对象 |
| Min distance 调太大 | 超过 20 左右会出现大片空洞;从 0–5 起步,逐步加 |
| Max 设成 100 | 单个元素会撑满整个形状;保守值 10–15 起步 |
| 元素太多导致卡顿 | 脚本每批次最多尝试 1000 次投放,复杂度与元素数量正相关;控制在几百个以内最稳,复杂形状分批填充 |
这笔账值得算:效率与质量对比
| 任务 | 手工逐个摆放 | Fillinger 自动填充 |
|---|---|---|
| 300 个元素的背景填充 | 约 40 分钟 | 约 1 分钟 |
| 带孔洞的复合形状 | 60 分钟以上 | 2–3 分钟 |
| 双层 / 三层纹理叠加 | 90 分钟左右 | 约 5 分钟 |
| 多个方案批量出底纹 | 数小时 | 半小时内 |
真正的差距不在手速,而在三个手工几乎做不到的指标同时达标:均匀性(三角剖分保证全覆盖)、无重叠(逐点距离检测自动避让)、自然度(随机旋转 + 尺寸递减带来的呼吸感)。
不止 Fillinger:把它放进一条脚本流水线
Fillinger 擅长的是"最后一步",前期的元素准备和后期的整理,可以交给同目录下的兄弟脚本(整个脚本集都随仓库一起克隆下来了):
randomus.jsx:批量打乱颜色、缩放、透明度,快速生成多样化的填充源;harmonizer.jsx:把零散对象对齐、排序、统一间距,适合清理填充源;replaceItems.jsx:填充完成后批量替换元素类型;transferSwatches.jsx:从其他文档复制色板,统一整套方案的色彩;cropulka.jsx:裁剪超出画板的内容,适合填充后的收尾整理。
完整脚本清单与逐个用法说明都写在仓库根目录的README.md里,它本身就是一份按脚本名索引的说明书。
收尾:从第一次运行开始
Fillinger 不需要额外运行环境、不需要学习脚本语言,一个文件装好,记住"体积、密度、态度"三组开关就能上手。建议今晚就做一件事:画一个圆、丢三个小元素进去、跑一次默认参数——看到进度条走完、元素自动铺满的那几秒,你会明白为什么回不去手工摆放的日子。跑通之后,把每个项目的参数快照记进便签,因为设置会自动保存,下次直接复用即可。
【免费下载链接】illustrator-scriptsAdobe Illustrator scripts项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考