這是歷史版本頁面 — 看 Processing (64-bit) 最新版本

不會寫程式也想做視覺作品?Processing 能幫你什麼

Processing (64-bit) 軟體圖示 Processing (64-bit) 3.2 (64-bit) 資料更新 2016-08-17 閱讀約 8 分鐘

你大概遇過這種時刻:腦子裡有一個畫面——流動的線條、會變化的色彩、隨著滑鼠動的圖形——但你打開程式編輯器,看到一片空白,不知道從哪裡開始。你聽過「寫程式」可以做出這些東西,可是那些語法、括號、分號,看起來像另一種語言,還沒開始就覺得自己做不到。或者你其實會一點程式,但每次想做出「看得見」的東西,都得先搞懂視窗、繪圖函式庫、事件處理,光設定環境就耗掉半天力氣,原本的靈感早就涼了。

一般人遇到這種狀況,直覺是去找教學影片或買書來啃。但傳統的程式教學往往從「計算機概論」開始,講變數、講迴圈、講陣列,跟你真正想做的「畫出一個會動的東西」距離很遠。另一條路是直接用現成的繪圖軟體,但那些工具做出來的是靜態圖片,不是互動作品。這中間其實缺了一種東西:一個讓你把「想法」直接變成「視覺」的環境,不用先懂一堆底層原理,而是用簡單的指令就能在畫布上畫出東西、讓它動起來。這就是這類「創意程式設計」工具切入的點——把程式語言和繪圖畫布綁在一起,讓你寫的第一行程式就看得見結果。

01Processing 到底是做什麼用的?

它是一套開放原始碼的程式語言加上整合開發環境,主要給視覺藝術、設計和創意程式設計使用。你可以把它想成一個「程式塗鴉本」——打開之後有一個編輯器、一個訊息列、還有一個顯示圖形的畫布。你寫的每一行程式碼,幾乎立刻就能在畫布上看到對應的圖形或動畫,適合用來做互動圖形、資料視覺化、動畫和數位藝術的原型。

02完全沒寫過程式的人,用這套軟體學得起來嗎?

它的語法設計得比一般程式語言簡化,官方文件也說目標是讓幾乎沒有程式經驗的人也能上手。你不需要先懂「物件導向」或「資料結構」,只要會用幾個基本指令——例如畫一條線、設定背景顏色、讀取滑鼠位置——就能開始做出會動的東西。內建編輯器有語法標色、自動補齊和錯誤偵測,寫錯的地方會提示,對初學者來說門檻相對低。

03用它可以做出什麼樣的作品?

常見的輸出有幾類:2D 和 3D 的互動圖形、動畫、PDF 輸出,以及透過 OpenGL 加速的立體場景。官方提到有超過一百個擴充函式庫,涵蓋影像處理、資料視覺化、互動設計等領域。實際應用上,有人做 generative art(生成藝術)、有人做互動裝置、有人把資料畫成圖表,也有人用它做教學用的模擬。具體能做到什麼程度,取決於你願意花多少時間熟悉它的函式庫。

04它寫出來的東西可以變成獨立的應用程式嗎?

可以。官方問答明確說,你可以把寫好的 sketch(草稿)匯出成可執行的檔案,拿去別台電腦上執行,不需要安裝 Processing。這表示你做完一個互動作品,可以包裝起來給別人用,或放到展覽現場的電腦上跑。不過匯出後的執行檔大小和效能,會跟你的程式複雜度有關,這點要自己實測看看。

05它支援 3D 圖形嗎?

支援。它內建 3D 繪圖的函式庫,可以建立 3D 圖形和動畫,也有 OpenGL 整合來加速 2D 和 3D 的渲染。如果你之前用過其他 3D 工具,會發現它的 3D 指令相對單純,適合做概念驗證或互動原型。但要注意,官方資料也提到,複雜的動畫和模擬在效能上可能會有瓶頸,所以如果是重量級的 3D 專案,它不一定是最佳選擇。

06我是平面設計師,只會用 Illustrator 那類工具,這套適合我嗎?

如果你平常的工作是靜態視覺,Processing 的切入點不太一樣——它不是拿來取代繪圖軟體,而是讓你能用「程式」的方式產生圖形。這對擅長視覺但不會寫程式的人來說,確實是一條進入互動和生成藝術的路。它的社群裡有很多設計師和藝術家,教學資源和範例很多,你可以從改別人的範例開始,慢慢理解程式怎麼控制圖形。但如果你要的只是快速產出靜態海報,它不會比 Illustrator 快。

07我想拿它做商業或專業專案,可行嗎?

官方說法是可以,特別是資料視覺化、數位藝術和互動裝置這幾個領域。很多藝術家和設計師用它做原型,甚至直接用在展覽或商業案子上。不過要注意,它本質上還是偏向原型和實驗,官方也承認在大型專案的擴充性有限。如果你的專案需要複雜的軟體架構、多人協作或高效能運算,可能得考慮其他更完整的開發環境,或把 Processing 寫的東西當作前端展示,後端另外處理。

08它跟 Python 或 Arduino 比起來,差在哪裡?

這幾個工具的定位不同。Python 是通用程式語言,能做的事很多,但沒有內建視覺畫布,你要另外裝繪圖函式庫;Arduino 是給硬體開發用的,寫的程式控制的是實體電路板,不是螢幕上的圖形。Processing 的強項是「程式碼直接對應視覺輸出」,你不需要先架設環境就能畫圖。如果你主要想做螢幕上的互動視覺,Processing 的學習路徑比較直接;如果你要的是資料分析或控制硬體,那 Python 或 Arduino 才對口。

09它的介面只有英文,不會英文會不會很難用?

介面語系確實只有英文,這點要先有心理準備。不過它的介面很簡單,主要就是編輯器、訊息列和畫布三個區域,按鈕不多,就算英文不好,看圖示和選單位置也能猜個七八成。真正會卡住的是看官方文件和範例註解,那些都是英文。如果你英文閱讀有障礙,可以找中文的教學書或線上課程,中文社群有不少人寫過入門教材,但官方文件還是以英文為主。

10我的電腦效能普通,跑得動嗎?

官方說系統需求很低,大多數現代電腦都能順暢執行,包括資源有限的機器。因為它本質上是一個編輯器加上繪圖視窗,啟動和基本繪圖都不太吃資源。但這是指「簡單的程式」——如果你寫了很複雜的動畫、用了大量粒子或 3D 場景,效能就會開始下降。官方資料也提到,複雜動畫和模擬可能會有效能問題,所以如果你的專案很吃重,建議先在自己的電腦上測試看看。

11它跟 p5.js 或 openFrameworks 有什麼關係?

這幾個是「同家族」的工具。p5.js 是受到 Processing 啟發的 JavaScript 函式庫,跑在瀏覽器裡,做出來的東西可以放上網頁;openFrameworks 是 C++ 寫的創意程式設計工具包,效能更好但學習門檻更高。Processing 本身是 Java 語法,跑在桌面應用程式。如果你之後想把作品放到網路上,可以學 p5.js;如果需要高效能互動裝置,可以往 openFrameworks 走。Processing 比較適合當起點,因為語法簡單、資料多。

12這套軟體還在持續更新嗎?

根據收錄的版本紀錄,它從 2016 年開始陸續有版本釋出,最近一年內有 4 次更新,近兩年有 8 次,看起來是持續在維護的專案。官方也提到社群很活躍,教學資源和範例很多。不過要注意,它畢竟是開放原始碼專案,更新節奏不像商業軟體那麼固定,如果你需要某個新功能,可能要等社群釋出,或自己找替代方案。目前看起來不是那種放著不管的軟體。

下載與官方連結

前往官方網站 下載 Processing (64-bit)

processing-3.2-windows64.zip · 115 MB · 連結指向軟體原廠

版本紀錄

再看 5 筆

看完整版本清單

這一版改了什麼

What's new in this version:

- This release includes a handful of fixes to deal with startup bugs, plus several internal changes for how Modes are implemented.
- For those semantic versioning enthusiasts keeping track at home, the version has been bumped from 3.1.x to 3.2.x to denote the internal API changes.

Bug Fixes:
- Processing .jar files in CLASSPATH can cause startup crash
- Remove java.ext.dirs on startup to avoid conflicts and startup errors
- Add 2016 to the About screen.
- Write preferences.txt using a temporary file (and save the previous version as preferences.old)
- Some Table cleanup based on other CSV parsing work
- Can't render PGraphics object using image() within a PDF

Contributed Fixes:
- Use HTML to print (a contributed fix for a handful of printing issues)
- NullPointerException in SketchCode.getDocumentText()
- Error checker now adds 'public' to all default access methods
- Fix resizing targets for async save
- Make loadStrings() and loadJSONObject/loadJSONArray() error msgs consistent

Changes:
- Implement template sketches
- PApplet.main(Blah.class) now works (for easy refactoring)
- Rewrite Util.listFiles() because it wasn't working properly
- Add printStackTrace() method in PApplet that can be overridden

Depeche Modes:
- Add template support for Modes
- Added getSketchbookTemplatesFolder() to Base
- Move general PDE code out of JavaMode and into general base classes
- Change default PdeInputHandler constructor slightly (added another copy so that older Modes will still work properly)
- Change PdeKeywords to PdeTokenMarker (please notify us if this breaks anything)
- Added Mode.requireExampleCompatibility() so that Modes can specify whether example packages should specifically mention their Mode in order to be visible when that Mode is in use.
- Mode.getTokenMarker(SketchCode code) passes through to no arg version if not overridden.

Input method work from Tsuyoshi Fukuda (tyfkda):
- Enable input method support by default on Japanese/Korean/Chinese systems
- Set text color for InputMethod
- Set sketch as modified when any character committed using input method
- Insert characters by InputMethod at one time
- Insert string when it is committed
- Simplify conditional branch