Gandi 3.0文档
官网 打开编辑器
文档/舞台与运行

补帧

30 帧的作品在 120 Hz 的屏幕上,一秒只有 30 个不同的画面。打开「动画插值」之后, 脚本还是按作品帧率跑,但画面按屏幕刷新率重画,中间那些帧把角色画在「这一帧开始的位置」 和「脚本算完的位置」之间 —— 同样的作品,看着顺很多。

这一页讲的是怎么控制它:哪些角色要补、哪一次移动不要补。

打开方式#

作品设置 → 运行 →「动画插值」。它是作品的设置,跟着作品文件走,别人打开是一样的。

打开之后,积木栏里会多出一类「插值」。关掉就收起来 —— 除非作品里已经用过这些积木, 那时候类别会留着(不然工作区里那些积木就成了认不出来的积木)。

三档#

补不补,默认是引擎自己猜的:位移超过某个距离就当成瞬移、虚像变化超过 25 就当成瞬变、 两个角度都是 90 的倍数就不转。大多数时候猜得对,猜错的时候有三档可选:

档 什么时候用
自动 默认。按上面那套猜
开 一直补,不再判断是不是瞬移。快速移动的子弹、镜头
关 永不补。血条、准星、瓦片地图这些不该有中间态的东西

按角色配置#

作品设置里「动画插值」那一行,开关左边有「按角色配置」。点开是一棵角色树:

  • 文件夹设的档往下继承,一整个 UI 文件夹一次搞定。
  • 角色默认跟着文件夹走,控件画得浅,右边写着「来自 ××」。点一下就变成它自己的档, 颜色转实;再点一下当前那一档,就交回上级。
  • 多层文件夹取最近的一层:UI//面板//按钮 会先看 UI//面板,没有才看 UI。

角色的文件夹就是它名字里的 //,和角色栏里看到的是同一回事。配置存在角色自己身上, 所以改名不会让它丢;把角色拖进别的文件夹,如果它自己设过档就不变,没设过就跟着新文件夹走。

积木#

积木栏里分两段。

这一帧不补 —— 做一件事,并且这一次不补:

积木 做什么
瞬移到 x: () y: () 移过去
瞬间面向 () 方向 转过去
瞬间将大小设为 () 改大小
瞬间将 [颜色 ▾] 特效设定为 () 改特效。菜单和原版那块一字不差,夹紧规则也一样
我的 [全部 ▾] 本帧不插值 不做动作,只把指定项对齐到当前。接在任何积木后面都行

前四块都可以由「原版那块积木 + 我的 [ ] 本帧不插值」拼出来,给它们单独一块是因为 这几件事太常做了。

这个角色 —— 长期的档位:

积木 做什么
将我的插值设为 [自动 ▾] 改这个角色 / 这个克隆体的档
将我的插值容差设为 () 改「多远算瞬移」的判据,单位是舞台格

最后是一块查询:

积木 做什么
插值开着吗? 作品级开关开着没有

带「我的」的只管这个角色,不带的是作品级。 所以只有最后那块查询没有「我的」。

「瞬移到」不带「我的」是因为它和「移到 x: () y: ()」是同一类动作积木。

容差#

将我的插值容差设为 0 的意思是再大的位移也补 —— 这个数回答的是「多远算瞬移」, 设成 0 就是「没有什么算瞬移」。留空恢复成按角色尺寸自动算。

它只在「自动」这一档有意义:设成「开」本来就不判断了。

积木改的和界面配的#

积木改的只在这一次运行里有效,按绿旗会回到界面上配的那一档。界面配的是作品的初始 状态,每次运行都从同一处开始,才好排查。

细节#

  • 画面比逻辑慢最多一帧。 补的是「帧初」和「已经算完的当前位置」之间,不是预测。
  • 画笔不参与。 线是脚本在每一步里画的,所以边走边画时,角色看着比自己的线尾慢半拍。
  • 隐藏的角色不补;显示回来的第一帧从它当前的位置开始,不会从隐藏前的位置滑过来。
  • 换造型的那一帧不补方向和大小,否则会看见一个歪着的新造型突然摆正。
  • 克隆体建出来时继承本体当时的档和容差,之后各改各的。
  • 特效里的虚像、亮度、颜色、漩涡、鱼眼、像素化、马赛克都会补;变化太大的一律当成瞬变。 颜色按原始值补,所以 195 → 205 是平滑转过去的,而「将颜色特效设定为 0」(从 199 拨回 0) 会当成瞬变,不会倒着扫过整个色环。
  • 帧率设成 0(跟着屏幕刷新)时补帧本来就没意义,引擎不会开它。

相关#

  • 设置
  • 设计方案:docs/interpolation-control-design.md