让平面画面受真实的光与影

把平面图片前后拉开,加一盏灯,每一层就按自己的形状在后面的层上投下影子。

一盏灯扫过七层纸

七张平面图片拉开纵深,一盏暖色的灯从左移到右。

从编辑器以 1080p 导出,这里放的是压小的副本;开启减少动态效果时停在第一帧。

展开详细说明

这段影片是编辑器自己导出的,为网页压小了。由 Agent 把七张图片前后拉开、加上一盏暖色点光和一盏冷色环境光,再让点光在场景上移过去;每一步都是一份 Draft⁠ (在新标签页打开),预览后才应用。之后没有再画任何东西:每一道影子都是按前面那些图层的形状算出来的。

只有七张平面图片

每一层都是带透明镂空的平面图片,没有一张画进了光或影。

  • 单独的「天空」图层,平面,没有画进光或影
    天空
  • 单独的「云」图层,平面,没有画进光或影
    云
  • 单独的「远山」图层,平面,没有画进光或影
    远山
  • 单独的「远处的树林」图层,平面,没有画进光或影
    远处的树林
  • 单独的「小屋」图层,平面,没有画进光或影
    小屋
  • 单独的「近处的树」图层,平面,没有画进光或影
    近处的树
  • 单独的「前景」图层,平面,没有画进光或影
    前景
导入时的七个图层,从后往前排。拉开纵深、打上灯,就是上面那段影片。
展开详细说明

这些图片是在 Keyframe 之外用图片生成工具做的,画成平涂的彩色纸,不画光、明暗和影子,再作为七个图层导入。在 Keyframe 里,每一层都变成 3D 图层⁠ (在新标签页打开),各放在自己的远近,像纸雕灯箱里的一张张纸:天空在最后,蕨草在最前。小屋的窗格和一朵云上的圆孔是透明的,光会从里面穿过去。

影子跟着灯走

灯一动,每道影子都跟着移动、拉长、变柔。

  • 灯低低地在左边:树和云的长影子向右落在天空和树林上
    灯在左边
  • 灯在正前方:每朵云、小屋和树的影子短短地贴在它们后下方
    灯在正前方
  • 灯在右边:影子都摆到了左边,小屋的影子盖住了旁边的树林
    灯在右边
展开详细说明
  • 点光、聚光和平行光都能投影;环境光不分方向,只把暗面提亮。每盏灯有颜色、亮度和衰减,都能打关键帧。
  • 图层按不透明像素的形状在后面的层上投影,透明处让光穿过,所以镂空会投下光斑。影子的深浅和软硬是灯的设置。
  • Viewer 和导出用同一个渲染器画同样的帧,做的时候看到的影子就是文件里的影子。
  • 哪些图层投影、哪些接受影子、哪些根本不受光,在每层的材质选项⁠ (在新标签页打开)里分别设。

一张画自己的起伏

受光表面让一张画上的每个像素朝向自己的方向,平面的画也能像纸、陶土或一张脸那样受光。

展开详细说明
  • 按轮廓倒圆让图层形状的边缘背着光卷过去,像厚纸的边。
  • 法线图写明每个像素朝哪边。可以用自己的,也可以由画面生成:深度模型在你的设备上运行,免费,图片不上传。
  • 自身投影让画面上凸起的部分给同一张画上低的地方投影,就像低角度的光下鼻子在脸颊上投影。
  • 画面细节起伏从画面的明暗读出纸纹、布纹这类深度模型看不出的细小起伏。
  • 全部设置写在使用文档的受光表面⁠ (在新标签页打开)一节。

也可以让 Agent 布景打光

说出你要的场景和光,Agent 做成一份份 Draft,你预览后应用。

编辑器播放同一个工程的实录:灯就是一个带关键帧的图层,和别的图层一样。

展开详细说明

Agent⁠ (在新标签页打开) 能把图层设成 3D 并拉开纵深、加灯并对准、选择表面、在你的设备上由深度生成法线图,还能给灯做动画。每一步都是一份 Draft:先在 Viewer 里看,再应用或让它改。它设好的光就是普通的图层和关键帧,之后可以手动再改。让 Agent 来做属于 Agent 订阅,订阅即将开放;自己打光免费。

算出来的光,可以留也可以不用

2D 动画里的光通常是画上去的;Keyframe 把光算出来,作为起点,你可以留着、改掉或关掉。

展开详细说明

在大多数 2D 动画里,光是画师的活:明暗画进每一张画,影子是把图层复制一份、压暗、模糊,再手动挪开。游戏引擎会算光,但算的是模型和材质,不是时间轴上一层层的画。Keyframe 把算出来的光放进 After Effects 式的图层编辑器,影子跟着你画的形状走,灯动它就动。

它是可选的。图层在你设成 3D 并加灯之前一直是 2D、不受光的,没有灯的合成看起来和原来一模一样。画上去的光照样能用:画里的明暗留着,只在需要的地方加灯;某一层要保持画好的样子,就关掉它的“接受灯光”。

它做不到的

这是用阴影贴图的实时光照,不是光线追踪。

展开详细说明
  • 没有光线追踪和全局光照:光不会从一层反弹到另一层,也没有体积光。
  • 自身投影只朝灯的方向延伸画面长边的四分之一,更长的影子会被截短。
  • 掠射光下,自身投影可能留下一条硬边,因为它依据的高度是由画面的坡度累加出来的。
  • 画面细节起伏只看明暗,所以印花、雀斑和画上去的明暗也会被读成起伏。
  • 照片里本来就有光:画面里的高光和影子会和新加的灯打架。不带光影画成的平面作品最适合。
  • 阴影贴图有数量上限,超出的灯不投影。打光需要支持 WebGPU 的浏览器。

常见问题

免费吗?

免费。灯光、阴影、受光表面和由深度生成法线图,都在浏览器里免费使用,无需账户。只有让 Agent 布景打光才用到 Agent 订阅,订阅即将开放。

需要 3D 模型吗?

不需要。图片、文字、形状和视频图层都能直接设成 3D 并受光。透明背景的图片效果最好,因为影子取的是不透明像素的形状。

能给照片重新打光吗?

可以,但照片原来的光还留在里面:它的影子和高光会和另一个方向来的灯打架。剪纸、平涂这类不带光影画成的作品最适合打新的光。

这是光线追踪吗?

不是。每盏灯渲染一张阴影贴图,每个像素在你的显卡上实时受光,所以边做边能播放。光不会在图层之间反弹。

接着看