窑房的门没有关。林瀚站在门外,门缝里漏出来的光被切割成一道细长的亮线,落在门槛外的地面上,像一道已经被固定下来的路径,正在等待有人走上去。他没有立刻进去,站在门口等了一会儿,像是一道已经被固定下来的收口正在用自己的方式完成最后一段路径,不需要通过缩短等待时间来证明它已经准备好了。
窑房里很安静,没有转盘转动的声音,没有水流声,没有金属工具碰撞的声响。他听到陆晨曦的声音从窑房深处传出来,语速不快,像是在读一组已经被验证过很多次的数据:“第七片碎片在不同入射角下的透光率变化,算法已经跑完了。在十五度到四十五度之间,透光率曲线呈单调递增,超过四十五度之后开始衰减。如果碎片边缘的弧度调整成这个角度——”她的话停在一半,像是正在用鼠标在屏幕上画一道弧线。
他推开门,走进去。窑房里的光线比室外暗一些,窗户半开着,午后的阳光从窗框的缝隙里渗进来,在墙面上形成几道平行的光带,边缘被灰尘切割成模糊的轮廓。工作台上摊着那几页之前见过的草图,纸张边缘被压平,像是已经被反复翻阅过很多次。图纸旁边多了一台笔记本电脑,屏幕亮着,上面是一组三维线框模型,正在缓慢旋转。陆晨曦站在工作台侧面,穿着一件浅绿色的连帽卫衣,领口处有一道细长的磨损线头,像是已经被穿过很多次。卫衣的正面印着一行白色的代码——“while (light) { find path; }”,在窑房的偏暗光线下形成一道断续的亮线。下面是深灰色牛仔裤,裤脚卷了两道,露出脚踝纤细的弧线。她的头发扎成了低马尾,几缕碎发从鬓角垂下来,落在颧骨旁边,在偏暗的光线下泛着浅栗色的光泽。鼻梁上架着那副圆框眼镜,镜片反射着屏幕上的三维模型,在偏暗的光线下形成一道窄长的亮线。她的手指搭在键盘边缘,指腹处有一层薄薄的细纹,是长期敲键盘留下的痕迹。
叶诗涵站在工作台的另一侧。她穿着一件深灰色的棉麻围裙,系带在腰后打了一个结,一截多余的带子垂下来,末端在微风中轻轻晃动。围裙的肩带处有一道细长的线头,像是已经被反复洗过很多次,已经和布料本身的纹路融为一体。里面是一件白色的圆领衫,领口处被汗水浸湿了一小片,颜色比周围深,在窑房的偏暗光线下形成一道不规则的弧线,沿着她锁骨的轮廓延伸。她的头发用一支深色木簪挽着,几缕碎发从鬓角垂下来,落在颧骨旁边,在偏暗的光线下泛着浅栗色的光泽。她的手指上沾着一层薄薄的釉料,在指腹处形成细密的浅灰色颗粒,指缝深处嵌着一道细长的釉料痕迹,像是刚放下什么还没来得及洗。她站在工作台前面,低头看着屏幕上那组旋转的三维线框,嘴唇微微抿着,像是在用自己的方式完成一道已经被固定下来的确认。
陆晨曦先开口,她没有回头,但她的手指在键盘边缘停了一下,像是在用自己的方式完成一道已经被固定下来的收口:“第十批碎片的透光路径,我已经用算法跑过了。碎片之间的间距和角度可以用数值精确控制,不需要通过试烧来确定。算法可以提前模拟光在不同入射角下穿过碎片之后落地的位置,这样你在烧制之前就能知道它会不会在窑里变形。”她停了一下,像是在用自己的方式确认下一句话的长度:“但算法只能模拟光,不能生成碎片。碎片还是得你来烧。”
叶诗涵没有立刻回应。她伸手把笔记本电脑的屏幕向自己那侧转了一点,低头看着屏幕上那组三维线框。她的目光从第一片碎片的位置滑到最后一片,像是在用自己的视线沿着那道被算法计算出来的透光路径走完一遍。然后她开口,声音不高:“你计算了光穿过碎片之后的路径,但你有没有计算碎片在窑里被烧制时的收缩量。碎片不是标准件,每一片的收缩量都不同。算法可以算出光穿过固定角度碎片的路径,但它算不出碎片在被烧到一千二百五十度的时候,会往哪个方向收缩。我烧了十年碎片,每一批都会多多少少偏离我预设的角度。光穿过它们的时候,落点会被收缩量改变,那些改变不在你的算法里。”
陆晨曦从电脑前面抬起头,镜片上的屏幕反光偏移了一个角度:“我没有算碎片在窑里收缩。我算的是光穿过碎片之后的路径。但如果你把收缩量作为变量加进模型里,每一片碎片的边缘在烧制过程中会偏移多少,这个变量是可以被校准的。”她从口袋里掏出手机,翻到相册里一张照片,是叶诗涵上一批碎片在出窑之后的排列图:“我从你的窑房拍了几批碎片的出窑状态,用图像识别提取了它们的边缘轮廓,和设计稿比对之后得到了平均收缩率。这个数值可以用于预测下一批碎片的收缩量。”她把手机递过去:“预测结果会告诉你,碎片在烧制过程中可能偏离多少,这样你在调整角度的时候,可以提前把变量考虑进去。”
叶诗涵接过手机,低头看了一眼那张照片。她的手指在屏幕上停了一下,像是正在用自己的方式确认那道被拍摄下来的碎片轮廓是否还保持着出窑时的深度。她看了一会儿,把手机还给陆晨曦:“那道光在被AI计算过之后,依然会自己找到路径。但它找到的路径,和我在窑里烧出来的路径,不会完全重合。你算出来的那道路径是理论值,我烧出来的那道碎片是实际值。它们之间的差距,就是光的余量。”她转过身,从工作台侧面拿起一片还未烧制的泥坯,放在转盘上。转盘没有开,她只是用手指压了一下泥坯的边缘,像是在用自己的方式完成一道已经被固定下来的收口。
林瀚站在门口,看着她们完成这一段对话,然后开口:“你让算法模拟了光路,又用实际碎片来校准它的落点。AI算出来的路径和窑烧出来的路径,最后会在同一个地面上相遇。算法可以提前预测光路,但它无法代替碎片自己去找那个角度。你让它们各自走完自己的路径,然后在最后一步汇合。”他停了一下,像是在用自己的方式完成一道已经被固定下来的收口:“光不会因为被计算过就改变自己的方向。它会在算法预测的位置和实际烧制的位置之间,自己找到最合适的落点。”
陆晨曦把笔记本电脑合上,从工作台前面走过来,绕过那道正在缓慢移动的光带边缘,走到叶诗涵旁边。她没有说话,但她的手指在工作台边缘停了一下,像是在用自己的方式完成一道已经被固定下来的确认。叶诗涵从转盘前面直起身,侧过头看着林瀚,然后向前迈了半步,绕过工作台,走到他面前。她没有先说话,抬起右手,用手指碰了一下他外套的领口边缘,沿着那道已经被触碰过很多次的折痕走了一小段,在收口处停了一下,像是在用自己的方式完成一道已经被固定下来的测量——那道测量不需要再被确认,但仍然需要被完成。她踮起脚,吻了他。她的嘴唇干燥而温暖,带着窑房余热的温度,吻不长,像是那道长度已经被她自己测量过很多次,知道它会在什么时候结束。她松开他之后,没有退远:“那道光在被AI计算过之后,依然会自己找到路径。它不会因为被算法预测过就改变自己的方向,因为它最终落地的位置,是由碎片和地面一起决定的。算法只是中间的一道辅助线。”
林瀚没有退开,他的手掌贴着她的后背,隔着围裙和棉布衫的厚度,指尖落在那道已经被触碰过很多次的折痕的边缘:“因为光不会因为被计算过就改变自己的方向。算法可以帮你提前知道它大概会落在哪里,但最终落点是由碎片本身决定的。你烧出来的碎片,和算法预测的路径之间那道差距,就是光的余量。那道余量会被你调整的角度吸收,也会被碎片自身的收缩吸收。你把碎片和算法放在一起,让它们各自走完自己的路径,然后在同一个地面上相遇。”他松开她,低头看了一眼自己刚才被她触碰过的领口边缘,那道折痕在她离开后依然保持着她触碰时的角度:“第十批碎片不需要方向,因为光会自己找到它们。”
叶诗涵松开他,退后半步,转身走回工作台前面。她低头看了一眼屏幕上那组三维线框,然后伸手碰了一下转盘边缘,像是在用自己的方式完成一道已经被固定下来的收口。陆晨曦站在旁边,重新打开笔记本电脑,手指放回键盘上,继续调整那道透光路径的参数。两个人在窑房里各自做各自的事,没有说话,像是那道被固定下来的收口已经完成了它该完成的任务。
林瀚转身走出窑房,沿着走廊走回办公室。那道被他触碰过的折痕在他走动时保持着她触碰时的角度,不会因为算法的预测而变浅,也不会因为碎片的实际烧制而消失。那道光的余量,会在算法预测的路径和碎片烧出的实际路径之间,以它被固定下来的深度,在第十批碎片出窑的时候,落在同一个地面上。