新書推薦:
《
从康德到黑格尔的发展:兼论宗教哲学(英国观念论名著译丛)
》
售價:NT$
275.0
《
突破不可能:用特工思维提升领导力
》
售價:NT$
352.0
《
王阳明大传:知行合一的心学智慧(精装典藏版)
》
售價:NT$
1010.0
《
失衡与重塑——百年变局下的中国与世界经济
》
售價:NT$
602.0
《
不被定义的年龄:积极年龄观让我们更快乐、健康、长寿
》
售價:NT$
352.0
《
南方谈话:邓小平在1992
》
售價:NT$
367.0
《
纷纭万端 : 近代中国的思想与社会
》
售價:NT$
500.0
《
中国古代文体形态研究(第四版)(中华当代学术著作辑要)
》
售價:NT$
765.0
|
編輯推薦: |
《Processing语言权威指南(第2版)》作者就是开源编程语言Processing的创作者,因此本书是学习Processing的权威教程。
|
內容簡介: |
本书作者就是开源编程语言Processing的创作者,因此本书是学习Processing的权威教程。本书介绍了可视化艺术中的计算机编程概念,对Processing做了非常详尽的阐述。学生、艺术家、设计师、建筑师、研究者,以及任何想通过编程实现绘画、动画和互动的人都可以使用它。本书的大部分章节是短小的单元,介绍了Processing的语法和基本概念(变量、函数、面向对象编程),涵盖了与软件相关的图像处理、绘制,给出了大量简短的原型程序,并配以相应的过程图像与注释。本书还有一些访谈文章,与动画制作、表演、产品原型等领域的几位创作者们讨论了与他们作品相关的话题。Processing软件以及书中的所有代码均可以在网站上下载,并可以在这些代码的基础上做进一步的开发。本书第1版出版于2013年,面世后受到了行业内广泛关注和好评。第2版在第1版的基础上,根据Processing语言的发展和应用环境的变化,进行了整合与提炼,让读者更有效率地学习Processing。
|
關於作者: |
Casey Reas:加州大学洛杉矶分校(UCLA)媒体艺术设计系教授,在MIT上学时,他与Ben Fry一起创造了Processing语言。Ben Fry:麻省理工学院媒体实验室博士,设计师,也是从事数据可视化的专家。
王学昭:英语和西班牙语翻译,主要从事翻译及翻译项目管理工作。刘端阳:莫比嗨客公司创始人兼CEO,国际资深创客。12岁入选中国科学技术大学少年班,获清华大学硕士学位、美国斯坦福大学博士学位。弓箭峰:开源爱好者,多年大数据和区块链从业经验,专注于数据众包策略研究、深度学习模型数据采集与标定方案咨询及优化。
|
目錄:
|
详细目录
1 Processing ........................... 1
软件 ..................................................... 1
软件素养 ............................................. 3
开放 ..................................................... 4
教育 ..................................................... 5
网络的力量 ......................................... 6
上下文 ................................................. 7
2 开始使用Processing ................... 9
下载与安装 ......................................... 9
环境 ..................................................... 9
导出 ................................................... 10
示例演练 ........................................... 11
编程即写作 ....................................... 16
注释 ................................................... 16
函数 ................................................... 17
表达式与语句 ................................... 17
大小写敏感 ....................................... 18
空格 ................................................... 18
控制台 ............................................... 19
参考 ................................................... 20
3 绘制 ........................................... 21
坐标 ................................................... 21
基本图形 ........................................... 23
曲线 ................................................... 27
绘图顺序 ........................................... 30
灰度值 ............................................... 31
绘图属性 ........................................... 33
绘图模式 ........................................... 34
4 颜色 ........................................... 37
用数字定义颜色 ............................... 38
合成 ................................................... 41
RGB 和HSB ..................................... 43
十六进制 ........................................... 46
5 变量 ........................................... 49
数据类型 ........................................... 49
变量 ................................................... 50
变量名 ............................................... 52
Processing 变量 ................................. 53
算法 ................................................... 54
留意数据类型 ................................... 56
数据转换 ........................................... 57
运算的优先级 ................................... 59
快捷方式 ........................................... 59
6 流程 ........................................... 63
循环 ................................................... 63
控制流程 ........................................... 67
关系表达式 ....................................... 69
条件语句 ........................................... 70
逻辑运算符 ....................................... 75
变量的作用域 ................................... 77
格式化代码块 ................................... 79
7 交互性 ....................................... 81
鼠标数据 ........................................... 82
鼠标按键 ........................................... 86
键盘数据 ........................................... 88
编码键 ............................................... 90
事件 ................................................... 91
鼠标事件 ........................................... 91
键盘事件 ........................................... 94
事件流 ............................................... 95
光标图标 ........................................... 96
8 重复 ........................................... 99
迭代 ................................................... 99
while 循环 ....................................... 100
for 循环 ............................................ 102
循环和draw .................................. 105
嵌套循环 ......................................... 107
9 综合一 ...................................... 111
画出软件的草图 ............................. 111
编程技术 ......................................... 112
示例 ................................................. 113
10 访谈:图像 ............................. 119
Une Esthtique Programme
(采访Manfred Mohr) ................... 121
RandomFont Beowolf
(采访Erik van Blokland) ............. 125
Fractal.Invaders, Substrate
(采访Jared Tarbell) ...................... 129
Perpetual Storytelling Apparatus
(采访Benjamin Maus) ................. 133
11 文本 ........................................137
字符 ................................................. 138
单词与句子 ..................................... 139
字符串是对象 ................................. 140
12 版式 ....................................... 143
绘制文本 ......................................... 144
加载媒体 ......................................... 145
矢量字体 ......................................... 146
像素字体 ......................................... 149
文字属性 ......................................... 150
键盘输入 ......................................... 152
排版与交互 ..................................... 153
13 图像 ....................................... 157
显示 ................................................. 158
图像颜色和透明度 ......................... 160
滤镜 ................................................. 163
蒙版 ................................................. 166
14 变换 ....................................... 169
平移 ................................................. 169
控制变换矩阵 ................................. 170
旋转 ................................................. 171
缩放 ................................................. 172
组合式变换 ..................................... 173
变换与交互 ..................................... 176
新坐标 ............................................. 177
15 顶点 ....................................... 179
顶点 ................................................. 179
点与线 ............................................. 181
几何形状 ......................................... 182
曲线 ................................................. 184
轮廓 ................................................. 187
16 3D 绘画 ................................. 191
3D 结构 ........................................... 191
摄像机 ............................................. 196
材质与灯光 ..................................... 197
纹理映射 ......................................... 202
17 图形 ........................................205
显示SVG 矢量图 ........................... 205
显示OBJ 格式的图形 .................... 208
变换 ................................................. 209
创建 ................................................. 210
修改 ................................................. 213
18 综合二 ....................................217
迭代 ................................................. 217
调试 ................................................. 218
示例 ................................................. 219
19 访谈:交互 .............................235
LORNA(采访Lynn Hershman Leeson) .... 237
路德维希凡贝多芬(Ludwig van Beethoven):第九交响曲(采访Robert Winter).................... 241
They Rule(采访Josh On) .......... 247
Eliss(采访Steph Thirion) .......... 251
20 计算 ........................................255
指数运算与开方 ............................. 255
正规化与映射 ................................. 256
简单曲线 ......................................... 259
数值约束 ......................................... 262
传输距离 ......................................... 264
缓动 .........
|
內容試閱:
|
序
在麻省理工学院的时候,我管理的全日制研究生工作室曾经吸引了一些极有天分的学生,在用计算机作为表达媒介时,他们往往需要面对一个基本的平衡问题:一方面,他们不希望程序代码成为设计和艺术表现的阻碍;另一方面,他们不得不编写一些复杂的代码探索新的视觉表达途径。这是无法回避的矛盾。结论其实很简单:二者兼顾。
能够将技术与艺术完美结合的复合型人才是学术体系中的一些异类。从传统意义上讲,大学培养专攻技术的学生或专攻艺术的学生,但从不将二者混在一起,以求兼具。在20 世纪90 年代,挑战这种所谓传统规范的复合型人才即便不来寻找我,我也会去寻找他们。把这些独特的人才聚集一堂便是我的初衷,这也让我结识了Casey Reas 和Ben Fry。
人们都说对一个教师最高的夸奖便是学生们青出于蓝而胜于蓝。这一点在我和他们一起工作后没多久便体会到了。后来Ben 和Casey 创造出了Processing,这时他们已经完全超越了我。凭借互联网的优势,他们显著提升了原来视觉实验的号召力,并吸引了数以千计的复合型人才参与。无论我周游到世界何处,总会有年轻的新媒体艺术家们在谈论Processing,并希望我向Casey 和Ben 传达他们的谢意。
目前,作为Kleiner Perkins Caufield & Byers 的设计合伙人,我能看到身处硅谷的许多兼具设计和工程的复合型人才对经济层面产生的影响。这些计算机设计师为诸如Flipboard、Pinterest、Square、AirBnB 和Nest 这些公司的产品带来了所需要的工匠技艺与感性触觉。即使不在其设计流程中直接使用Processing,这些人与他们的团队也都很感激Processing 的伙计们的工作。Casey 和Ben 吸纳了Daniel Shiffman这样的像素魔术师,曾经的二人组已经变身为兄弟连了。
所以在这里我要感谢你们Ben 和Casey。我代表所有在计算机艺术与设计领域追随Processing 的人们,祝愿你们能不懈地在一个个不眠之夜里,继续完善这座将艺术思维与计算机编程连接起来的桥梁。我祝愿你们可以持续不断地影响世界各地的画廊、艺术机构和初创企业。我们都盼望你们成为引领者,使运用计算机进行艺术设计变得简单,使我们不再被背后复杂的技术内容所困扰,盼望你们引领我们迈向这个目标。
John Maeda
设计合伙人
Kleiner Perkins Caufield & Byers
前言
本书写作的目的是介绍与视觉艺术语境相关的计算机编程概念。它面向的是理解计算机的读者他们对于通过编程创建互动的视觉作品很感兴趣,但是经验甚少。我们十分惊讶软件竟然拥有成为交流和表达媒介的潜力,同时希望此书能使更多的人看到软件的力量。
Processing 是10 余年来相关软件开发和教学经验的成果。书中阐述的想法已经在课堂、计算机实验室、艺术与设计学校、艺术机构等地方得到验证。作者在加利福尼亚大学洛杉矶分校(UCLA)、艾丽维尔交互设计学院(the Interaction Design Institute Ivrea)、哈佛大学及卡耐基梅隆大学教授过相关课程,并且在全球各地就此话题举办过无数次研讨课及讲座。本书的内容在学生和教育界同仁慷慨反馈的帮助下,不断改进。精简后的课程在此以书本的形式得到展现,期望将这份结果贡献给更大、更多样化的社区。
本书内容
本书讲解了四个方面的内容。大部分章节是一个个小单元,讨论软件中的特定元素以及它们与艺术设计的关系。这些单元介绍软件的语法及概念,诸如变量、函数以及面向对象编程。这些章节主要配以简短、原型化的实例,附上运行时的图像及解释。对于动画、性能及安装设计等高级专业设计项目,本书是以创作者访谈的形式展现的。附录提供了参考文献列表以及更多涉及技术领域话题的解释。相关媒介部分则提供了相关话题的补充材料。书中使用的术语在词汇表中定义。
本书提供了很多Processing 语言的示例程序,该语言是由作者开发的。Processing是一个免费、开源的编程语言及编程环境,供学生、艺术家、设计师、建筑师、研究者、爱好者们学习和制作原型,并进行产品开发。艺术家和设计师们不断完善Processing,使其可以替代同类的付费软件工具。这个项目将编程语言、开发环境以及教学方法论整合成为用于学习和研究的体系。该软件学习起来并不难,用户很容易从初学者进阶为高级程序员。Processing 语言也为用户未来的学习奠定了良好基础,因为其技术部分以及书中介绍的高级编程概念同样适用于其他编程语言,尤其是那些在艺术领域被频繁使用的编程语言。
书中的大部分示例都采用最简洁的视觉风格,但这并不表示Processing 只能制作出此类风格的作品,而是因为作者希望代码可以尽量精简。我们希望简单的代码示例可以激发读者在此基础上扩展自己独特的视觉语言。
如何阅读本书
如果想通过本书学习编程知识,仅靠阅读文字是远远不够的,必须运行、修改书中的代码,并与之交互。正如不进厨房学不会做菜,不亲自写代码是不可能学会编程的。许多示例只有在使用鼠标与键盘看到实际的运行结果后才能被充分理解。
Processing 软件以及书中所有的代码都可以下载并且供研究使用。Processing 软件可以从www.processing.orgdownload 上下载,而示例则可以从www.processing.orghandbook上获取。
代码、图表及图像可以辅助理解文本。由于本书面向的是关注视觉效果的人,因此我们假定你会像阅读文字一样仔细阅览图表和图像。字体以及视觉的转换是辅助阅读的。文本中的代码元素以等宽字体表示,以示差别。每段代码都以数字编号,方便检索。这些编号都在页面右侧每个示例的第一行。编号15-02指向15 顶点的第2 个示例。许多示例在修改变量的值后运行结果截然不同。如果在图片的左侧有数字,则表示该图片是使用这些数字生成的。
关于我们Casey
从孩童时代起我便接触计算机。我在家中的Apple IIe 上玩游戏,并用BASIC和LOGO 语言编写小程序。尽管花了很多年不断探索和测试,但我更喜欢画画,因此对计算机的兴趣逐渐褪去。20 世纪90 年代早期,我在辛辛那提大学(University of Cincinnati)学设计,在一年级时开始使用Adobe 公司的Photoshop 和Illustrator,但是直到三年级我才被允许在设计课上使用它们。开始的两年时间全部用于训练自己通过眼和手构造视觉结构和意义表达。我花了大量精力学习用铅笔绘制图标和字母,并用Plaka 这种亚光的黑颜料上色。这其实是很繁重的体力劳动。为了得到一张满意的图画,通常会耗费上百页的草图。后来我开始将精力放在印刷品上,如书本、杂志及信息图表。在这些作品中我使用了软件作为概念构思与最终的书面结果之间的过渡工具。
后来,我从制作印刷媒体转到了制作软件上。当多媒体CD-ROM 出现时,我使用这种媒介将我的兴趣与声音、视频、图像、信息设计相结合。随着20 世纪90 年代中期互联网的崛起,我开始专注于构建大型的、基于数据库集成的网站。我的工作对象从纸张迁移到屏幕,从静态的网格和信息层级进化为动态的、分辨率和结构皆可变的模块化系统。而我关注的重点亦从材料和静态构成的细节转变为运动与响应的细节,我专注于构建实时流程以生成表单、定义行为以及调解交互。为了在更高的层面追求这种兴趣,我意识到必须学会编程。在孩童时期用计算机娱乐,以及多年使用它们进行专业工作之后,我走向了一条新的道路。
1997 年,我遇到John Maeda,他向我介绍了麻省理工学院美学与运算小组的实验性软件作品。他的学生们通过组合传统艺术理念与计算机科学,创建了一种新的作品形式。当体验到这个作品时,我知道自己有新方向了。于是在1998 年我开始认真地学习计算机编程,第二年成了麻省理工学院的研究生。当我从软件的消费者转变成软件的生产者时,我的人生发生了变化。我拓展了自己的技术视野,将它与文化和艺术史联系起来。
当时作为麻省理工学院媒体实验室的研究生,我接触到一种结合多种研究领域技能的个人文化。人们的共同特点是计算机技能,同时各自拥有其他学科背景,包括建筑、艺术、数学、设计以及音乐。在那时,很少有软件能同时具备高级的编程语言与创建精美图像的能力,所以我的麻省理工学院的前辈和同仁们创建了自己的软件以满足其独特的需求。在这个过程中,一种独特的文化出现了,它将视觉文化的知识和计算机科学的知识融合在一起。因为想把这种信息带给技术领域以及学院之外的人,所以过去10 余年我一直致力于Processing 开发。我希望这本书能够作为催化剂,借此进一步提升艺术圈的软件素养。
关于我们Ben
我总是喜欢拆卸物件弄清楚它们的工作原理。一开始我喜欢拆解家里的电器,比较它们内部的组件,找出相同的组件。后来拆装完电话机和收音机,我开始把方向转移到软件上。计算机为我提供了无穷的未知空间,就好像那里面有无数等待拆卸的电话机。借由一本被描述为IBM BASIC by Microsoft的焦黄色活页本,父亲教会了我for 循环,我也逐渐开始自学编程大多数时候通过阅读他人的代码,不时加以修改以实现其他功能。经过一段时间的学习以后,对从头开始编写软件我也驾轻就熟了。
我对图形设计格外感兴趣,对字体、排版与样式设计也很好奇。我的一位亲戚开了一家设计公司,我觉得那里的工作简直是世界上最有趣的工作。后来我申请到了设计学校的录取通知书,想要学习用户界面设计,或者创建互动的多媒体CD-ROM,这可以说是同时满足我这两个兴趣的唯一途径。就读于设计学校对我意义重大,因为它教会了我思考和创造的方法,而这些方法在别处也适用,比如在我热爱的软件领域。
1997 年,也就是我本科阶段的最后一年,John
|
|