p5js:色を扱ういろいろ

  • このエントリーをはてなブックマークに追加
p5js入門

p5jsで色を扱う方法です。stroke(),fill()等で色を指定する方法として何パターンか用意されています。また、Colorオブジェクトを使って色を管理することができます。

カラーモード

色指定をRGB、HSBのどちらで行うか指定できます。カラーモードの指定はcolorMode()関数を使います。デフォルトではRGBカラーモードになっています。

構文

colorMode(mode,[max])
colorMode(mode,max1,max2,max3,[maxA])

mode:RGB,HSBの定数を指定できます。max:指定値の範囲を指定します。デフォルトは255です

  • max1:カラーモードに応じて赤または色相の範囲を指定します。
  • max2:カラーモードに応じて緑または彩度の範囲を指定します。
  • max3:カラーモードに応じて青または明度の範囲を指定します。
  • maxA:アルファ値の範囲を指定します。

サンプル

function draw() {
  colorMode(RGB,255);
  fill(color(100,0,0));
  rect(20,20,60,60);

  colorMode(RGB,100);
  fill(color(100,0,0));
  rect(90,20,60,60);
}
赤い四角

Colorオブジェクトと色指定

p5jsでは色情報を管理するColorオブジェクトが用意されています。Colorオブジェクトは構築時のカラーモードと範囲を格納しています。saturation()等の色情報を取得する関数が呼ばれた時に現在のカラーモードに合わせた値を返します。

Colorオブジェクトの作成

Colorオブジェクトの作成するにはcolor()を呼び出します。パラメータは現在のcolorMode()に応じたRGBまたはHSB値として解釈されます。デフォルトのモードは0から255までのRGB値です。1つの値しか与えられていない場合、それはグレースケール値として解釈されます。2番目の値を追加すると、アルファ透明度として扱います。3つの値が指定されると、それらはRGBまたはHSB値として解釈されます。
4番目の値を追加すると、アルファ透明度が適用されます。
単一の文字列引数を指定すると、RGB、RGBA、およびHex CSSカラー文字列とすべての名前付きカラー文字列がサポートされます。この場合、2番目の引数としての英数字値はサポートされていません。RGBA形式を使用する必要があります。

ここで使用される色指定はstroke(),fill()等の色情報を引数にとる関数でも同様の記述ができます。

RGB値指定

RGB値で指定します。オプションとしてアルファ値を指定することもできます。

構文

let c = color(R,G,B,[alpha]);

R,G,Bのそれぞれ赤、緑、青の色要素を0から255の数値で指定します。alphaは透明度の指定で省略可能です。0から255の範囲で指定可能で0に近いほど透明になります。0を指定すると表示されなくなります。

サンプル

function draw() {
  let c=color(255,0,0);
  fill(c)
  rect(20,20,60,60);
}

HSB値指定

HSB値で色を指定します。HSB値の指定は事前にカラーモードをHSBにしてからfill()を呼び出します

構文

color(H,S,B,[alpha]);

H,S,Bのそれぞれ色相(Hue)、彩度(Saturation)、明度(Brightness)の色要素を0から255の数値で指定します。alpha値についてはRGB指定と同じです。事前にcolorMode(HSB)を呼び出してカラーモードをHSBにしておきます。一度カラーモードをHSBにすると以降の色指定はHSBになるのでRGB指定に戻したい場合はcolorMode(RGB)を呼び出します。

サンプル

function draw() {
  colorMode(HSB);
  let c=color(255,204,100);
  fill(c);
  rect(20,20,60,60);
}

文字列指定

文字列を使って色を指定する方法です。文字列の記述方法が複数あります

CSSの色名文字列で指定する

color(‘red’)

3文字の16進数値で指定する

color (‘#f00’)

6文字の16進数値で指定する

color (‘#FF0000’)

10進数値のRGB値で指定する

color (‘rgb(255,0,0)’)

10進数値のRGBA値で指定する

color (‘rgba(255,0,0,100)’)

パーセント指定のRGB値で指定する

color (‘rgb(100%,0%,0%)’)

パーセント指定のRGBA値で指定する

color (‘rgba(100%,0%,0%、20%)’)

グレースケール指定

グレースケールで指定します。

構文

color(G)

Gに0~255の数値を一つ指定します。0に近づくほど黒くなり、255に近づくほど白くなっていきます。

色情報の取得

色情報の各要素を取得する関数が用意されています

赤色情報の取得

red(color)

青色情報の取得

blue(color)

緑色情報の取得

green(color)

アルファ透過度の取得

alpha(color)

色相の取得

hue(color)

彩度の取得

saturation(color)

明るさの取得

lightness(color)

輝度の取得

brightness(color)

中間色の計算

p5jsでは2つの色を混ぜ合わせた色を計算することができます。lerpColor()を使います。

 lerpColor(c1,c2,amt)

c1に一つ目の色、c2に二つ目の色を指定します。amtにc1とc2の間の補完量を指定します。0から1の間の数値を指定し、0.1がc1に一番近く0.5はちょうど中間の色になります

サンプル

function setup() {
  createCanvas(300, 100);
  background(220);
  noLoop();
}

function draw() {
  colorMode(RGB,255);
  let c1 = color(255,255,255);
  let c2 = color(0,0,0);
  let c3 = lerpColor(c1,c2,0.5);

  fill(c1);
  rect(20,20,60,60);

  fill(c3);
  rect(160,20,60,60);

  fill(c2);
  rect(90,20,60,60);

}

まとめ

今回は色に関することを説明しました

  • カラーモードについて
  • Colorオブジェクトの生成方法
  • 色の各要素を取得する方法について
  • 中間色を計算する方法について

p5js入門 SKETCH:CODING ことのはのあゆみ

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*