【任远】生成设计-基于算法的设计方法

2,230 阅读8分钟
原文链接: mp.weixin.qq.com

查看图片


编辑 | 邹磊

生成设计是什么?应用生成设计我们可以做什么事情?那么当你看了任远老师这篇关于生成设计的文章后你一定会得到启发和认识!



1.生成设计是什么?


生成设计是一种设计方法。


通常的设计方法流程是:Idea-设计草图-编程实现,而生成设计方法是:Idea-定义规则-编程生成。它们的核心区别在于传统设计方法在草图阶段是全局控制模式,也就是设计草图呈现的形象基本等于最终实现形象,而生成设计方法在定义规则的阶段,只是产生一种模态。所谓模态就是形式的内在规则,有了模态的想法,接着用逻辑语言概括它的规则,再用程序建立这些规则,通过不断调节模态函数影响变量,最终生成满意的形式。


生成设计目前已经在很多设计中被应用,例如建筑(水立方外立面)、电影(模拟自然特效)、标识系统(MIT前LOGO)等。从生成设计的原理可以看出,影响模态最终形式的因素是输入变量和规则函数,所以创作的生成图形是否独一无二,取决于输入的变量和规则模型是否独一无二。如果设计的模态和输入的规则是普遍存在,那么得到的形式也是普遍存在的,所以在利用生成设计方法做标识类型的设计时应当尽量去选择独特的模态和输入变量。


2.生成设计在可视化中的应用


举一个大家熟悉的例子,就是经典数据可视化力导向图。

查看图片


力导向图它主要用来可视化“关系数据”,每个节点代表一个个体,有关系的节点会用直线连接起来。如果节点数量庞大,关系复杂,你用传统的设计方法,在概念草图阶段就会画晕了,因为你不能按照线性的方式一次画出所有不重叠的点和尽量不交叉的线。这时候就用到了生成设计方法。


分析需求“节点不重叠,线条少交叉”,这是我们想象的形式模态,于是可以根据模态建立规则。建立规则需要你有一些数学和科学的知识功底。这里的力导向用的是动力学方法,也就是让每个点之间产生排斥力,可以利用万有引力逆向建立公式,另外有连线的用胡克弹性定律来建立,让它们产生吸引力,这样就可以保证在节点不重叠的情况下还能保证有关系的节点相互连接,而且交叉很少。在建立好规则后,代入合理的参数,这里可以是万有引力的大G和胡克定律的k,最后把关系数据带入规则生成力导向图。这是利用生成设计方法非常经典的一个案例,大家可以去试试力导向图,感受下它的原理。


3.自然界的模态和规则


在复杂性理论发展起来以后,有许多科学家发现了以前很多自然界中无法解释的模态规则,例如树分形规律、鱼群自组织规律、蚂群寻食方式、遗传规律、神经网络等。这些模态都是基于某种内在规则在宏观上各种形式表现的组合,例如鸟群可以设置它每只鸟的视野范围半径来影响它最终的模态,半径大宏观上会很松散,半径小宏观上会很紧凑。生成设计师和艺术家也常常组合使用这些模态规则来进行艺术创作。

4.生成设计的美


每个人追求的美都不一样,况且美是什么?非要说个所以然,我只能说我在生成设计中追求的是混沌与秩序的平衡美,介于混乱无章和刻板规则之间。就好比生活中一样,每天的生活太过于重复会有些刻板,每天都追求变化又过于混乱,介于两者之间会很自然,这是我个人对于美的追求。

5.政治哲学与生成设计


“假设把政治哲学套入生成设计里,政治哲学就是研究算法和规则,而在政治哲学指导下建立的国家,国家的体制、文化、道德、法律形成的整个社会现象就是生成设计,整个社会规则制约不了每个人的一举一动,所以每个个体会产生自组织行为,这就是自组织系统。如果改变国家初始规则很可能会引起社会大动荡,这就是混沌理论。大的社会中有小的社会,小的社会中又有小社会…这就是分形,人们在社会实践的时候,不能过于循规蹈矩,也不能过于追求变化,这就是混沌与秩序的平衡,人类不断的探索真正的‘理想国’,从而不断的革命,这就是迭代和演化。”


以上内容都是目前自己对生成设计的一些理解,有不严谨和错误的地方,还望大家多多包涵!




查看图片


以下是最近半年在国内推广创意编程举办的一系列活动,每次活动海报中的图形都使用了生成设计的方法制作,编程软件使用的是Processing,排版调色使用了AIPS


查看图片查看图片


用Processing编程,基于德劳内三角形分割算法对图像进行分割操作,可以手动添加节点。



查看图片

查看图片


用Processing编程,基于德劳内三角形分割算法对图像进行分割,最终效果也是我们常说的Low Polygon。



查看图片


对字体进行粒子化,然后进行水墨流淌模拟


查看图片

查看图片


用Processing编程,对Box进行分形分割,并且设置分隔的概率。



查看图片

查看图片


用Processing编程,建立张力模型,再对由张力构成的网格进行重力影响。


查看图片

查看图片


用Processing编程,对图像进行轮廓提取,再对提取后的取轮廓线进行曲线拟合。


查看图片


对图像进行点化,然后设置连线规则



查看图片

查看图片


用Processing编程,对字体轮廓进行随机演变,并且把每次的演变进行叠加。


查看图片


创建粒子系统,对粒子设置连线规则



查看图片

查看图片


从OF COURSE公共号把历史消息的html文件找出来,存成txt文件。


查看图片


用正则表达式把日期时间和封面图片链接地址提取出来。


查看图片


利用数据在正交透视图中生成Box,每个Box都是一篇文章,Box上方是文章的发布时间,通过键盘控制让所有的Box拼成一个“OF”字样。




这些海报只能体现生成设计的冰山一角,它在其他领域还有很多的应用,之后有机会再和大家分享。


以上海报中的图形都是使用Processing编程生成,下面是一个Processing入门小教程,用Processing制作一个Processing动态Logo,感兴趣的朋友可以到官方下载软件学习。


查看图片


下面的链接是具体思路和源代码:

http://yuanren.cc/processing-icon/




查看图片

任远


他是设计师兼开发者,从2007年到现在一直从事创意编程,热衷于抽象艺术、生成艺术、声音可视化、数据可视化、计算机图形学、人工智能、复杂性理论等领域的探索和研究。先后在众多大学进行讲座。现任财新数据可视化实验室执行总监,同时也是《Processing互动编程》作者,creativecoding.cn创意编程网站创始人。

yuanren.cc

creativecoding.cn

yuanren.zcool.com.cn



查看图片



关于OF COURSE OF COURSE是艺术,媒体和科技的交叉点。创立于美国纽约,由最优秀的互动艺术家,骇客,计算机诗人和数字视听专家组成。我们通过工作坊的形式,在全世界不断传播用代码驱动艺术的理念。从纽约到上海,我们带着对40年科技发展的情感, 不断探索编程艺术的思想性,新形式,和哲学,还犹豫什么? 让我们一起进入艺术,媒体和科技的交叉点吧!


查看图片