Code Aesthetic Playground
A programmable visual grammar that turns cultural field material into readable, tunable, replayable generative code
把田野素材當成可運算的視覺語法:一張照片、一個地名、一條路徑,都被寫成一段可讀、可調參、可重播的程式。研究這條路線,是想確認「視覺」能否從一次性的成品,轉為一套隨資料生長、可版本控管的生成規則,並以本站首頁的粒子系統作為第一個可運作的證據。
研究問題
一次田野採集回來,手上通常是幾十張照片、一段市場錄音、一頁地名筆記。把它做成一張海報或一段動畫,問題不在做不做得出來,而在於:成品一旦交付就凍結了。改一個顏色要重開檔案,換一批素材幾乎等於重做,而當初「為什麼是這個佈局、這個色調」的判斷,沒有留在任何可追溯的地方。
於是我們把問題換一個問法:一件視覺作品,能不能不是一張圖,而是一段程式?也就是說,輸入是資料(照片、文字、路徑、關鍵詞),中間是一組可以被閱讀與調整的規則,輸出才是畫面。若成立,視覺就從「檔案」變成「可版本控管、可重播、可隨資料生長」的物件——這正是 creative coding 傳統一直在主張、而我們想在田野脈絡裡驗證的事。
方法與系統構想
我們把視覺拆成四類「素材 → 規則 → 畫面」的映射,各自獨立成一段短程式:
- 色彩萃取為動態色票:對一張田野照片做取樣與分群,得到主色,再讓色票隨時間或參數緩動,而非只印出一組固定色碼。
- 地名文字轉粒子:把地名的字形輪廓取樣為點集,讓文字以粒子形式聚散。
- 路徑轉 SVG 線條:把走訪動線或等高線抽象成可控的向量筆觸。
- 關鍵詞力導向圖:以田調關鍵詞為節點,共現關係為連結,用力導向佈局呈現地方語彙的結構。
技術上以 p5.js 與 GLSL 為主要書寫層:p5.js 負責取樣、資料結構與互動,片段著色器(fragment shader)負責大量點與像素的即時運算。每段程式都暴露少量參數(取樣密度、緩動係數、力場強度),讓調參本身成為創作介面,而不是把數值寫死。這套「可調參數的視覺語法」是本研究線的核心假設。
相關研究與參照
- Reas & Fry, 2007 — Processing: creative coding platform, MIT Press。本研究線的方法論源頭:視覺作品即程式、以繪製規則而非成品為單位,直接對應我們「視覺是一段可讀程式」的主張。
- Lupi, 2017 — Data Humanism manifesto。主張資料視覺化應保留脈絡、質地與主觀判斷,支持我們拒絕把田野素材壓平成通用圖表、而以逐案手工規則呈現的取向。
- Bostock et al., 2011 — D3: Data-Driven Documents, IEEE InfoVis。將資料直接綁定到視覺元素的範式,是我們設計「素材 → 規則 → 畫面」映射與力導向圖時的參照框架。
- Drucker, 2014 — Graphesis: Visual Forms of Knowledge Production, Harvard UP。提醒視覺形式本身即是一種知識生產,督促我們把「為什麼這樣呈現」的判斷寫進規則、而非藏在成品裡。
目前進度
status 為 prototype:已有一件可運作的作品作為證據——本站首頁的粒子系統「永恆之結」。它以 Path2D 即時取樣品牌 SVG 符號的輪廓,生成約 14,000 顆粒子的 point cloud,在瀏覽器端即時運算與重繪。這驗證了鏈條中最關鍵的一環:把一個既有的視覺符號拆解為可運算的點集,再由程式重新組織成畫面,在真實效能條件下是成立的。
侷限也很明確。目前只完成「地名文字轉粒子」這一類映射的技術骨架,其餘三類(動態色票、路徑轉線條、力導向圖)仍停留在草圖與零散測試,尚未整合成統一的參數介面。各段程式之間也還沒有共用的資料結構,無法讓同一批田野素材一次餵給多種視覺規則。
下一步
具體的下一階段目標有三:
一、以《艷世紀》一次實際田野(單一地點的照片與地名筆記)為輸入,完成「色彩萃取為動態色票」的可運作原型,能從照片直接產生會緩動的色票,並暴露至少兩個可調參數。
二、為四類映射定義一個共用的最小資料結構(素材、規則、參數三欄位),讓同一批素材可被不同視覺規則重複使用,消除目前各段程式各自為政的狀態。
三、把每件作品連同其參數存成可重播的紀錄,驗證「同一段程式、換一批田野資料即得新作品」是否真的成立——這是判斷本研究線能否從單件實驗走向系統的關鍵指標。