# 布面油画

模块：`engine/src/canvas-core/paintedOil.ts`（工具集：`paintedOilKit.ts`，过程运行器取自 `sumiEKit.ts`）。主画面：窗边的两只梨和一只铜壶（窗户刚好在画外，左侧）。

**媒介的物理形态。** 油画颜料画在绷好的平纹亚麻布上，先刷铅白底，再用熟赭和棕土薄薄擦一层色底（imprimatura）。用猪鬃平头笔和榛形笔。颜料在前几遍是「瘦」的（稀释过），到最后是「肥」的（直接从管里挤出来）。

**笔触。** 平头鬃笔的一笔（`oilStroke`）。落笔方正，蘸满颜料。每根鬃毛各画出自己的一条线，明度相差几个百分点，所以每一笔都沿着长度方向带着条纹。颜料快用完时，外侧的鬃毛先断开，笔触的末端拖成条纹，盖在下面那一层上。每一笔带两种颜色：蘸上的颜色，以及到末端时沾起的颜色（湿画湿），两端的颜色都从光照模型里采样。

**边缘。** 脊棱：颜料被推挤到笔的两侧堆起来。朝向窗户的那道脊棱接住一条细细的亮线，远侧那道则是一条细细的暗线。鬃毛刮出的沟纹顺着中间走，提笔的末端横着堆起一道颜料。厚涂（impasto）高光是短而厚的点涂，凸出画布表面，在背光一侧投下一道发丝细的影子。物体边缘在受光面是「找到的」（贴着已经铺好的底色裁得干脆利落），在阴影里是「丢掉的」。在阴影里，阴影面的明度被调到和暗墙的明度一样，于是找不到任何一条线。

**顺序。** 白色底料 → 擦色底 → 用熟褐薄薄地起稿（小圆头笔，摸索的线条，阴影形状擦涂进去）→ 用大笔和瘦颜料铺满所有暗部大块 → 中间调 → 用小一些的笔和肥一些的颜料上亮部 → 厚涂高光 → 最后的暗部点睛（梗、花萼、接触阴影）。背景笔触永远不越过物体（奇偶规则裁剪），所以每个物体都保有自己的那几遍。

**笔的大小层级。** 一支大平头笔（约 130 px）用几遍陡峭的斜向笔触铺出墙面，笔触之间留出色底。宽阔的横向笔触铺出桌面。中号笔顺着每个形体走。小号笔只画点睛。笔触以羽化的方式起笔（`soft`），所以没有一笔是以方方正正的一整块开头的。

**形体与方向。** 笔触顺着每个形体自身的结构走。铜壶绕着壶腹一圈一圈地画：用同一个平视椭圆比例（壶口 0.17，壶底 0.205），笔触的弧度像画家那样做了夸张。它有暖色的固有色、深色的明暗交界核心和暖色的反光；窗外的天空是顺着弧度的 3 笔冷色，外加一下镜面高光点涂。梨是回转体（球部和颈部在同一根轴上），笔触包裹着每一个横截面；躺着的那只做了透视缩短，颈部朝远处转开。桌面顺着木纹铺，墙面沿着游移的斜向薄擦。

**调色板。** 夏尔丹（Chardin）的厨房调色板：各种棕土、熟赭、黄赭、土绿、那不勒斯黄、铅白。铜壶是镜面模型：它在中心偏左映出一条窄窄的窗带，按画家的读法画出来（固有色、明暗交界核心、反光、冷色的天空笔触），而不是当作镜面去计算。

**画布。** 一块平纹亚麻贴图（`weave`），每 34 px 有 10 根线，每个交织点都是一个受光的小凸起。它以 0.55 正片叠底进底色，再以 0.3 叠在画完的颜料上。

**和最近的近邻（`ranunculus`，铅笔加水彩）不同。** 水彩是透明的：从浅画到深，从不覆盖，白色就是纸。油画是不透明的：从深画到浅，每一遍都盖住前一遍，白色是铅白颜料，肌理是颜料自身的起伏（脊棱、厚涂）叠在画布纹理上，而不是纸上的颜料沉淀颗粒。

**运动语法。** 画面正在被画出来。每一遍都横扫过自己的区域。一笔以手的速度沿着路径铺开，铺大色块阶段一帧里能放进好几笔快速的笔触（小数的操作时间窗）。厚涂点涂要慢一些。两遍之间停顿一拍。没有任何东西是淡入或缩放进场的。
