内容简介 本书将引领你进入编程艺术的世界。本书揭示了运用Processing创建高质量互动艺术作品的奥秘,你将感受到Processing的敏捷性和艺术性,内容覆盖绘图、响应互动、动画、视频、3D、物理计算等专题。精选的实例将激发读者的想象力和创造的乐趣,阅读和练习本书的案例即能快速进入互动艺术创作。本书语言简洁易懂,案例设计独特,所有代码均可在线下载,适合于专业编程人员和学习互动艺术的读者。 前 言 编程,即计算机程序设计,是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。也许有人认为编程课程只适合于理工类专业,对艺术设计类专业来讲似乎意义不大,实际上并非这样。程序设计技术的先驱者唐纳德·克努特认为,程序设计既是一门科学,也是一门艺术,这两方面可以彼此很好地相互补充。科学的方法一般是通过“逻辑的”、“系统的”、“非个人的”、“冷静的”、“理性的”这些词来表征的,而艺术的方法是通过“艺术的”、“创新的”、“博爱的”、“渴望的”、“非理性的”这些词来表征的。 2009年11月,英国伦敦V&A博物馆“数字设计感官展”展出了大量由计算机程序生成的互动艺术作品,展览打破了作品静态呈现的传统展示方式,颠覆了观众静观作品的观看惯性。计算机程序对艺术的介入引发了艺术家创作工具和思维方式的转变。研究如何编写程序、创造声音或图像的界面以实现代码与观众之间的交流互动,成为设计艺术界新的课题。美国排名前列的罗德岛设计学院聘请麻省理工媒体实验室ACG小组主任约翰·梅达担任校长,传统的艺术设计行业正面临着一场革命。编写程序不仅是程序员的专利,它也已成为数字艺术家的创作手段,以及艺术院校的必修课程。英国皇家艺术学院、耶鲁大学设计学院、加州大学媒体艺术专业、卡内基梅隆大学等院校都把编程作为教学课题。 大部分设计师都会使用商业软件(如 Photoshop、Illustrator、Flash)来从事创作,这些软件功能丰富、使用方便,可以实现预设的效果。但人们的创意和表现形式往往被企业所主导的制式化生产工具所限制。Processing的出现是艺术设计创作的一场革命,它是一种具有前瞻性的新兴计算机语言,用户主要面向计算机程序员和数字艺术家。艺术家可以运用Processing生成唯美的图形,为互动艺术作品编写程序,将抽象的数据呈现为视觉形象。当你进入到互动编程艺术的世界,就会发现这一切都是让人兴奋不已的。 由于文化和语言的差异,国内研究Processing的学术机构并不多见,中文网站和学术论坛等学习资源有限,也没有相关的中文版本的书籍。资料的缺乏在很大程度上降低了中国设计师学习Processing的积极性。鉴于以上现实,作者根据自身的教学实践编写了本书。本书可作为学习互动艺术编程的基础书籍,主要面向艺术院校数字媒体设计专业、交互设计专业,以及业界的设计师,等等。本书前两章主要介绍了Processing的背景、编程与互动艺术的关系,以及编程基础知识。接下来的章节对绘画、互动、动画、函数与对象、数组、图片与文字、视频与音频、3D与物理计算等方面进行了较为全面的论述,并结合了大量的实例与作品分析来启发读者的互动艺术思维。在国内,互动艺术和编程艺术都是新的研究领域,本书是在一个全新的领域中进行探索,在此过程中难免会存在不完善之处,希望得到相关专家和广大读者的批评指正! 在创意产业迅速发展的中国,我们有理由相信新一代的艺术家和设计师们不会只停留在软件应用的层次,他们会运用编程去创新、发展艺术与设计,并将民族文化与思想注入到作品中! 作者:谭亮 2011年5月于广州 作者简介 谭亮,2004年至今任教于广州美术学院新媒介艺术专业,致力于互动艺术、编程艺术教学与研究。2005年作品参加日本爱知世界博览会中国馆数字艺术项目。2007年赴德国柏林设计学院信息设计系交流,“城市突变”国际工作坊指导教师。2008年在英国文化协会主办的“香港48小时和合设计竞赛”中获得Best Design奖。2009年赴法国埃克斯?普罗旺斯艺术学院访问学习。
目录: 目 录 第1章 认识Processing 1 1.1 Processing是什么 2 1.2 Processing的诞生 3 1.2.1 MIT与约翰?梅达 3 1.2.2 Casey Reas和Ben Fry 6 1.3 Processing能做什么 8 1.3.1 数据视觉化 8 1.3.2 生成艺术 10 1.3.3 互动艺术 14 第2章 使用Processing 17 2.1 下载与安装 17 2.2 开发环境 18 2.2.1 开发环境界面 18 2.2.2 快捷按钮 20 2.3 语法结构 20 2.3.1 基本语句 21 2.3.2 代码编写流程 22 2.3.3 注释 22 2.3.4 表达式和陈述 23 2.3.5 控制台 24 2.4 变量 24 2.4.1 声明一个变量 25 2.4.2 变量的类型 26 2.4.3 系统变量 27 2.5 符号与条件式 28 2.5.1 布尔表达式 28 2.5.2 算术运算符 28 2.5.3 关系操作符 29 2.5.4 逻辑操作符 29 2.5.5 条件式——if、else和else if 33 本章作业 36 第3章 绘画 39 3.1 画布与坐标 39 3.1.1 像素与画布 39 3.1.2 直角坐标与计算机屏幕坐标 40 3.2 图形 41 3.2.1 点 41 3.2.2 直线 42 3.2.3 矩形 42 3.2.4 圆与圆弧形 43 3.2.5 三角形与四边形 45 3.2.6 贝塞尔曲线 46 3.2.7 自由图形 47 3.3 色彩 49 3.3.1 灰阶与透明度 50 3.3.2 RGB色彩 52 3.3.3 HSB色彩 53 3.4 绘画属性设定 55 3.4.1 填色与边框 55 3.4.2 图形的顺序 56 3.5 重复绘画 58 3.5.1 简单的重复 58 3.5.2 迭代法与while循环 59 3.5.3 for 循环 60 3.6 PDF输出与绘画实例 62 3.6.1 PDF格式输出 62 3.6.2 绘画实例 63 3.6.3 学生作品欣赏 64 本章作业 66 第4章 响应互动 67 4.1 鼠标响应 67 4.1.1 鼠标移动响应mouseX 和 mouseY 67 4.1.2 pmouseX和pmouseY 70 4.1.3 鼠标响应事件 72 4.2 键盘响应 75 4.2.1 按击键响应 75 4.2.2 特定按键响应 78 4.2.3 功能键响应 79 4.3 随机random 80 4.4 限制constrain 83 本章作业 84 第5章 动画 85 5.1 运动的产生 85 5.1.1 变量控制运动 85 5.1.2 条件句控制运动 86 5.1.3 加速与减速 87 5.2 随机运动 89 5.3 曲线轨迹运动 90 5.4 坐标转移、旋转与缩放 95 5.4.1 坐标转移 95 5.4.2 旋转运动 96 5.4.3 缩放运动 99 5.5 pushMatrix() 与 popMatrix() 100 5.6 时间控制 102 本章作业 103 第6章 函数与对象 105 6.1 函数 105 6.1.1 定义函数 105 6.1.2 调用函数 109 6.1.3 函数与循环 111 6.1.4 函数返回类型 114 6.2 类与对象 115 6.2.1 面向对象的程序设计 115 6.2.2 定义类 116 6.2.3 创建对象 119 6.2.4 构造器的引数 121 本章作业 124 第7章 数组 125 7.1 变量列数组 127 7.1.1 声明变量列数组 127 7.1.2 定义数组的长度 128 7.1.3 给数组赋值 128 7.2 变量列数组实例 130 7.3 对象的数组 134 本章作业 137 第8章 图片与文字 139 8.1 图片 139 8.1.1 显示图片 139 8.1.2 图片互动 143 8.1.3 图片色彩设置 144 8.2 文字 147 8.2.1 使用字体 147 8.2.2 字符串 148 本章作业 150 第9章 视频 151 9.1 播放视频文件 151 9.2 实时视频输入 155 9.3 视频互动特效 158 9.3.1 互动色彩调整 158 9.3.2 视频马赛克 159 9.3.3 色彩捕捉 161 9.3.4 版画效果 166 本章作业 169 第10章 Minim音频 171 10.1 播放音频 171 10.2 声音的视觉化 173 10.3 音频输入互动 179 本章作业 181 第11章 3D 183 11.1 3D简介 183 11.2 3D图形 184 11.3 3D空间旋转 185 11.4 3D互动 187 11.5 参考案例 190 本章作业 192 第12章 Arduino与物理计算 193 12.1 Arduino简介 193 12.2 Arduino与开关 195 12.3 Arduino与传感器 197 12.4 光敏传感器 200 本章作业 202 附录A 203 后记 205 参考书目 206
|