考虑以下草图:
float offset = 0.0;
void setup() {
size(500, 500);
smooth(8);
}
void draw() {
stroke(0);
background(255);
strokeWeight(2);
translate(offset, 0);
for (int i = 0; i < 10; i++) {
line(i * 20, 100, i * 30, 400);
}
offset += 0.1;
}
如果你运行它,你会发现线条以一种生涩的方式移动,并且不像人们希望的那样顺利。我猜这可能是由于处理舍入坐标。有没有人遇到并解决过这些问题?我有什么可以做的吗?
基本上:如何在保持动画速度的同时让这个动画保持平滑?
答案 0 :(得分:0)
处理并非真正“四舍五入”任何事情。问题在于没有半像素这样的东西。
以这种方式思考:你开始时X值为30.0,即30像素。然后将其增加到30.1,仍然是像素30.然后30.2仍然是像素30.这一直持续到你最终增加到31.0,即31像素。
换句话说,你在每个像素上花费了10帧。这就是你的动画看起来不平稳的原因:线在一个坐标上花费10帧,然后移动,然后在坐标上花费10帧等。
如果将偏移增量增加到.5
,那么您在每个像素上花费的时间就会减少,动画也会更加顺畅。
之前:
后:
编辑:默认渲染器的情况如下。 P3D
渲染器在子像素渲染方面似乎更好:
您也可以尝试使用P2D
渲染器,它在子像素渲染方面似乎也优于默认渲染器。