用 Fillinger 智能填充脚本,把 Illustrator 复杂形状填充从一小时压缩到一分钟
【免费下载链接】illustrator-scriptsAdobe Illustrator scripts项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts
illustrator-scripts 开源项目里的Fillinger 智能填充脚本,解决的是所有设计师都绕不开的苦差事:把成百上千个元素整齐又自然地塞进一个形状里。读完这篇文章,你将独立完成它的安装、参数配置与实战使用,并拿到三套可以直接套用的配方,从此告别"复制—粘贴—旋转—挪位"的循环。
先讲一个我翻车的故事
去年给一家甜品店做节气海报,需要在"月亮"剪影里铺满大小不一、角度随机的星星。我的第一反应是纯手工:复制一颗星星、拖进月亮、转个角度、再挪位置……来回折腾了快两个小时,月亮中间还是空着一大块,边缘却已经叠得密不透风。当时我甚至怀疑自己是不是该换个职业。
后来同事甩给我一个脚本文件,说"你用这个试试"。我抱着怀疑态度选中月亮和星星,点了运行,几秒钟后,一整个月亮被填得均匀又自然——零重叠,边缘干净,缝隙刚刚好。那个脚本就是fillinger.jsx。从那以后,凡是"往某个形状里塞一堆东西"的活儿,我都交给它。
Fillinger 究竟替你干了什么活
在配置参数之前,值得花一分钟搞清楚脚本背后的逻辑,因为理解了原理,你才知道每个参数在调什么。
Fillinger 改编自 Jongware 的圆填充算法,由 Alexander Ladygin 重构,核心是一套"随机采样 + 碰撞避让"的组合拳:
- 先把容器形状做三角剖分,把"哪里能放、哪里不能放"算清楚;
- 然后按尺寸从大到小分批次投放元素,大元素优先占位;
- 每放一个元素,都会检查它与边界、与已有元素之间的距离,放不下就换一个采样点,直到区域被合理填满。
换句话说,它同时把三件手工几乎无法兼顾的事交给了算法:覆盖均匀(靠三角剖分和面积加权采样)、互不重叠(靠距离检测)、自然变化(靠随机旋转与多尺寸批次)。你不需要告诉它"放哪里",只需要告诉它"元素多大、间隔多少、转不转"。
3 步完成安装,马上就能用
安装过程没有任何技术门槛,一共三步:
- 获取脚本文件:在终端执行
git clone https://gitcode.com/gh_mirrors/il/illustrator-scripts,把整个脚本集克隆到本地,在illustrator-scripts目录里找到fillinger.jsx; - 放入脚本目录:把
fillinger.jsx复制到对应系统的 Illustrator 脚本文件夹(路径里的[版本]和en_GB按你的实际版本与语言替换):
| 系统 | 安装路径 |
|---|---|
| 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就能看到配置窗口。
最短路径:跑通第一次填充
装好之后先别急着调参,用最朴素的流程验证一次:
- 在画布上画一个目标形状(必须是路径 PathItem 或复合路径 CompoundPathItem);
- 在旁边放一个或多个填充元素(单个对象或编组都可以);
- 全选它们——注意至少要选中2 个对象;
- 运行脚本,保持面板默认值,直接按OK(或回车);
- 等进度条走完,检查结果。
默认情况下,脚本会把选中对象里最靠上层的一个当作容器,其余当作填充源。如果结果不满意,Ctrl+Z撤销后重新调参即可,整个过程没有破坏性操作。
参数面板逐项拆解(新手重点)
整个面板只有三个区域,逐项讲透之后,你就掌握了这个工具的"方向盘"。
尺寸区间 Max / Min:图案层次的来源
面板标题写着 "Items size in % of total size",意思是元素尺寸按容器整体尺寸的百分比计算。默认 Max=10、Min=4,脚本会在这个区间内按约 2/3 的比例递减,生成多个投放批次——大元素先放、小元素后放,这也是图案"有主有次"的来源。
| 参数 | 作用 | 推荐起点 | 何时调整 |
|---|---|---|---|
| Max | 最大元素的上限(占容器尺寸的百分比) | 10 | 想突出主体元素时调大,但别超过 25,否则单个元素会撑满形状 |
| Min | 最小元素的下限 | 4 | 想要更细密的填充就调低到 1–2;只想放少量大元素就把它贴近 Max |
Min distance 与 Resize value:密度由你说了算
这两个参数共同决定填充的"松紧度":
- Min distance:元素之间的最小间隔,单位像素。默认 0 表示允许紧贴;数值越大,分布越稀疏。做"呼吸感"纹理时调大到 5–10,做密铺底纹就保持 0–2。
- Resize value:缩放系数,默认 70,含义是"实际放置尺寸"与"算法计算出的可用空间"之间的比例。调小让元素整体收缩、留白更多;调大更饱满,但超过 100 会出现元素大于可用空间的情况,得不偿失。
一句话记忆法:Min distance 管"空隙",Resize value 管"饱满度",两个一起动才能调出想要的密度。
旋转策略:随机感还是秩序感
- Random:每个元素随机旋转 0–360 度,适合星星、叶子、碎纸这类有机纹理,避免"复制感";
- By value:所有元素按你填写的固定角度旋转(默认 0 度),适合几何图案、需要方向一致性的场合,比如蜂窝六边形、箭头指示。
层级与三个复选框:收尾工作一次搞定
"The item to fill is:" 区域控制填充元素与容器的上下关系:On top(默认,取最上层对象当容器)、Below(取最底层对象当容器)、As in [Layers](严格按图层面板顺序)。下方的三个复选框则决定结果的呈现方式:
- Group all items:完成后把所有填充元素编组,方便整体移动和后续编辑;
- Random items:当填充源是一个编组时,从组内随机抽取不同元素混排,避免千篇一律;
- Remove the item to fill:填充完成后自动删除容器形状——如果你只想要填充结果,这个选项能帮你省一步删除操作。
输入框小技巧与设置记忆
数值输入框支持键盘微调:方向键每次 ±1,按住Shift每次跳 10,按住Ctrl每次跳 0.1;在 Max 框按Ctrl+→可以把 Max 的值直接复制到 Min,Min 框按Ctrl+←反向复制。另外,关闭窗口时所有设置会自动保存到系统文档目录下的LA_AI_Scripts/Fillinger__setting.json,下次打开直接沿用,不用重新配。
三个实战配方,照着抄就行
配方一:星空海报的月亮剪影
适用对象:海报、插画背景里"元素填形状"的通用需求。以星星填月亮为例,参数组合:Max=12、Min=4、Min distance=2、Resize value=70、旋转选 Random、勾选 Remove the item to fill。跑完后月亮边缘干净、密度自然,全程不到一分钟,直接就能当背景底纹用。
配方二:节日贺卡的混搭装饰
适用对象:需要多种元素随机混排的场合。把雪花、彩带、礼物盒编成一组当作填充源,容器画一个圆或爱心。参数组合:勾选Random items让三种元素随机出现,勾选Group all items方便整体挪动;旋转选 Random。想要"大元素点缀、小元素铺底"的层次感,可以分两次运行:第一层 Max=8、Min=3,第二层 Max=30、Min=15,两次叠加就是完整的视觉纵深。
配方三:UI 界面的克制几何底纹
适用对象:界面背景、名片底纹这类"越克制越好"的场景。用简单的圆点或细线条做元素,参数组合:Max=8、Min=3、Min distance=8、旋转选 By value 并填 0。输出结果整齐统一、不抢前景内容的注意力,比乱糟糟的随机填充专业得多。
进阶:孔洞、文字与多层纹理
由于算法支持复合路径(CompoundPathItem),带孔洞的形状可以直接填充——比如甜甜圈、环形框架。脚本会把内孔识别为"禁区",元素不会掉进洞里。文字同样可以:先把文字创建轮廓(转曲),再选中轮廓和填充元素运行脚本,就能在文字内部生成图案,做标题字效非常顺手。
想要杂志封面那种丰富层次,就用"三层三明治":打底层(Min 调低、间距调小的高密度小元素)→过渡层(中等尺寸、中等密度)→强调层(大尺寸、稀疏分布),每层用不同的元素与旋转策略。每跑完一层就编组锁定,再跑下一层,避免干扰。
常见报错与排查清单
新手最容易在这几个地方卡住,对照下表快速解决:
| 现象 / 报错信息 | 原因 | 解决动作 |
|---|---|---|
| 弹窗 "Please select 2 or more objects" | 选中的对象不足 2 个 | 至少选中 1 个容器 + 1 个元素再运行 |
| 提示 "must be PathItem or CompoundPathItem" | 容器类型不对(编组、未转曲的文字、网格都不行) | 执行"对象 → 扩展外观"后再试,或换一个普通路径当容器 |
| 出现大片空洞 | Min distance 设得过大,或 Max 太小 | 把 Min distance 降到 0–3,或把 Max 调到 8–15 |
| 单个元素撑满整个形状 | Max 数值过大 | 把 Max 控制在 25 以内 |
| 运行明显卡顿 | 元素数量太多,尝试次数过多 | 把元素控制在几百个以内;复杂形状分批填充,每批只处理一个区域 |
与同项目脚本组成一条流水线
Fillinger 最擅长的是"最后一步",而前期的素材准备与后期整理可以交给同项目里的兄弟脚本:
- randomus.jsx:批量打乱颜色、描边、缩放、不透明度与位置,快速生成多样化的填充源;
- harmonizer.jsx:把零散对象按行列排序、统一间距,适合准备一批规整的填充元素;
- replaceItems.jsx:填充完成后批量替换元素类型(如圆点换星形),方便快速换方案;
- transferSwatches.jsx:从其他文档复制色板到当前文档,统一整套设计的色彩体系。
把它们串起来就是一条完整流水线:randomus 造素材 → harmonizer 整理 → Fillinger 填充 → replaceItems 微调,一套设计方案的出图速度能提高一个量级。
写在最后:省下的时间拿去做更重要的事
Fillinger 是一个 .jsx 文件就能跑起来的免费脚本,不需要任何额外运行环境。现在就去克隆仓库、把它放进脚本目录,用几分钟体验一次"选中 → 运行 → 完成"的流程。第一次跑通之后,你大概率再也回不去手工摆放的日子了。记得把常用配方参数记下来——设置会自动保存,下次只需一键复用;也别忘了关注项目仓库的更新,作者一直在打磨算法,新版本往往带来更自然的分布效果。省下来的时间,拿去多做几个方案,或者早点下班,都挺好。😄
【免费下载链接】illustrator-scriptsAdobe Illustrator scripts项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考