【p5.js入門】 図形とアニメーションの基本

この記事では、p5.js を使って「簡単な図形の描画」と「背景色の虹色アニメーション」を同時に体験するサンプルを紹介します。

アニメーションの動作

この記事のコードを動かすと以下のようなアニメーションができあがります

このサンプルでは、基本図形の描画色の指定について説明します。

ファイル構成

以下のディレクトリ構成でプロジェクトを作成してください。

basic-shape/
├── index.html
└── sketch.js

以下指定の各ファイルを生成してください。

index.html

HTML
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Chapter 1 - Basic Shapes & Colorful Art</title>
    <!-- p5.js をCDNから読み込み -->
    <script src="https://cdn.jsdelivr.net/npm/p5@1.6.0/lib/p5.min.js"></script>
    <!-- 実装したスクリプトを読み込み -->
    <script src="sketch.js"></script>
  </head>
  <body>
    <!-- 特に要素を置かなくてもOK。p5.jsが自動的に<canvas>を生成します。 -->
  </body>
</html>

要点の解説

  • <script src="https://cdn.jsdelivr.net/npm/p5@1.6.0/lib/p5.min.js"></script>
    • インターネット経由で p5.js を読み込みます。バージョン番号は適宜変更可能。
  • <script src="sketch.js"></script>
    • 自作スクリプト sketch.js を参照し、描画処理を実行します。
  • <body> タグ内は空でもOK。
    • p5.js が自動的に <canvas> 要素を追加し、その上に描画を行います。

sketch.js

メインで動作するJavaScriptコードを作成します。

JavaScript
let hue = 0; // 背景色を変化させるための色相(Hue)

function setup() {
  // キャンバスを 400×300 で作成
  createCanvas(400, 300);
  // HSB モードで色を扱う (色相0~359, 彩度/明度0~100)
  colorMode(HSB, 360, 100, 100);
}

function draw() {
  // 背景色: hue を元に虹色に変化 (彩度=100, 明度=100)
  background(hue, 100, 100);

  // hue を 1 ずつ増やし、0~359 でループ
  hue = (hue + 1) % 360;

  // --- 以下、基本図形をいくつか描画 ---

  // 1) 円 (ellipse)
  fill(0, 100, 100);  // 塗り色: 赤 (色相0)
  ellipse(100, 150, 80, 80);

  // 2) 長方形 (rect)
  fill(120, 100, 100); // 緑 (色相120)
  rect(200, 110, 80, 80);

  // 3) 線 (line)
  stroke(240, 100, 100); // 線色: 青 (色相240)
  strokeWeight(4);
  line(50, 50, 350, 250);

  // 4) ポリゴン (triangle)
  noStroke();            // 線を消して塗りのみ
  fill(60, 100, 100);    // 黄 (色相60)
  triangle(300, 50, 350, 100, 250, 100);

  // 5) テキスト (text)
  fill(0, 0, 0);         // 黒
  textSize(16);
  text("Hello, p5.js!", 20, 280);
}

要点の解説

  • hue 変数で色相を管理し、draw() 内で (hue + 1) % 360 と更新し続けることで背景色が虹色に変化します
  • setup() は起動時に1回だけ呼ばれます。
    • createCanvas() で描画領域を作成、colorMode(HSB) で色の指定を HSB ベースにします。
  • draw() は毎フレーム呼ばれます。
    • background() で前フレームを消去した上で図形を描画します。

実行手順

  • ローカルで index.html を開く
    • ダブルクリックや Chrome へのドラッグ&ドロップなどでOK。
    • 背景が虹色にアニメーションしながら、円や四角が描画されていれば成功。

まとめ

  • p5.js の基本構造:
    • setup():起動時1回だけ実行
    • draw():毎フレーム実行
  • HSB モードで色相(Hue)を変化させることにより、簡単に虹色アニメーションを実現しています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください