跳到主要内容

程序化绘制的稳定区与边界

#网页#Canvas#程序化绘制#AI

上一篇讲的是“做成”,这篇讲“留下”。

二十四节气做完之后,我很好奇dsh+dsf1017是怎么把界面做的这么好看的。难道是用了什么素材库,或者参考了什么知识?发现了几点有价值的地方:一是没有用什么网上的素材或照片,而是它自己画的,它知道怎么用程序一笔一笔勾勒出这些简约又美观的元素;二是二十四页里把典型元素反复使用,避免代码繁杂,形成了一套很小的绘图词汇:山、水、日月、云雨雪、芦苇、柳、麦穗、荷叶、荷花、菊花、飞鸟、蝉、蜻蜓、房屋、灯笼、渔船、石桥、露珠、霜、冰裂。同一支芦苇出现在雨水、白露、大寒;同一个月亮出现在处暑、白露、秋分、大雪。二十四个场景,是这些词的不同组合。

如果这套词汇只留在源码里,下一次开工还是得从头翻。于是我把这些验证过的画法整理成一座 程序化绘制能力库:四十个母题,七组分类,每张卡片都有可运行的实时预览,点开能看绘制思路、核心图元、关键参数和复用提示,核心函数和起步模板可以直接复制。配套的 说明页 负责解释为什么是这些、边界在哪里。库负责查阅,说明负责判断。

程序化绘制能力库页面:标题为一纸山河绘制起点,下方是搜索、分类筛选和带实时预览的元素卡片
能力库。四十个母题,七组分类,每张卡片都有可运行的 Canvas 预览。

按对象归档,不按画面归档

能力库最先做的一个决定,是不按节气分类。按节气分类看起来最自然——立春有什么、雨水有什么——但那是作品的目录,不是画法的目录。同一个芦苇散落在三个节气里,按场景归档,只会把同一套函数抄得到处都是。

四十个母题最后按对象分成七组:

分组 数量 代表母题
基底 4 纸本背景、山脊、水面与涟漪、雾与空气
天体天气 7 太阳、月亮、云、雨、雪、风与草、热浪
花木 13 芦苇、柳枝、麦穗、荷叶、荷花、牡丹、菊花、银杏、桃梅、竹、柿、莲蓬
动物 7 飞鸟、蝉、蟋蟀、蜻蜓、喜鹊、白鹭、甲虫
人文 4 雪屋、灯笼、渔船、石桥
氛围 4 露珠、流萤、霜、冰裂
组合 1 组合起点:把若干母题拼成一张完整画面

“稳定”是一个很窄的定义

能力库没有把“会画”说成一件没有边界的事。它先给“稳定”下了一个很窄的定义:在这套低饱和、纸本水墨、二维剪影式插画的风格里,在一到三轮截图反馈中,能比较可靠地得到一个可识别、可复用、不会明显崩坏的结果。

这个定义依赖三个前提:允许风格化,不要求植物学或动物学上的精确复原;母题清晰,画荷叶比画“任意复杂场景”容易得多;有构图和配色托底,同样的线条放进合适的留白和纸色里,观感会显著不同。

在此之上才是分层。稳定区包括山、水、日月、云雨雪、草木芦苇、飞鸟蝉蜻蜓、房屋灯笼渔船石桥、露珠霜冰裂——一到三轮反馈就能得到风格化但可辨认的版本。中等区是特定物种的精确复原、人物剪影、复杂建筑、复杂动物姿态和真实光影材质,需要参考图和更多轮迭代,容易“像但不够准”。较弱区是人脸、手、复杂表情、写实人物、复杂机械、照片级材质和多角色复杂叙事,不适合作为主能力。

稳定区为什么稳定

翻看这四十个母题的画法,稳定的原因大致能归成五条。

其一,都能拆成少量图元。圆、椭圆、贝塞尔曲线、多段线、渐变、低透明度叠色、重复加旋转缩放,不需要 3D 网格、物理模拟或真实材质。山脊是三组正弦波叠加,雨雪是种子伪随机粒子按时间循环,花瓣是贝塞尔曲线的组合。

其二,剪影优先。在纸本水墨里,观众先认轮廓,再认细节:荷叶先看一个带缺口的圆,麦穗先看细长的穗头,渔船先看两端翘起的船体,灯笼先看椭圆加挂绳。所以代码先把轮廓做对,再去补叶脉、翅脉、灯肋这些细节。早期画鸟用完整剪影,结果像蝙蝠;改成两笔式之后,远看反而更像墨鸟。

其三,风格化的容忍度高。芦苇不必每一根穗都符合植物学,山不必有真实地质,云不必有体积。允许“像”而不是“精确”,留给程序的空间就大了。

其四,参数化程度高。大小、颜色、角度、种子、数量、层数抽出来,同一套函数就能在二十四个场景里反复复用。二十四页不是二十四套画法,是同一套词汇的不同组合。

其五,没有一个是盲写出来的。每一个稳定母题背后都是截图反馈:鸟像蝙蝠就改两笔,菊花像蒲公英就重排花瓣层次,灯笼悬空就对齐挂绳和树枝。没有这条反馈循环,稳定度会明显下降。

五条最后收成一句口诀:剪影优先、层次少量、颜色克制、细节点到为止、动效只动局部。

往库里加一个新对象

能力库顺带记录了一套通用流程:先画剪影,只用一个颜色,确认远看能认出来;再拆两到四层——主体、暗部、亮部、细节,不要一开始就画很多线;然后从所属场景的纸色、墨色、主色、辅色里取色;纹理只加一到两种;动效只让一两个部分动;截图检查小尺寸是否还认得、和相邻场景是否协调;最后把大小、颜色、角度、种子抽成参数。

边界那边是什么

难画的对象有一个共同点:程序化拆解的成本高,且容易“像但不够准”。人脸和手需要精确解剖和微妙比例;写实人物要把骨骼、肌肉、布料、透视耦合在一起;复杂机械和照片级材质需要真实光照、反射和着色器。这些不是再多几轮截图能解决的问题,该换的是路线:参考图、3D 基础、骨骼系统,或者干脆接受一种更抽象的表达。

比能力清单更有用的,是判断

我们习惯笼统地说一个模型“会画画”或“不会画画”,两种说法都没有信息量。更有信息量的问法是:在什么风格约束下,它能稳定画出哪些对象?需要几轮反馈?哪些对象会失真?这张四十个母题的表,与其说是成果清单,不如说是一份可以复用的评测清单。

它还有两个附带用处。一是当起点:复制起步模板,挑几个母题,换一套纸色和主色,一张同风格的画面就有了雏形,比重新发明山和云快得多。二是当词汇:“要一个山脊三层、雾带一条、飞鸟两笔”,比“要有点中国画的感觉”具体得多——后者没法验收,前者能。

当然它也有清楚的限制:库里的 helper 是主作品的独立快照,部分函数为小尺寸预览微调过;预览图为了看得清,不是为了还原最终画面;它是一套词汇和模板,不是框架,也不替你做构图;字体仍依赖本机。它记录的是二维程序化插画的能力,不是“任意素材都能画”。

知道它不能做什么,和知道它能做什么同样重要。

← 返回文章列表