Professional Documents
Culture Documents
用程式來畫圖 Processing入門
用程式來畫圖 Processing入門
用程式來畫圖 Processing入門
用程式來畫圖—Processing入門
Draw by code: Processing
講師:李炳曄
開源 程式 互動
文化 設計 圖形
課程說明
程式設計與新媒體藝術
隨著科技與環境的蛻變,科技與藝術以
更多元的形式結合,也演化出衍生性
(Generative)、互動性(Interactivity)、
流動性(Fluidity)等特質,突破過去藝術
形式的疆界,打造出新形式的身體與影
音經驗。
李炳曄/時間之花:對應宇宙/2018/無接縫環形投影、
機械裝置/直徑12.2公尺之圓形空間/國立台灣美術館
圖片來源:作者
課程說明
程式設計與新媒體藝術
當代藝術以更多元混雜的樣貌出現,也反
映出當代社會資訊爆炸、多元媒介、即時
影音串流等現象與特質。程式設計(Coding)
在此趨勢下,成為藝術家/設計師與電腦溝
通的橋樑,也在近年來成為新媒體創作者
的重要工具。
李炳曄/靈魂曝光V2/2018/Processing /2018/Processing
動畫投影/250*445cm*3面/桃園科技藝術節
圖片來源:作者
課程說明
程式設計與新媒體藝術
Processing是一種開源(Open Source)
程式語言,於2001年由MIT媒體實驗室
的Casey Reas和Benjamin Fry發起,目
的在於提供藝術家/設計師一個更容易上
手的程式設計工具。近年來已廣為台灣
之新媒體藝術家所使用,包含沈聖博、
王新仁、王連晟…等。
王新仁/昨日的路徑/2018/Processing
演算音像/即時生成投影/台北數位藝術中心
圖片來源:王新仁
課程說明
程式設計與新媒體藝術
此三週課程將引導各位同學以程式設計
(Coding)的方式創造圖形與聲音,藉由新媒
體藝術家/設計師常用的程式工具:
Processing,理解程式設計的基本概念,以
及它所能衍生的藝術表現、鑑賞與實踐。
Processing官網截圖
圖片來源:Processing官網
(一)開源程式設計:Processing
以程式為導向的藝術創作特性
1. 衍生性(Generative)
2. 時間性(Time-based)
3. 互動性(Interactive)
4. 跨領域性(Multi-disciplinary)
李炳曄/轉生樹:體感故事牆/2018/Processing、
Kinect、投影機/230*360cm/新竹241藝術空間
圖片來源:作者
(一)開源程式設計:Processing
如何安裝Processing ?
(以操作示範)
Processing官網的Download連結
圖片來源:Processing官網
(一)開源程式設計:Processing
Processing學習資源介紹
(以操作示範)
Processing官網首頁
圖片來源:Processing官網
(一)開源程式設計:Processing
Processing作品範例(Exhibition)
(以操作示範)
Processing官網的Exhibition連結
圖片來源:Processing官網
(二)認識Processing的開發環境
Processing開發面板介紹
上方:工具列
中央:程式編輯器(Editor)
下方:訊息列(Console)
(以操作示範)
Processing操作介面
圖片來源:Processing介面截圖
(二)認識Processing的開發環境
Processing偏好設定
語言設定(建議設為:英文)
字體大小設定(建議設為:18號)
(以操作示範)
圖片來源:Processing介面截圖
(三)用Processing編碼畫出圖形
畫布(Sketch)的概念
如何存檔?
(以操作示範)
點擊Run,會出現畫布
圖片來源:Processing介面截圖
(三)用Processing程式畫出圖形
畫布(Sketch)的座標
畫布最左上角為(0,0),
畫布上的點座標可以用:(X,Y)來表示
X向右遞增、Y向下遞增
(以操作示範)
右圖:Processing的座標
圖片來源:Processing介面截圖
(三)用Processing程式畫出圖形
Processing 直覺化的語法
為了讓藝術家/設計師更方便操作,
Processing以直覺化的語法著稱。
(以操作示範)
size( ) 語法
圖片來源:Processing介面截圖
(三)用Processing程式畫出圖形
更改畫布大小
size(X,Y);
例如:size(400,400);
(以操作示範)
size( ) 語法,單位為:像素
圖片來源:Processing介面截圖
(三)用Processing程式畫出圖形
更改背景色彩
background(R,G,B);
例如:background(255, 0, 255);
R、G、B的數值需在0255之間
(以操作示範)
background( ) 語法
圖片來源:Processing介面截圖
(三)用Processing程式畫出圖形
畫圓形
ellipse(圓心位置X,圓心位置Y,寬,高);
(以操作示範)
ellipse( ) 語法
圖片來源:Processing介面截圖
(三)用Processing程式畫出圖形
畫方形
rect(起始位置X,起始位置Y,寬,高);
(以操作示範)
rect( ) 語法
圖片來源:Processing介面截圖
(三)用Processing程式畫出圖形
畫線
line(起始點X,起始點Y,終點X,終點Y);
(以操作示範)
line( ) 語法
圖片來源:Processing介面截圖
(三)用Processing程式畫出圖形
畫不規則矩形
quad(X1,Y1,X2,Y2,X3,Y3,X4,Y4);
(以操作示範)
quad() 語法是用四個點來連出一個不規則矩形
圖片來源:Processing介面截圖
(三)用Processing程式畫出圖形
改變填色
fill(R,G,B);
例如:fill(50,50,255);
R、G、B的數值需在0255之間
(以操作示範)
fill 寫在quad上面,才會更改quad的填色為藍色
圖片來源:Processing介面截圖
(三)用Processing程式畫出圖形
改變筆刷顏色
stroke(R,G,B);
例如:stroke(255,255,255);
R、G、B的數值需在0255之間
(以操作示範)
stroke 寫在quad上面,更改quad的邊線為白色
圖片來源:Processing介面截圖
(三)用Processing程式畫出圖形
改變筆刷粗細度
strokeWeight(像素值);
例如:strokeWeight(10);
(以操作示範)
strokeWeight 可以改變筆刷粗細為10像素
圖片來源:Processing介面截圖
(四) Processing編碼的前後順序
先寫=先畫;後寫=後畫
先做色彩與筆刷設定,再畫圖形
後畫的會蓋住先畫的
例如:右圖的圓最後畫,因此蓋住了矩形
(以操作示範)
圖片來源:Processing介面截圖
(五) 自由練習
自由練習時間
若忘記語法的參數寫法,可以運用
可連結到Processing官網的語法說明
(以操作示範)
圖片來源:Processing介面截圖
(五) 自由練習
自由練習時間
試試看,
利用Processing語法
畫出多種線條與圖形!
記得儲存專案,
在下週的課程會用上喔!
Processing官網的Reference
圖片來源:Processing介面截圖
程式設計與動態影音圖像
讓圖形動起來—
Processing的變數、setup與draw
Move the shapes! The variables, setup and draw in Processing
講師:李炳曄
開源 程式 互動
文化 設計 圖形
(一) 變數Variables的基本概念
變數的種類、名稱與數值範圍
變數(Variables)被宣告後,就會存入電腦的記憶體,變數可以在程式中被多次應用,也可以
被改變。每個變數都包含三個部分:
名稱 (name) :請選擇具有高辨識度的名稱,只能以英文、或英文+數字來命名。
數值 (value) :阿拉伯數字
資料形態 (data type):就是變數的種類,包含整數(int)、浮點數(float)、字串(String) …
(一) 變數Variables的基本概念
變數與新媒體藝術的互動性與衍生性
變數與新媒體藝術中的互動性、衍生性
息息相關,因為變數可以在程式中被重
新賦予數值、或是儲存感測器的即時數
據,藝術家利用變數,可以讓作品不斷
變換、衍生。
李炳曄/時間之花(時間數據視覺化)/2018/
Processing衍生動畫
圖片來源:作者
(二) 練習宣告變數
宣告整數 (int)
int x =100;
宣告一個整數變數,名稱為x,附值 100。
(以操作示範)
Processing官網:int 說明
圖片來源:作者
(二) 練習宣告變數
宣告浮點數 (float)
float y = 0.5;
宣告一個浮點數(帶有小數點的)變數,
名稱為y,附值 0.5。
(以操作示範)
Processing官網:float 說明
圖片來源:作者
(二) 練習宣告變數
如何知道變數的數值?
println(x);
我們可以運用println( )語法,把變數列印
在下方的訊息列(Console)
(以操作示範)
圖片來源:作者
(三) 將變數運用於繪製圖形
如何運用變數呢?
我們可以在任何的語法中帶入變數
例如:
int x =100;
line(0, 0, 400, 400);
line(x, 0, 400, 400);
(以操作示範)
圖片來源:作者
(三) 將變數運用於繪製圖形
把變數帶入畫圓形的語法中
以下程式可以畫出同心圓:
size(400, 400);
int x = 160;
int y = 200;
ellipse( x, y, 200, 200);
ellipse( x, y, 150, 150);
ellipse( x, y, 100,100);
圖片來源:作者
(三) 將變數運用於繪製圖形
試試看:在上週寫的程式中帶入變數
int x = 160;
int y = 200;
size(400, 400);
background(255, 0, 255);
fill(50, 250, 85);
stroke(10, 200, 255);
strokeWeight(20);
ellipse(x, y, 150, 150); //帶入x 與y 作為圓心位置
ellipse(x+50, y+50, 150, 150); //也可以增加數值
圖片來源:作者
(三) 將變數運用於繪製圖形
自由練習時間
試試看,利用變數,
畫出更豐富、有規則的圖形。
圖片來源:作者
(四) Processing的setup和draw
Processing程式可以分為三部分:
(1) 變數宣告
(2) 設定 setup( )
圖片來源:作者
(四) Processing的setup和draw
(1) 變數宣告
int x = 100;
int y = 200;
圖片來源:作者
(四) Processing的setup和draw
(2) setup:只執行一次的程式
void setup(){
size(400,400); // 設定畫布為400 * 400 像素
}
圖片來源:作者
(四) Processing的setup和draw
(3) draw:不斷迴圈的程式
void draw() {
ellipse(x, y, 150, 150);
x= x+1;
}
Processing會從第一行執行到最後一行,
然後再回到第一行,
不斷的重複,直到程式被關閉。
圖片來源:作者
(五) 運用變數讓圖形動起來
利用draw迴圈,讓變數增加/減少
int x = 100;
int y = 200;
void setup() {
size(400, 400);
}
void draw() {
ellipse(x, y, 150, 150);
x= x+1;
}
圖片來源:作者
(五) 運用變數讓圖形動起來
如何觀察變數數值呢?
(以操作示範)
圖片來源:作者
(六) 內建變數mouseX、mouseY
設計屬於你自己的小畫家
void setup() {
size(600, 600);
}
void draw() {
ellipse(mouseX , mouseY,60,60);
}
(以操作示範)
運用mouseX、mouseY,在滑鼠所在的位置畫出圓形。
圖片來源:作者
(六) 內建變數mouseX、mouseY
設計屬於你自己的小畫家
void setup() {
size(600, 600);
}
void draw() {
fill(mouseX/3, mouseY/3, mouseX/3);
strokeWeight(5);
stroke(mouseY/3, mouseX/3, mouseY/3);
ellipse(mouseX , mouseY,60,60);
}
(以操作示範)
圖片來源:作者
(六) 內建變數mouseX、mouseY
設計屬於你自己的小畫家
void setup() {
size(600, 600);
}
void draw() {
//random能創造出隨機的數值
fill(random(255), 100, 255);
strokeWeight(5);
ellipse(mouseX , mouseY,60,60);
}
(以操作示範)
圖片來源:作者
(六) 內建變數mouseX、mouseY
跟著滑鼠移動而變化的圖形
圖片來源:作者
(七) 自由練習時間
自由練習時間
試試看,
利用自創變數、或是
內建變數mouseX、
mouseY,
畫出跟著滑鼠移動而
變化的圖形!
圖片來源:作者
(八) 線上資源
Open Processing
作品平台
www.openprocessing.org/
圖片來源:OpenProcessing 網頁截圖
程式設計與動態影音圖像
音像創作—Processing函式庫
Minim Library的應用
Audiovisual Creation: Using Minim Library in Processing
講師:李炳曄
開源 程式 互動
文化 設計 圖形
(一) Processing函式庫簡介
函式庫(Library)是Processing的延伸應用和語法
例如:PeasyCam(互動3D物件)、Image
Processing(互動式影像處理)、Minim(聲音與聲
音視覺化)。
(以操作示範)
(一) Processing函式庫簡介
每個Library都有範例(Example)可以供使用
File Examples
Minim函示庫下載
鍵入 minim 搜尋
點選 install
等待下載完成,須重啟Processing
(以操作示範)
圖片來源:作者
(三)與音樂一起跳動的動態圖形
使用SoundEnergyBeatDetection範例
先執行看看,是動態的圖形喔!
(以操作示範)
圖片來源:作者
(四)換成自己想要的圖形
1. 找到隨著音樂變動的變數:eRadius
讓我們複習一下「變數」的概念。
試試看,若將eRadius改為固定數值(例如:100)
會發生甚麼事呢?
圖片來源:作者
(四)換成自己想要的圖形
2. 讓我們複習一下各種圖形的畫法
例如:畫「線」
(以操作示範)
圖片來源:作者
(四)換成自己想要的圖形
3. 利用範例,改寫為自己想要的圖形
例如,改為畫出動態的「線」 :
strokeWeight(20);
stroke(255);
line(width/2, height/2, width/2+eRadius, height/2);
(以操作示範)
圖片來源:作者
(四)換成自己想要的圖形
3. 利用範例,改寫為自己想要的圖形
例如,改為畫出動態的「線」 :
strokeWeight(40);
stroke(a, 50, 250);
line(width/2, height/2, width/2+eRadius*2, height/2);
line(width/2, height/2, width/2-eRadius*2, height/2);
(以操作示範)
圖片來源:作者
(四)換成自己想要的圖形
4. 其他好用的語法
map ( ) 語法:
map(變數, 最低值, 最高值, 目標最低值, 目標最高值);
(以操作示範)
圖片來源:作者
(四)換成自己想要的圖形
5. 其他好用的語法
(以操作示範)
圖片來源:作者
(五)換成自己喜歡的樂曲
1. 搜尋自己喜歡的音樂(.mp3)
使用有創用CC標記:No Copyright的音樂
(以操作示範)
圖片來源:作者
(五)換成自己喜歡的樂曲
2. 拖曳進想要的音樂檔(.mp3)
將音樂丟到data資料夾中、或是直接拖曳進來
(以操作示範)
圖片來源:作者
(五)換成自己喜歡的樂曲
3. 替換程式中的音樂檔名
例如:
將原來的編碼:
song = minim.loadFile("marcus_kellis_theme.mp3", 2048);
改為:
song = minim.loadFile("beatloop.mp3", 2048);
(以操作示範)
圖片來源:作者
(五)換成自己喜歡的樂曲
4. 讓音樂持續播放(loop)
例如:
將原來的編碼:
song.play();
改為:
song.loop();
(以操作示範)
圖片來源:作者
(六)範例說明
圖片來源:作者
(七) 自由練習時間
運用Present輸出全螢幕作品
可以在Preference調整背景顏色
(以操作示範)
圖片來源:作者
(七) 自由練習時間
自由練習時間
試試看,
利用Processing語法
創作出屬於自己的動
態影音圖像吧!
圖片來源:作者
(八) 延伸應用
Madmapper 光雕投影軟體
https://madmapper.com/
相關作品說明
圖片來源:作者
(八) 延伸應用
P5.js
P5.js editor
圖片來源:作者