私たちは皆、Processingで線を引く方法を知っています。
しかし、線を引くと、その線はすぐに表示されます。
描画プロセス、つまり線が前進するのを確認したい場合は、線全体が徐々に完成します。
これが私が実現したいことです:最終的にいくつかのパターンに変わるいくつかの線と曲線を描くこと。
では、それを実現する方法は?アレイを使用していますか?
どうもありがとう。
私たちは皆、Processingで線を引く方法を知っています。
しかし、線を引くと、その線はすぐに表示されます。
描画プロセス、つまり線が前進するのを確認したい場合は、線全体が徐々に完成します。
これが私が実現したいことです:最終的にいくつかのパターンに変わるいくつかの線と曲線を描くこと。
では、それを実現する方法は?アレイを使用していますか?
どうもありがとう。
処理中、すべての描画はループで行われます。説明したようなアニメーションシーケンスを作成する簡単な方法は、frameCountを使用してそれを駆動することであり、モジュラス関数%を使用することはループを作成するための良い方法です。たとえば、x軸に沿ってアニメーション化するには:
void draw() {
float x = 50;
float y = 50;
float lineLength = 50;
int framesToAnimate = 60;
line(x,y,x+float(frameCount % framesToAnimate)/framesToAnimate*lineLength, y);
}
注:フロートにキャスト/変換しないと、奇妙なことが起こります
私はこれをかなり頻繁に使用して、色などの他の機能をアニメーション化します。
fill(color(127 + sin(float(frameCount)/90)*127, 0, 0, 127));
より高度なものにしたい場合は、PVectorを使用してベクトルと座標を設定します。DanielShiffmanのサイトにはかなり良いチュートリアルがあります。
フレームレートに依存せずにアニメーションを設定する場合は、代わりにmills()を使用できます。これにより、スケッチが開始されてからの現在の時刻が返されるため、指定された時間に何かが発生するように秒単位で設定できます。たとえば:
long initialTime;
void setup(){
size(400,200);
initialTime = millis();
}
void draw() {
float x = 50;
float y = 50; //set the multiplier to adjust speed
line(x,y,x+(millis()-initialTime)*0.01, y); //10 px/sec
line(x,y+50,x+(millis()-initialTime)*0.05, y+50); //50 px/sec
line(x,y+100,x+(millis()-initialTime)*0.001, y+100); // 1 px/sec
}
いくつかのアニメーションライブラリもあります。いくつかの印象的な結果を見てきましたが、使用したことはありません。ここにリストがあります。