# 第12章【影音互動與即時資料應用】媒體 - 影像、聲音與影片的整合與拆解 12.1 使用影像 聲音 和影片整合進作品中 拼貼:pinterest 搜尋 "collage art" 【影音互動與即時資料應用】媒體 - 影像、聲音與影片的整合與拆解 - 影像素材包括變形 扭曲 分解跟使用 - 用影像素材來加上材質 - 讓各種動作綁上聲音 - 解構變成一個一個的像素,重製成抽象畫,做像素等級的扭曲或特效 !! 預先載入素材 - 把動作跟聲音連起來 - 解構圖片做成粒子跟像素 - 影片可以視為一個一個圖片的連續 Beact:一個音樂產生器 from Vibert https://vibertthio.com/portfolio/projects/beact/ Blend Mode, Transform, Nosie glitch 雜訊效果 Pixel sorting 把像素拿來做排序 Francois Vogel https://www.instagram.com/francois.vogel/ glitch lab app https://play.google.com/store/apps/details?id=com.ilixa.glitch&hl=en_US&gl=US&pli=1 取像素再換成圖形 12.2 如何載入圖片image() ``` let bmp function preload(){ // 重要 let bmp = loadImage(imgsrc) } ``` 把圖片畫出來 ``` imageMode(CENTER) // 決定繪圖的起點 ``` ``` function draw(){ image(bmp, x, y, width, height) } ``` 利用 for loop, push() 跟 pop() 畫出魚的位置變化 12.3 結合物件導向 改成說水母可以把魚嚇走@@ Class Fish() 代表魚 constructor 基本屬性 位置 速度 把剛剛的圖片加入粒子 this.img = fishImg 或利用 args 帶入 ``` imageMode(CENTER) ``` 建議放到 push() 跟 pop() 裡面 !! 注意 Function Scope 的問題 先 translate 再 scale 最好用 push 和 pop 先保護一下 速度的方向: ``` random2D() 隨機向量 ``` ``` let ang = this.vector.heading() // 回傳 vector 指向的角度(-PI and PI 之間) ``` !! 全局變數 global variable lerp 平滑化 ``` size = lerp(nowSize, targetSize) ``` 12.4 https://unsplash.com 很漂亮免版權的圖片 ``` var moonImg function preload(){ moonImg = loadImage(圖片路徑) } function draw(){ image(moonImg, 0, 0) } ``` 利用 for loop 取像素 ``` let span = 50 for(i=0;i<moonImg.width;i+=span){ for(o=0;o<moonImg.height;o+=span){ let c = moonImg.get(i, o) // 取出該位置的像素顏色 fill(c) ellipse(i, o, span) } } ``` 針對像素作扭曲 ``` push() translate(i, o) rotate(i/100) scale(random(2)) rect(0, 0 ,random(30), random(30)) pop() ``` 材質?Noise Texture ``` blendMode(MULTIPLY) // 忽略白色,留下深色 image(noiseImg, 0, 0, width, height) ``` !! 加一些畫布的操作,讓畫作更抽象 12.5 聲音的載入與操作 聲音的載入 先下載音檔音效 右邊側欄 files 上傳音檔 ![](https://i.imgur.com/kNcE0Ak.png) 讓半徑跟 frameCount 作連動 將畫面分區,點擊觸發不同音階音檔 ![](https://i.imgur.com/7kMDymC.png)