分类:生成艺术挑战赛

生成艺术竞赛作品 | 茱莉亚

作者: Trousers pocket

完整版作品请访问链接:http://cailven.imdevsh.com/demo/generatArt/

作品介绍:

“谁不知道熵概念就不能被认为是科学上的文化人,将来谁不知道分形概念,也不能称为有知识”——John Archibald Wheeler

你想和上帝进行沟通吗?你知道宇宙中如果存在另一个高等文明,人类会用什么方法来和他们彼此验证彼此的存在呢?

答案就是——数学

早在两千年前,人类就出现了“拜数教”。毕达哥拉斯学派把世间万物都用整数进行了解释,唯独没有考虑到所谓的无理数——无限不循环小数的存在,因而直接引发了第一次数学危机。再后来,人类又发现了虚数和极限,最终把我们所理解中的世界用抽象的架构彻底解释了一遍。

NASA最高成就奖获得者卡尔萨根曾在其小说《接触》里描写过这样的场景:造物主把宇宙的秘密隐藏在了π的第十一位小数之后。(听说11位起进行微分运算求导数构成的集合会重新变成一个圆形。)

在本次OF COURSE主办的生成艺术竞赛中,来自VML的张润秋从无理数着手,用代码创作了作品《茱莉亚》

作为一名视觉艺术程序员,曾经他理解中世界的本源是“随机”-Random。但随着他对于数学领域的继续学习,发现这并不确切。在大自然中,事物并不是真正随机的,而是符合一定规律的变化,这就是混沌理论(chaos),熵是其中的一部分。

在数学中,熵这个曾经的热力学单位变成了一个计量单位,用来表达事物之间的“混乱值”——这种重复带有自相似性但又符合一定规律的变化。我们都知道,把整数不停整除,可以得到分数,而分数与整数间依然保持着一定的自相似性。分形几何作为一门研究不规则与相似性的数学学科在1973年被著名学者Mandelbrot提出,从而揭示了宇宙造物的秘密。

而法国数学家加斯顿·朱利亚(Gaston Julia)百尺竿头,更进一步,他依分形理论,在复平面上进行点的集合:

对于固定的复数c,取某一z值(如z = z0),可以得到序列

这一序列可能反散于无穷大或始终处于某一范围之内并收敛于某一值。我们将使其不扩散的z值的集合称为朱利亚集合,也是本次作品的灵感来源。

作品设想:

用代码进行3D建模,在计算机图形学中被称作过程化建模(procedurals Modeling),而在ray-tracing光线追踪理论下,它能基于voxel体素进行过程化建模从而实现更真实的物理光照渲染(Physically Based Rendering)。结合分形公式,我们很容易就能构建出3D环境下的分形图案。

除此之外,基于webGL下的引擎three.js具备用户可定制着色器功能。在shader编写中,利用全局片元着色器,可以部署光线追踪环境。

在上面代码的基础上,我们可以搭建基于光线追踪的距离场(distance field),从而运用数学公式进行体素建模。而建立4D环境变换下的Julia sets则需要我们利用公式Z=Z^2+C进行递归,因此每个维度的公式分别为:

但我们前面也说过,朱利亚集只有Z轴是聚拢的,其余两轴是扩散的,在扩散几何的递归中,分形图形是无法形成的。因此,我们通过Zn = Xn + i·Yn + j·Zn and C = a + i·b + j·c.来构建图案,并确立面的方向法线。

因此,分形茱莉亚集合的三维算法的核心代码如下:

交互方式:

Web互联让人人都能上网,移动微信让人人都能看到艺术。这个作品交互方式通过H5这个途径进行控制,在H5中,用户可以利用手机的陀螺仪进行交互体验,达到控制分形参数的变化以及视角观察的变化。

手机的陀螺仪具备 alpha,beta,gamer三个值。这三个值本身是通过欧拉角的数学方式进行定义的。(也可通过Mouse或者Touch事件进行交互)。

创作思路分解.作者说:

作为一名视觉艺术程序员,每天的主要工作就是在不停书写逻辑控制代码。在程序逻辑运算中,有一个很常用的算法叫做“递归”(自调用函数)。在递归中,我们给出一个变化规则和一个停止条件,并让函数自己调用自己,从而让程序自动运行,这就和分形世界的构成原理是一样的,即在规律中寻求运动的变化。我们通过代码让画面自动生成一个随机并附有艺术感的作品离不开递归这种算法。

计算机给了我们无限的创作灵感和创作方法用来实现生成艺术。如果数学真是宇宙的秘密,我们何不把秘密展现出它本应有的面貌呢?