有可能利用视觉残留,不断的刷新 canvas 来显示一张图片吗?

2018-09-19 07:33:10 +08:00
 rabbbit

把图片分成两半交替显示, 图像会闪动.

预览 https://aaron-bird.github.io/CanvasDemo/

代码 https://github.com/Aaron-Bird/CanvasDemo/blob/master/index.html

想问下为啥会闪? requestAnimationFrame 每秒绘制 60 帧,人眼不是 24 帧就够了吗?

4152 次点击
所在节点    问与答
36 条回复
GiantHard
2018-09-19 07:46:01 +08:00
我的猜测,多分几份,前后两帧之间最好有重叠部分,这样看起来会好一些。
wjm2038
2018-09-19 08:01:23 +08:00
可能就刚好在没绘制的时候看到了背景吧。。也有可能是没有真正的 60 帧?
zhyl
2018-09-19 08:04:29 +08:00
因为你不断 clearrect 整个画布
lmmortal
2018-09-19 08:04:31 +08:00
把页面背景调黑试试?
oxoxoxox
2018-09-19 08:05:25 +08:00
你是正常图片和白色背景交替?
你换成黑色背景再试试看呢
Trim21
2018-09-19 08:06:04 +08:00
24 帧的帧和帧之间也没有显示一次白色的背景啊…
Cyron
2018-09-19 08:15:24 +08:00
视频里添加一帧图片也可以明显看出来的,原理相同
Cyron
2018-09-19 08:17:13 +08:00
6 楼说的对,你这是相当于图片和背景交替每张 30 帧
zhs227
2018-09-19 08:18:21 +08:00
尝试了每个 rafj 里 hidden,下一个 raf 打开。也是一样闪。
cjpjxjx
2018-09-19 08:30:23 +08:00
个人猜测:电影 24 帧,每一帧都和前一帧相差不大,通过视觉残留就成了视频,在这个过程中并不会显示背景,然而这个图片虽然 60 帧,但确是图片和背景交替显示,图片有视觉残留,然而背景也会有视觉残留,不管是什么颜色
SimonTart
2018-09-19 08:33:47 +08:00
whileFalse
2018-09-19 08:34:17 +08:00
你怎知胶片电影不闪呢?
电影院里 帧率 24,每帧时长 1/24,不闪
你的,帧率 30,每帧 1/60,闪
胶片电影,帧率 24,每帧时长<1/24,但注意,电影是要在夜里,用很高的亮度投射出来的,人的视野里只有电影。物体越亮,视觉暂留越久。如果你有 AMOLED 屏幕的手机,可以试试全屏后躲在被窝里看,效果会好一些。
oyhw92
2018-09-19 08:58:51 +08:00
背景放一张高斯模糊过的图片试试
kerr92
2018-09-19 09:06:04 +08:00
```js
canvasCtx.clearRect(0, 0, width, height);
canvasCtx.drawImage(...arr[i]);
```

理论上闪烁的原因在于你每次画新帧的时候都把前一帧清空了,如果基于 canvas 做动画,应该是直接用新帧覆盖前一帧,而不是清空重画。
460881773
2018-09-19 09:18:04 +08:00
楼上说的有道理
koalli
2018-09-19 09:49:33 +08:00
视觉残留是第一帧和第二帧比较相似的时候直接切换才会视觉残留,你这样等于第一帧是图,第二帧是清空的,无法视觉残留...
Gimini
2018-09-19 10:14:15 +08:00
实际上就是你背景和图片交替,各自 30 帧,视觉残留了图像也残留了背景
wangjie
2018-09-19 10:46:48 +08:00
盯着看一会儿后关掉那个页面看屏幕的那个地方还是在闪
cent777
2018-09-19 10:54:55 +08:00
@oyhw92 放高斯模糊出现了以前非主流头像的效果。。。

http://cloth.yxxurl.com/testpics/
KevZhi
2018-09-19 11:08:07 +08:00
人眼能感知到的闪烁频率 48HZ,初期模拟电视为了避免闪烁采用了隔行扫描,25p 的画面分成了 50i,所以不应该用 24hz,应该两倍或更高。
请参阅《现代电视技术》等基础课程

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/490661

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX