- 生成藝術:Processing視覺創意入門
- 華好
- 2529字
- 2021-10-15 18:53:26
寫在前面
這本書是為小朋友編寫的,如果你不幸錯過了這個年紀也不要氣餒,因為我也是大學畢業才開始接觸Processing編程的,本書也適合零基礎的讀者學習。這個時代發展太快,每5~10年就會發生軟件技術與思想的變革,但我相信用代碼來實踐美學的這個新潮流不會退去。嘗試用寥寥幾行代碼來生成無限變化的畫面,是一件可以消磨一整個下午的趣事。看完這本書之后,你或將洞見大自然的數理奧秘,成為一個愛寫代碼的設計師。
這是一個美好的時代,因為我們可以很方便地獲取古今中外人類的知識寶藏;這又是一個充滿挑戰的時代,因為我們在有限的時間內只能窺探知識寶藏的零散片段,很難體會其中隱含的精妙樂趣。例如,你在人生的4個階段可能接觸4種看似無關的知識:小學數學中的直角三角形、初中物理中斜面上力的分解;大學數學中的線性代數與向量幾何;群論表示的經典力學。如果你偶然發現它們其實都在說一件事情,你可能會豁然開朗,開始領悟這些知識寶藏中的奧妙。生成藝術通過計算機編程來處理邏輯、數學、物理等問題,可以幫助我們發現知識點之間的潛在聯系。本書的一個愿望,或者說是生成藝術的一個愿望,就是讓大家做一做“大腦體操”,從原本分散的知識點中發現引人入勝的線索。
人們對美術的理解差別很大,不過大家似乎懶得把自己的觀點拿出來辯一辯。我們會在博物館看到工藝大師的刺繡名畫精美絕倫;在景區路邊看到藝人的素描人像惟妙惟肖;在風光攝影作品上看到藝術家的詩意境悠遠。這些美術形式都值得我們討論,但我覺得最重要的還是大人(自覺或不自覺地)灌輸給小朋友的美術理念。達芬奇小時候反復練習畫雞蛋,這個故事的中心思想是:要持之以恒、精益求精;要畫得像!我想這就是傳統的美術理念吧。本書很少談及美術思想,而是讓讀者體會用代碼繪圖的樂趣,使讀者自然而然地形成自己的品味和素養。
美術和編程,在人們以往的印象中是互不相干的兩件事。不管是在中小學還是在大學,文科、理科、藝術都是分開教學的。美術課往往注重技藝的培養,看重結果的呈現,很少觸及靈魂的拷問:繪畫是為了表現眼前所見,還是為了表達內心世界?美有沒有科學規律可循?最近的十幾年,生成藝術(generative art)的出現讓代碼與圖形之間的關系空前緊密,人們能夠直觀地看到數理邏輯與美術作品的關聯;而語法結構、隨機過程、動態系統、復分析等科學領域為生成藝術提供了廣闊的游戲場地,不斷衍生出令人驚異的精彩作品。
每個接觸過生成藝術的人或許都對它有不同的理解。程序員往往認為生成藝術只不過是用代碼來“寫”圖形;藝術家則傾向于把它看成一種新媒體藝術;也有科學家認為它可以建構自然現象。我們不妨提出兩類問題:①基于某種計算機編程語言,如何高效地通過編寫代碼來生成圖像?②在自然科學的視角下,計算機程序究竟能干什么,不能干什么?對于計算機程序能夠生成復雜現象這件事,蘇黎世聯邦理工學院的Ludger Hovestadt教授曾比喻:計算機程序向大自然(nature)喊話,大自然的回音使程序運行的結果呈現出大自然的復雜性。著名的例子有朱利亞集、de Jong吸引子、生命游戲等,它們的共同特點是代碼很短,但可以生成無限復雜的細節。
如今,Processing等工具讓生成藝術變得十分容易上手,但二維或三維圖形的編程工具并不局限于Processing。20世紀60年代的Sketchpad系統就考慮了圖形在計算機上的輸入和輸出。我最早用AutoCAD的LISP語言來制作幾何圖形;之后,Flash開始流行,大家發現它內置的ActionScript腳本語言直觀又好用;后來,基于Java語言的Processing以干凈的代碼風格和流暢的運行效果逐漸成為生成藝術的首選工具;此外還有基于C++的openFrameworks、基于Javascript的p5.js等;最近幾年,實時數據獲取、開源互動社區等新思潮日益凸顯,涌現出了Observable等新平臺。
雖然編程工具不斷變遷,但生成藝術的基本原理如同自然科學一樣經久不衰,如笛卡兒坐標系、邏輯運算、顏色理論等。生成藝術可以幫助人們推敲美術中的一些感覺問題。例如,與藍色相反的顏色是什么?你可能一時陷入沉思。在紅綠藍三原色的理論下,(0, 0, 255)表示藍色,即藍色成分是滿格,紅與綠的成分為0。那么“相反”的概念用數學方法表示為:(255, 255, 255)-(0, 0, 255)=(255, 255, 0)。計算結果中只有滿格的紅色與綠色成分,即黃色。也許你覺得橙色才與藍色相反,這就引出了一系列問題:每個人的感受是否有差異?主觀感覺與顏色科學哪個更可靠?不難看出,我們在談論生成藝術時,往往不是在講編程,而是在討論美術和人。
不可否認的是,生成藝術的技術、方法、價值觀與之前的所有美術形式都截然不同。例如,程序生成的動畫可以是永不重復的,這與循環播放一段動畫的情形完全不同。我們傾向于用盡量短的代碼來生成盡量復雜的畫面,這種“潔癖”類似物理學家追求用最簡潔的數學模型表達復雜的理論。同時,有人嘗試用代碼生成不可預知的效果,這與傳統的美術理念大相徑庭。此外,很多人喜歡“抄襲”別人的作品,并將其改寫成自己的版本,這個操作稱為fork(分支)。很多人還不太習慣這種開源的思維,但未來的生成藝術會越來越多地在這種共享文化中成長。
我所在的東南大學建筑學院是融合“設計——編程”的前驅。原南京工學院(即現在的東南大學)衛兆驥老師早在20世紀80年代,就在Apple II、IBM PC上進行了建筑設計的自動化編程,自主研發了CAD系統;20多年后,李飚老師在原有CAD實驗室的基礎上建立了建筑運算與應用研究所,把復雜系統科學、建筑設計、計算機算法結合起來,逐漸形成“生成設計”學科。近年來,東南大學建筑學院為了讓低年級學生盡早接觸“設計——編碼”思想,每年舉行“生成藝術”工作營。學生們釋放出空前的創造力,創造了不少精彩的作品,其中一小部分作品也呈現在本書中。
如果沒有衛兆驥、李飚、Ludger Hovestadt等領路人的超前探索,東南大學或許就不會率先在建筑學院開設“生成藝術”實驗課程。現在我決定把生成藝術介紹給更年輕的興趣愛好者,這就是編寫本書的緣由。本書能夠順利出版,首先要感謝東南大學建筑學院對本書的大力支持。除此之外,還要感謝唐芃、顧大慶等老師的巨大努力,他們使“生成藝術”成為一項受歡迎的課題,逐漸改變了大家將技術與美術分開理解的現狀;感謝所有參加“生成藝術”工作營的同學,他們的創意讓人難忘;感謝運算所的研究生助教們,他們為工作營做了大量工作;劉晨晰為本書繪制了所有插畫,期待以后我們能有更多合作。最后,感謝我的妻子賈亭立對我的默默支持,讓我可以順利完成本書。
華好
2021年6月28日
- C#高級編程(第10版) C# 6 & .NET Core 1.0 (.NET開發經典名著)
- Android應用程序開發與典型案例
- Spring Cloud、Nginx高并發核心編程
- PostgreSQL 11從入門到精通(視頻教學版)
- Python算法從菜鳥到達人
- Android開發案例教程與項目實戰(在線實驗+在線自測)
- 微服務架構深度解析:原理、實踐與進階
- 區塊鏈技術與應用
- SQL Server實用教程(SQL Server 2008版)
- 用戶體驗可視化指南
- 開源項目成功之道
- Django 3.0入門與實踐
- 工業機器人離線編程
- Application Development with Parse using iOS SDK
- 從零學Java設計模式