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

想用程式畫圖但不會寫程式?Processing 能幫你什麼

Processing (32-bit) 軟體圖示 Processing (32-bit) 3.2.4 (32-bit) 資料更新 2017-01-31 閱讀約 5 分鐘

寫程式這件事,最常卡住人的不是邏輯,而是「不知道寫出來會長什麼樣子」。你心裡想的是會動的圖、會變的形狀、按一下滑鼠就產生的視覺變化,但打開程式編輯器,面對的卻是一片空白,連從哪裡開始都不知道。尤其對畫畫、設計、做互動作品的人來說,程式語言像另一種外語,學了老半天還是不知道怎麼把它變成畫面。

一般人的做法是去學一門通用程式語言,但那些語言是為了處理資料、寫系統設計的,跟你想要的「畫出一個會動的圓」距離很遠。就算照著教學打,也常常卡在安裝環境、設定路徑這些跟創作無關的事情上。這類工具切入點是反過來的:先想好你要做什麼視覺作品,再用最少的語法把它做出來,而且打開就能看到畫布,寫一行就動一下,讓程式跟畫面直接對話。

01Processing 到底是做什麼用的?

它是一套開源的程式語言和開發環境,目標是讓沒有程式背景的視覺創作者也能寫程式。你可以在裡面寫簡單的指令,畫出 2D、3D 圖形,做動畫、互動作品,甚至輸出成 PDF。它把程式語法簡化,讓「畫一個圓」「讓它動起來」這種事變成幾行程式碼就能完成,而不是要你先學完一整本程式設計課本。

02完全沒寫過程式的人,學得會嗎?

它的設計出發點就是給初學者用的。語法比一般程式語言精簡,官方文件也寫得很清楚,還有大量範例可以參考。你不需要先懂變數、迴圈這些抽象概念,只要照著範例改數字,就能看到畫面變化,慢慢理解程式是怎麼控制視覺元素的。不過它畢竟還是程式語言,基本的邏輯概念還是要花時間熟悉。

03它能做出什麼樣的作品?

動態視覺、互動圖形、資料視覺化、動畫、數位藝術作品都可以。它內建 2D、3D 和 PDF 輸出功能,也有 OpenGL 加速,可以處理需要即時運算的圖形。超過 100 個擴充函式庫涵蓋影像處理、資料視覺化、互動設計等領域,等於你想要的功能大多有現成的工具可以接上去用。

04可以把我做的東西變成獨立的應用程式嗎?

可以。它允許你把寫好的草稿(sketch)匯出成可執行的檔案,拿去給別人執行,對方不需要安裝 Processing 就能跑。這對做互動裝置、展覽作品、或想發佈小工具給別人用的人來說很方便,不用擔心對方有沒有安裝開發環境。

05它支援 3D 圖形嗎?

支援。它內建 3D 圖形和動畫的函式庫,可以建立三維空間的物體、做旋轉、打光、貼材質等操作。不過要注意,複雜的 3D 動畫或模擬在效能上可能會有瓶頸,如果你的專案需要非常精細的 3D 渲染,可能要考慮其他更專門的 3D 工具。

06設計師或藝術家適合用嗎?

適合。它的官方定位就是給視覺藝術領域的人學習程式概念,設計師、藝術家、研究人員、業餘愛好者都在使用。它的介面很直覺,有程式編輯器、主控台和視覺輸出的畫布,編輯器還有語法標色、自動補齊和錯誤偵測,讓不習慣寫程式的人也能很快上手。

07我想做大型商業專案,用它合適嗎?

要謹慎評估。它常用於原型開發和實驗,但官方資料也提到它在大型專案的擴展性有限,複雜的動畫和模擬在效能上可能會有問題。如果你的目標是商業級的遊戲、高效能應用或大型系統,它可能不是最適合的選擇,可以考慮其他更專業的開發工具。

08它跟 Python 比起來,哪個比較適合我?

取決於你的目標。Python 是通用程式語言,用途廣泛,但它的視覺輸出需要另外安裝圖形函式庫,對初學者來說門檻較高。Processing 是專門為了視覺創作設計的,打開就有畫布,語法也更貼近繪圖需求。如果你主要想做視覺作品,Processing 的學習路徑比較直接;如果你還想寫其他類型的程式,Python 的通用性更高。

09我的電腦很舊,跑得動嗎?

它的系統需求很低,官方說法是在大多數現代電腦上都能順暢執行,包括資源有限的裝置。不過實際效能還是取決於你做的專案複雜度,簡單的 2D 圖形在舊電腦上沒問題,但複雜的 3D 動畫或大量即時運算就可能會卡。

10它跟 Arduino 有什麼不同?

rduino 是控制硬體的,寫的程式是讓微控制器去驅動感測器、馬達、燈泡這些實體元件。Processing 是純軟體,跑在電腦上,輸出的是螢幕上的視覺。兩者可以搭配使用,例如用 Arduino 讀取感測器數據,再傳給 Processing 做視覺化呈現,但如果你只想做螢幕上的作品,不需要碰硬體,Processing 就夠了。

下載與官方連結

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

processing-3.2.4-windows32.zip · 112 MB · 連結指向軟體原廠

版本紀錄

再看 5 筆

看完整版本清單

這一版改了什麼

What's new in this version:

THE PDE and THE EDITOR:
- Detect changes to 'hosts' file in case users modify/remove localhost.
- No sketch window would open after hitting Run if someone had monkeyed with their /etc/hosts file.
- Ctrl-J (for debugger) is inserting newline
- Spaces not handled correctly in when installing "processing-java" on macOS
- println(int(byte(245))) throwing error
- 'web colors' next to each other fail to parse in certain situations
- Pasting code from editor to empty editor produces Exception possible infinite loop on modified externally
- Report missing brace in correct tab, suppress other errors until fixed
- Improvements to sketch launching and stopping
- Syntax highlighting issues (fixed with #4761)
- Sketchbook window wasn't updating when sketches added, renamed, etc

CONTRIBUTION MANAGER:
- Set text style properly for Contribution Manager error message
- Added the remove filter feature (Akarshit)
- Several Contribution Manager fixes
- Add missing equals() and hashCode() to Contribution
- Contribution Manager does not show all libraries until filter cleared
- Mode, requiring update, appears in Updates tab but not in Modes tab

INTERNAL CHANGES:
- Only require reference.zip to be present for build
- Move the DEBUG flag into an external file or preferences.txt.
- Replace java.util.logging code with built-in logging.
- Split GUI and non-GUI portions of console for earlier startup.
- (Otherwise System.err/out not going to a file unless we have a GUI,
- which means we couldn't debug before the GUI shows up)
- Fix JRE download failure during ant build due to Oracle change

THE CORE:
- Write exec() documentation
- XML fixes for getChild() producing valid XML. Add xmlns to
- elements procured from getChild(), and making sure newline
- is added after XML header when formatting.
- Adding missing docs and keywords for TableRow
- PShape in Java2D wasn't respecting 'kind'
- Sketches still running in the background after closing

CLOSING BUGS IN OPENGL
- PShape array index out of bounds when using P3D
- Disable modelX/Y/Z() in P2D because they don't exist in 2D
- Fix typo in GLSL preprocessor
- Keep Windows timer resolution high for OpenGL sketches
- Prevents frame rate in OpenGL hovering around 30 instead of 60 [the jakubfx renderer]
- FX: Prevent matrix stack overflow
- FX: Reset transform to identity before drawing background
- FX: Implement mouse wheel event
- FX: Fix curveVertex drawing all curves together as one long curve
- FX: Add exception handler which reports exceptions from user code
- Unify mouse pressed/released events across renderers

NEW FEATURES:
- Add listPaths(), listFiles()
- Add increment() method that takes IntDict to merge another dictionary
- Calling this increment() since it doesn't make sense in practice for the other dictionary types, even though it's technically an add().
- Added Entry class for iterating StringDict, IntDict, FloatDict
- Added XML.print() method (prints with indent of 2)