
本书手把手地教读者利用Processing工具编程,并进行生成艺术的创作。本书分为两个部分,共8章。基础部分介绍了Java语言的基础知识、Processing的绘图方法及各种常见技巧;进阶部分重点介绍了几何向量、吸引子、离散动态系统、迭代分形4个专题,深入浅出地展示了数字化艺术的奥妙。本书适用于零基础的读者自学编程,可作为生成艺术爱好者的参考书,也可作为非计算机专业教材使用。
写在前面 这本书是为小朋友编写的,如果你不幸错过了这个年纪也不要气馁,因为我也是大学毕业才开始接触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日
基础部分 第1章 画布、画笔和颜色 002 1.1 第一个程序 002 1.2 画布与帧 007 1.3 颜色 013 第2章 变化多端的圆形 020 2.1 变量与循环 020 2.2 心 026 2.3 圆的魔术 032 第3章 弹!弹!弹! 040 3.1 弹球 040 3.2 布尔先生 046 3.3 好多弹球 053 第4章 弹!弹!弹! 060 4.1 彩色噪声 060 4.2 自定义方法 065 4.3 滤镜与点彩 069 4.4 图像重绘 077 进阶部分 第5章 PVector 083 5.1 类 083 5.2 线性代数 089 5.3 力 095 5.4 线性插值 100 第6章 飘 107 6.1 回旋 107 6.2 秩序与随机 112 6.3 奇怪吸引子 122 第7章 一石激起千层浪 131 7.1 二维数组 131 7.2 涟漪 137 7.3 化学反应 141 7.4 生命游戏 146 第8章 迭代分形 153 8.1 递归 153 8.2 多重画布 158 8.3 悲情朱利亚 165
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=TP417110