SlideShare a Scribd company logo
情報編集(Web)
HTML5 実践2
Processing.jsを使う
2013年6月25日
東京藝術大学 芸術情報センター(AMC)
担当:田所淳
今日の内容
‣ 前回 - JavascriptでCanvasに図形を描いた
‣ なかなか面倒!!
‣ より効率的で簡単な方法は無いか?
‣ Processing.js という開発環境を紹介
‣ Processing.js - ProcessingのJavaScirpt版
‣ Processingの文法で、HTML5(Canvas)に描画
‣ Processingって何?
Processingとは?
Processingとは?
‣ Processing is a programming language,
development environment, and online community.
Since 2001, Processing has promoted software
literacy within the visual arts and visual literacy
within technology. Initially created to serve as a
software sketchbook and to teach computer
programming fundamentals within a visual context,
Processing evolved into a development tool for
professionals. Today, there are tens of thousands
of students, artists, designers, researchers, and
hobbyists who use Processing for learning,
prototyping, and production.
Processingとは?
‣ http://processing.org/
Processing 誕生の歴史
‣ Design by Numbers - John Maeda (MIT Media Lab.)
‣ http://dbn.media.mit.edu/
‣ Processingの祖先
Processing 誕生の歴史
‣ MIT Media Lab. で John Maedaの博士課程の学生だった
Ben FryとCasey Reas によりProcessing が生みだされた
(2001)
‣ その後バージョンアップを重ねて現在のバージョンは1.5.1
‣ Javaをベースにしたクロスプラットフォーム
‣ Mac OSX, Windows, Linux 版
Processingに触れてみる
‣ まずは起動してみる
‣ Processingの起動画面
Processingに触れてみる
‣ メニューの解説
‣ 操作方法
‣ 先週は(素の)Javascirptで記述した形態の描画を
Processing.jsで書いてみる
size(640, 480); //640x480pixelの画面を生成
background(31); //背景色
fill(31,127,255); //塗りの色
stroke(255); //線の色
point(300, 200); //(300,200)の場所に点を描く
line(50, 100, 400, 300); //(50,100)の点から(400,300)の点へ線を引く
rect(400, 100, 100, 300); //(400,100)の点から、幅100、高さ300の四角形を描く
ellipse(200, 340, 300, 200); //(200,340)の点を中心に、幅300、高さ200の楕円を描く
Processingに触れてみる
‣ 以下のコードを記入
Processingに触れてみる
‣ Javascirptモードにして実行 → Webブラウザで表示
‣ とっても簡単!!
アニメーション
アニメーション
‣ 今日は早速アニメーションに挑戦
‣ まずは全体の枠組みを理解する!
‣ アニメーションを実現するには、プログラムをより構造化して
いく必要
‣ setup()とupdate()という二つのパートに構造化してアニ
メーションを実現する
アニメーション
‣ setup() ‒ 初期設定: プログラムの起動時に一度だけ実行され
ます。画面の基本設定やフレームレートなどを設定します。
‣ draw() ‒ 描画: 設定した速さ(フレームレート)でプログラムが
終了するまでくりかえし実行されます。
アニメーション
‣ この仕組みを利用して円が斜め下に移動するプログラムを作成
してみる
float posX, posY; //円の中心位置を格納する変数
float speedX, speedY; //円の速度を格納する変数
void setup() {
size(640, 480); //640x480pixelの画面を生成
frameRate(60); //フレームレート
stroke(63, 191, 255); //線の色
fill(0, 127, 255, 127); //塗りの色
posX = 40; //円の初期位置X
posY = 40; //円の初期位置Y
speedX = 3; //円の初期位置X
speedY = 2; //円の初期位置Y
}
void draw() {
background(15); //背景を描画
ellipse(posX, posY, 20, 20); //指定した位置に円を描画
posX = posX + speedX; //円のX座標を更新
posY = posY + speedY; //円のY座標を更新
}
アニメーション
‣ 以下のコードを記入
アニメーション
‣ 円がアニメーションする(はず)
アニメーション
‣ 画面の端でバウンドさせてみる
‣ 以下の条件を設定する必要
‣ 画面の右端、もしくは画面の左端 → X方向のスピードを反転
‣ 画面の上端、もしくは画面の下端 → Y方向のスピードを反転
‣ if文
‣ このような「もし○○だったら、□□しなさい、(そうでなけ
れば、△△△しなさい)」というような制御構造を表現するた
めの仕組み
if(《条件式》){
《真文》//条件が正しい場合の処理
} else {
《偽文》//条件が正しくない場合の処理
}
アニメーション
‣ if文の文法
float posX, posY; //円の中心位置を格納する変数
float speedX, speedY; //円の速度を格納する変数
void setup() {
size(640, 480); //640x480pixelの画面を生成
frameRate(60); //フレームレート
stroke(63, 191, 255); //線の色
fill(0, 127, 255, 127); //塗りの色
posX = 40; //円の初期位置X
posY = 40; //円の初期位置Y
speedX = 3; //円の初期位置X
speedY = 2; //円の初期位置Y
}
アニメーション
‣ 条件分岐をつかって、壁でバウンドさせてみる
void draw() {
background(15); //背景を描画
ellipse(posX, posY, 20, 20); //指定した位置に円を描画
posX = posX + speedX; //円のX座標を更新
posY = posY + speedY; //円のY座標を更新
if (posX < 0 || posX > width) { //もし画面の左端または右端に到達したら
speedX = speedX * -1; //X方向のスピードを反転
}
if (posY < 0 || posY > height) { //もし画面の下端または上端に到達したら
speedY = speedY * -1; //Y方向のスピードを反転
}
}
アニメーション
‣ 条件分岐をつかって、壁でバウンドさせてみる
アニメーション
‣ たくさんの図形を一度に動かしてみる
‣ 先週やったfor文の応用
‣ データの持ち方に工夫が必要 → 配列
‣ データのロッカーのようなイメージ
// float型の領域100コを確保、dataという配列名に
float data[] = new float[100];
// data[0], data[1], data[2] ... data[99] まで一気に生成!
アニメーション
‣ 配列の定義の方法の例
アニメーション
‣ 配列とくりかえしを使用して、先程の壁でバウンドするプログ
ラムを改造
‣ たくさんの図形を同時に動かしてみる!
int NUM = 100;
float posX[] = new float[NUM]; //円の中心位置を格納する変数
float posY[] = new float[NUM];
float speedX[] = new float[NUM]; //円の速度を格納する変数
float speedY[] = new float[NUM];
void setup() {
size(640, 480); //640x480pixelの画面を生成
frameRate(60); //フレームレート
stroke(63, 191, 255); //線の色
fill(0, 127, 255, 127); //塗りの色
//NUM回くりかえし
for (int i = 0; i < NUM; i++) {
posX[i] = random(width); //円の初期位置X
posY[i] = random(height); //円の初期位置Y
speedX[i] = random(-5,5); //円の初期位置X
speedY[i] = random(-5,5); //円の初期位置Y
}
}
アニメーション
‣ 配列を使用して、たくさんの図形を動かす
void draw() {
background(15); //背景を描画
//NUM回くりかえし
for (int i = 0; i < NUM; i++) {
ellipse(posX[i], posY[i], 20, 20); //指定した位置に円を描画
posX[i] = posX[i] + speedX[i]; //円のX座標を更新
posY[i] = posY[i] + speedY[i]; //円のY座標を更新
//もし画面の左端、または右端に到達したら
if (posX[i] < 0 || posX[i] > width) {
speedX[i] = speedX[i] * -1; //X方向のスピードを反転
}
//もし画面の下端、または上端に到達したら
if (posY[i] < 0 || posY[i] > height) {
speedY[i] = speedY[i] * -1; //Y方向のスピードを反転
}
}
}
アニメーション
‣ 配列を使用して、たくさんの図形を動かす
アニメーション
‣ たくさんの図形が同時に動く!!
アニメーション
‣ 今日はここまで!!

More Related Content

PDF
シンプル Processing !
PDF
情報編集(Web) HTML5 実践3 Processingによるデータの可視化と生成的表現
PDF
芸術情報演習デザイン(Web) Tumblrを使う2 テーマをカスタマイズする
PDF
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う Twitter Bootstrap
PDF
iTamabi iPhoneアプリ実践開発講座2 - 時計アプリをつくる
PDF
coma - creator’s talk session: Code - openFrameworks
PDF
CSS - ボックスモデルを理解する - 千葉商科大学 Web表現
KEY
jQuery 2 イベントを理解する - 芸大Webデザイン演習B
シンプル Processing !
情報編集(Web) HTML5 実践3 Processingによるデータの可視化と生成的表現
芸術情報演習デザイン(Web) Tumblrを使う2 テーマをカスタマイズする
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う Twitter Bootstrap
iTamabi iPhoneアプリ実践開発講座2 - 時計アプリをつくる
coma - creator’s talk session: Code - openFrameworks
CSS - ボックスモデルを理解する - 千葉商科大学 Web表現
jQuery 2 イベントを理解する - 芸大Webデザイン演習B

Viewers also liked (20)

PDF
情報編集(Web) 130409
KEY
jQueryプラグイン フォトギャラリーを作成する - 芸大Webデザイン演習B
PDF
情報編集(Web) 第7回:CSSレイアウト
PDF
Tamabi media131118
PDF
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
PDF
Interactive Music II SuperCollider入門 2 - 関数とUGen
PDF
芸術情報演習デザイン(Web) 最終課題制作相談会
PDF
芸術情報演習(Web) Tumblrを使う3 カスタムHTMLテーマの作成
PDF
iTamabi 13  第3回:iPhoneアプリ実践開発講座 1 画像ファイルの読み込み 画像でアニメーションを作成する
PDF
Sound & CGI-B, 2013.10.04
PDF
openFrameworks iOS 入門
PDF
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 3: アドオンを作ろう!
PDF
芸術情報演習デザイン(Web) Tumblrを使う 4 静的ページの作成、サイトの設計
PDF
iTamabi 13 第5回:ARTSAT API 導入
PDF
メディア芸術基礎 Ⅰ 第5回:サイトの設計、ソーシャルメディアを利用する
PDF
メディア芸術基礎 Ⅰ 第4回:CSS入門 情報の形を視覚化する
PDF
iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現する
PDF
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
PDF
情報編集(Web) 第6回:CSS入門 - 2 ボックスモデルを理解する
PDF
jQueryでつくる、動きのあるWebページ - 多摩美 メディアリテラシー
情報編集(Web) 130409
jQueryプラグイン フォトギャラリーを作成する - 芸大Webデザイン演習B
情報編集(Web) 第7回:CSSレイアウト
Tamabi media131118
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
Interactive Music II SuperCollider入門 2 - 関数とUGen
芸術情報演習デザイン(Web) 最終課題制作相談会
芸術情報演習(Web) Tumblrを使う3 カスタムHTMLテーマの作成
iTamabi 13  第3回:iPhoneアプリ実践開発講座 1 画像ファイルの読み込み 画像でアニメーションを作成する
Sound & CGI-B, 2013.10.04
openFrameworks iOS 入門
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 3: アドオンを作ろう!
芸術情報演習デザイン(Web) Tumblrを使う 4 静的ページの作成、サイトの設計
iTamabi 13 第5回:ARTSAT API 導入
メディア芸術基礎 Ⅰ 第5回:サイトの設計、ソーシャルメディアを利用する
メディア芸術基礎 Ⅰ 第4回:CSS入門 情報の形を視覚化する
iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現する
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
情報編集(Web) 第6回:CSS入門 - 2 ボックスモデルを理解する
jQueryでつくる、動きのあるWebページ - 多摩美 メディアリテラシー
Ad

Similar to 情報編集(Web) HTML5 実践2 Processing.jsを使う (20)

PDF
Interactive Music II Processingによるアニメーション
PDF
p5.js 授業テキスト
PPTX
岡山県立大学オープンキャンパス資料
PDF
PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」
PPTX
20150725 オープンキャンパス資料
PPTX
20160723 オープンキャンパス資料
PDF
Processing授業テキスト
PDF
Ssaw08 0916
PDF
Processing
PDF
Processingによるプログラミング入門 第5回
PDF
Processing workshop v3.0
PDF
Processing workshop
PDF
Processing資料(1) Processingの基本
PDF
Processingによるプログラミング入門 第3回
PDF
openFrameworks Workshop in Kanazawa v001
PDF
Processing によるプログラミング入門 第1回
PPTX
Processingについて
PDF
Processingについて
PDF
Processing using NanoboardAG
PDF
Ssaw08 0930
Interactive Music II Processingによるアニメーション
p5.js 授業テキスト
岡山県立大学オープンキャンパス資料
PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」
20150725 オープンキャンパス資料
20160723 オープンキャンパス資料
Processing授業テキスト
Ssaw08 0916
Processing
Processingによるプログラミング入門 第5回
Processing workshop v3.0
Processing workshop
Processing資料(1) Processingの基本
Processingによるプログラミング入門 第3回
openFrameworks Workshop in Kanazawa v001
Processing によるプログラミング入門 第1回
Processingについて
Processingについて
Processing using NanoboardAG
Ssaw08 0930
Ad

More from Atsushi Tadokoro (20)

PDF
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
PDF
プログラム初級講座 - メディア芸術をはじめよう
PDF
Interactive Music II ProcessingとSuperColliderの連携 -2
PDF
coma Creators session vol.2
PDF
Interactive Music II ProcessingとSuperColliderの連携1
PDF
Interactive Music II Processing基本
PDF
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
PDF
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス
PDF
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)
PDF
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く
PDF
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
PDF
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
PDF
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
PDF
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1
PDF
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画する
PDF
Media Art II openFrameworks 複数のシーンの管理・切替え
PDF
Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!
PDF
Geidai music131107
PDF
Interactive Music II SuperCollider入門 5 時間構造をつくる
PDF
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
プログラム初級講座 - メディア芸術をはじめよう
Interactive Music II ProcessingとSuperColliderの連携 -2
coma Creators session vol.2
Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II Processing基本
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画する
Media Art II openFrameworks 複数のシーンの管理・切替え
Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!
Geidai music131107
Interactive Music II SuperCollider入門 5 時間構造をつくる
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL

情報編集(Web) HTML5 実践2 Processing.jsを使う