講義2-1: p5.jsの基礎
p5.js: Web版のProcessing環境
Processingとは
- ビジュアルアートのプログラミング環境.
- プログラミングでお絵描きができる!
Processingが関係する授業
- 【3年前期】グラフィックスの理論
- 【3年後期】ビジュアルコンピューティング演習
- 【3年後期】(コンピュータグラフィックス)
Web版を使う利点
- テンプレートファイルを配布しやすい(URLにアクセスするだけ)
- 自分のプログラムコード・結果をすぐ共有できる(メニューからすぐ共有リンクを発行可能)
※ セットアップ,メンテナンスの手間が少ないのでWeb版を使っています
p5.jsのプログラミング言語
JavaではなくJava Script
- かなり似ているが…プロⅠで習った構文と若干違うので注意が必要
- Webコンテンツ作成の方でも扱う
演習では: ライブラリの呼び出しを組み合わせることを意識
JavaとJava Scriptの変数宣言の違い
Java: 型の指定がある
- int, doubleなどの型指定を明確に行う必要がある
Java Script: 型の指定がない (宣言方法が共通)
- 共通のlet, var構文でintも文字列も宣言できる
※ 演習ではこれらの構文の違いはなるべく意識しなくても済むようにする.
2D・3DのDemoスケッチ
2D描画を行う最小サンプル
初期化関数
- createCanvasで描画領域を作る
描画関数
- background関数で背景色の指定
- fill関数で円の色を指定
- circle関数で円の描画
// 描画関数
function draw() {
background(80, 80, 80); // 背景色の指定
fill(100, 100, 255);
// マウスの座標を取得
let x = mouseX;
let y = mouseY;
// circle(x, y, r)
// - (x, y)の位置に直径rの円を描く
circle(x, y, 100);
}
プログラムで動かしてみましょう
変数の設定
(x, y)を更新するための入れ物を作っておく.
(x, y)の更新処理
スピード分を足し込んでいくと,位置が描画するごとに変化していく.
※ vx, vyの値を変化させるとどうなる?
※ 戻ってくるようにするためには?
3Dモデルを表示する最小サンプル
3Dモデルなど重いデータを読み込む処理が追加
// 事前に必要な読み込み処理
function preload() {
// 3Dモデルデータの読み込み
mesh = loadModel('suzanne_smooth.obj', true);
}
3D表示用のキャンバス作成
- WEBGLを設定することで3D用キャンバスになる
draw関数の中で3DCG用の描画を行う
- camera関数の呼び出し
- rotateYによる回転操作
- model関数による3Dメッシュの描画
function draw() {
...
// カメラの設定
// ex, ey, ez,cx,cy,cz,ux,uy,uz
camera( 0,100,200, 0, 0, 0, 0, -1, 0);
// モデルの回転
...
rotateY(rotationAngle); // y軸周りの回転アニメーション
// モデルの描画
model(mesh);
}
※ ポイントとなるのは,ライブラリ関数の組み合わせで作られていること