LoginSignup
0
0
この記事誰得? 私しか得しないニッチな技術で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

p5.js用のライブラリ「p5.animS」を使って描画の軌跡のアニメーションを手軽に実現(まずは軽いお試しから)

Last updated at Posted at 2024-07-01

リニューアルされたばかりの以下の p5.js のサイトで、関連ライブラリの一覧を見ていた時に気になった「p5.animS」というライブラリに関する記事です。

●p5.js
 https://p5js.org/

image.png

このライブラリを使うと、例えば円や線などを描画する際に、その輪郭の軌跡を徐々に描画するアニメーションなどといったものを簡単に実現できるようでした。

image.png

それが楽しそうだったのと、現時点で Web検索しても公式以外の解説が出てこないようだったので、まずは「p5.animS」を軽く試してみて内容を記事化したというのが、この記事です。

p5.animS

p5.animS の公式サイト

以下が p5.animS の公式サイトです。

●p5.animS - animates p5.js shapes
 https://wixette.github.io/p5.animS/
image.png

公式サンプル

p5.animS の公式サイトを見ていくと、最初に以下の公式サンプルが示されています。

image.png

これは、円の輪郭を描画する軌跡のアニメーションです。

公式サンプルに少しだけ手を加えてみる。

上記の公式サンプルに手を加えてみます。

p5.animS の circle() の仕様を確認

その前に、p5.animS の circle() の仕様を確認してみます。

以下のリファレンスを見ると、5つの引数の意味が書いてあります。

●p5.animS - animates p5.js shapes
 https://wixette.github.io/p5.animS/#reference

image.png

書き出してみると、以下となるようです。

  1. id: それぞれを識別するためのユニークな文字列の ID
  2. アニメーションの描画時間(ここで指定する数字はフレーム数)
  3. 円の中心の x座標
  4. 円の中心の y座標
  5. 円の半径

通常の円の描画に、ID と アニメーションの描画時間を付け加えたような形です。

手を加えたものを作って動作確認

それでは、公式サンプルに手を加えたものを作ってみます。

以下が実装した内容です。

function setup() {
  createCanvas(550, 450);
  colorMode(HSB, 360, 100, 100, 1);
}

function draw() {
  background(190, 30, 100);
  noFill();

  stroke(0, 0, 100);
  strokeWeight(5);
  animS.circle("c1", 60, width * 0.4, height * 0.5, width * 0.5);

  stroke(320, 0, 100);
  strokeWeight(5);
  animS.circle("c2", 100, width * 0.7, height * 0.5, width * 0.3);
}

function mouseClicked() {
  animS.reset();
}

これを動作させたところ、以下のように想定通りのアニメーションが行われるのを確認できました。

このようなアニメーションを手軽に実現できて良い感じでした!

自由な形状を作る仕組み

今回、とりあえず円の描画を試しましたが、他に線や三角形、矩形などの図形も簡単に扱えるようです。

それ以外にも以下を見ると、配列の配列(入れ子になった配列)を用いることで、より自由な形状の軌跡を扱えるようです。
(x座標・y座標の組を配列にする以外に、6つの要素を持つ配列を使うことでベジエ曲線も指定できるようです)

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0