预测渲染根据当前笔迹速度和方向外推尚未真正落笔的路径
别名: 墨迹外推 · predictive inking · 预测段 · look-ahead ink
概念解释
预测渲染在最新一次真实报点之外,再沿当前速度和方向画出一小段墨,把那一段当作“笔尖此刻应该已经走到、但采样还没到”的路径。它填的是感知上的缝,不是把未来的真轨迹算出来。真实点稍后到达,这段外推要被替换。外推怎么做,和急转时看起来像不像毛刺,是上下游关系:这里只谈外推本身。
机制
预测器吃最近若干点的位置和时间,估速度,有时再估切向加速度,沿切线(或短弧)走出 Δt 对应的长度,Δt 取端到端延迟的估计。画出去的是临时几何:半透明、或与真墨同色但标记为预测层。模型几乎总是局部线性或常曲率,因为只有几十毫秒的历史,写不出字形结构。速度越大,同一 Δt 走出的预测段越长,直线上缝补得越满。方向来自差分,采样一稀或一抖,切线就转,预测段会左右甩。因此外推前通常有轻度平滑,平滑又给真拐点加滞后——预测器内部就已经在跟手与稳定之间拉锯。没有速度估计(刚落下的第一点)时不应外推,否则会朝随机方向喷出一小段。预测层必须能被下一帧整段丢掉,不能写进最终笔画缓冲区,否则回滚无从做起。
怎么研究
在已知注入延迟下,对比无预测、线性外推、带加速度的外推。用高速摄像看预测段是否贴着笔尖,以及第一笔接触时有没有乱喷。
自变量:速度模型(零阶保持 / 线性 / 常曲率)、历史窗口、是否平滑。 因变量:直线上笔尖到墨前端的剩余缝、预测段方向与真速度的夹角、落笔瞬间的误喷长度。
把预测段和真墨用颜色分开,便于量,而不是混成一条线再猜哪一段是假的。
边界
第一点、急停后的零速度、以及报点间隙突然拉大(调度卡顿)时,速度估计失效,应关掉或收短外推。圆形小动作(点、小圈)的切线转得太快,线性外推会画出刺。把预测段画进撤销栈会让撤销撤销到一段从未发生的运动。
怎么落地
- 只在速度估计稳定时外推,落笔后的前几毫秒不要预测。
- 预测几何放在可丢弃层,不要写入最终墨。
- 用与真墨可区分的调试色验收,确认预测段沿切线而不是沿随机抖动。
- 验证:匀速直线上预测段应贴在笔尖下,长度与设定 Δt×速度相符;刚接触的第一帧不应冒出一段飞线。把历史窗口拉得太长,方向应开始滞后于真转弯——那是下一步窗口权衡,不是外推公式写错。