N1.11.3dropped-frame judder设计研究

丢帧在头动时表现为世界位置跳变,而不是画面变慢

别名: 丢帧 · hitch · 世界跳动 · frame hitch

概念解释

显示器上丢一帧,动画像被按了顿:角色跑得一瘸一拐,世界本身还在屏幕里。头显里头正在转时丢一帧,含义反了——虚拟房间应当钉在空间里,姿态更新缺一拍,房间就跟着头走一小段,下一拍又被扳回真位置。人看到的是墙跳了一下,不是电影变慢。这种头动下的顿挫叫 judder,来源是丢帧(dropped frame / hitch),观感是位置误差,不是时间轴被拉长。

静止看着一个自己会动的物体丢帧,才比较像普通屏幕上的卡顿。

机制

世界锁定内容的屏幕位置是头姿的函数。连续两帧之间头转了 θ,图像必须反向补偿 θ,房间才看起来没动。中间缺了一次补偿,视网膜上的房间就随头滑了 θ 那么宽,再下一帧突然补上 2θ,于是来回抽一下。幅度随头速变:慢慢转,跳很小;甩头,跳是一块墙。

平面动画丢帧是时间采样变稀,运动看起来一格一格。头显里「运动」很大一块是观察者自己的,时间采样失败被读成空间采样失败。所以同一段 hitch,坐着盯菜单可能只觉得「顿」,转头看房间就是「世界打滑」。

重投影能把旋转补偿补上,于是丢的应用帧不再等于丢的姿态;但若连显示刷新都漏了,跳变仍会按上面这条几何出现。

怎么研究

在受控头动下注入 hitch:机械转台或让人按节拍转头,软件每隔 N 个刷新丢掉一次姿态更新(或丢掉一次显示),用高速摄像看墙上标记点的轨迹。对照条件是头部静止、只有场景内动画在丢帧。

自变量:丢帧间隔、头速、丢的是应用帧还是显示刷新。 因变量:标记点的空间跳幅(角分)、主观「世界在跳」vs「动画在顿」的迫选、不适评分。

报告里不要只写 fps。同样是「75 fps」,均匀的 75 和「90 里丢掉一些」对转头时的跳幅完全不同。

边界

头几乎不动的阅读、视频,丢帧退回普通卡顿,这条「跳变」主诉不会出现。漏掉的若是场景内动画而姿态仍每刷新都在,转头时房间仍稳,只是角色走路会顿——要分开记,否则会把动画问题和姿态问题当成同一个 hitch。座椅上的微小晃动也会让人把别的伪影说成跳,实验需要一个头部静止的基线。

怎么落地

  • 把「转头时世界是否钉住」当成丢帧的验收,而不是看一段第三人称录像里动画顺不顺。
  • 性能保护优先保姿态更新和显示刷新,再保场景特效;特效掉帧不应夺走补偿头动的那一拍。
  • 分析器里把 hitch 标在头速高的时段,不要只看会话平均帧率。
  • 验证:在固定转速下录像视野里的一根世界锁定竖线。丢帧时竖线应画出横向折线,而不是整段录像变慢。若竖线在转头时抽动、静止时看不出来,就是这条,不是「优化一下动画插值」能消掉的。

延伸

  • 同组N1.11.1 端到端延迟是多段串联,优化只对最长的那段有效 · N1.11.2 重投影把渲染频率与显示频率解耦 · N1.11.4 延迟的波动比延迟的均值更难被适应
  • 相邻N1.05 运动到光子延迟 · N1.12 刷新率与残像
  • 站内检索dropped frame · judder · hitch

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/N1.11.3