Structure Synth:使用强大的工具将您的 Linux 机器变成抽象艺术机器

作者:Emre Sevinc

我必须承认我不是一位艺术家,至少不是传统意义上的艺术家。我的背景、职业生涯和业余项目都与编程有关,即使有时我需要亲手处理一些交给我的设计,但我更愿意将原创和独一无二的美丽创作领域留给那些我钦佩并称之为“艺术家”或“平面设计师”的人。但有时实在难以抗拒动手的冲动,尤其当你的电脑看起来比以往任何时候都更有帮助时。

闪回:我记得当我第一次看到古老的 POV-Ray 产生的引人注目的图形时,我感到多么兴奋。那是在 20 世纪 90 年代中期,我甚至和数学系的朋友一起设法制作了一个 5 分钟的动画,其中包含抽象的形状和变换。虽然它没有获得奥斯卡提名,唉,但我们度过了人生中最快乐的时光,并在一次公开演出结束时也获得了热烈的掌声。对我来说,核心概念很简单:与尝试自由创作一些草图或直接使用为艺术家设计的工具相比,一种专门为描述图形而简化的、高级编程语言对于像我这样的极客来说更容易上手。

快进到 2011 年:几个月前,当我浏览 Ubuntu 软件中心时,我遇到一个名字引人注目的软件包。根据其简短描述,Structure Synth 是一个“用于创建 3D 结构的应用程序”。我必须承认,我的第一反应是“对我来说有点太抽象了!” 但没过多久,我又一次遇到了相同的软件,但这次它被用来为 ACM 通讯杂志设计一些非常有趣和漂亮的封面图形。回忆起美好的旧时光,我鼓起勇气探索这款软件,释放我内心的隐藏的计算艺术家,这一切都从通常的序言开始

$ sudo aptitude install structure-synth 
$ structure-synth

坦率地说,我没有想到如此简单直观的界面,一种图形化的 IDE,带有一个简单的示例脚本文件,已经准备好渲染

/*
A simple demonstration of Structure Synth.
*/
set maxdepth 400

R1
R2

rule R1 { 
 { x 1 rz 6 ry 6 s 0.99 } R1
 { s 2 } sphere
}

rule R2 {
 { x -1 rz 6 ry 6 s 0.99 } R2
 { s 2 } sphere
}

按下界面上的“播放”按钮(或按 F5 键)快速生成了一张图像,我发现对于初学者来说相当不错(抽象、漂亮,并让我想起了无限符号,这为 Structure Synth 的开发者赢得了额外的极客分数)。

在激动人心的开始之后,我决定更多地了解这款免费软件的瑰宝。根据其官方网站,“Structure Synth 是一款跨平台应用程序,用于通过指定设计语法来生成 3D 结构。即使是简单的系统也可能生成令人惊讶和复杂的结构。” 该系统使用 OpenGL 和 Qt 4 以 C++ 编程。它可以编译并在任何体面的 GNU/Linux 发行版上运行,如果您是 Ubuntu 或 Debian 用户,那么只需一个 apt-get 命令即可安装。

为了创建一些令人惊叹的图形,Structure Synth 需要您提供一个带有 .es 扩展名的输入文件,其中包括 Eisenstein 脚本,这是该应用程序的本地编程语言。如果您使用过任何现代编程语言,例如 Python、Perl、C、Java、C++、JavaScript、Lua 或 Lisp,并且“递归”这个词听起来不像来自外太空的生物的名字,那么学习 Eisenstein 脚本语言的基础知识不会超过几个小时。Structure Synth 的集成开发环境将通过语法着色代码编辑器、底部窗格中非常清晰的解释性消息(既报告正常进度,又在出现问题时提供清晰的错误消息)来帮助您。一旦您按下界面上的“播放”按钮(或转到主菜单 -> 渲染),右侧窗格将显示通过 Eisenstein 引擎运行您的 Eisenstein 脚本的图形结果。您可以使用鼠标旋转生成的图像,以及放大和缩小图像。如果您对结果感到满意,您可以右键单击图像(或访问主菜单 -> 渲染)以“另存为位图...” 我在此步骤中遇到的唯一烦恼是系统没有向我提供我可以使用的图像格式,并且在出现错误消息后我才了解到我可以选择 bmp、ico、jpeg、jpg、png、ppm、tif、tiff、xbm 和 xpm。

该系统的另一个优点是它允许您将使用 Eisenscript 创建的模型导出到功能强大的照片级真实感光线追踪系统,例如 POV-RaySunFlow。这非常重要,因为即使 Structure Synth 自带的光线追踪引擎对于草绘您的模型和交互式调整它们来说已经足够好且足够快,但当涉及到将代码渲染成高度逼真的图像时,您肯定需要更复杂和功能强大的光线追踪器。

我对 Structure Synth 好奇的一件事是它是否具有创建动画的功能,我再次看到它没有让我失望。它不仅让我可以创建动画,而且还让我可以使用我最喜欢的编程语言 JavaScript 来控制动画(有关更多详细信息和代码示例,请参阅 http://blog.hvidtfeldts.net/index.php/2010/11/scripting-in-structure- synth/)。

除了界面中的一些小故障,这些故障有时会让我无法编辑示例 .es 文件(在我渲染它们之后),以及我上面提到的“另存为位图...”功能的某种程度上不太直观的部分,我发现 Structure Synth 是探索使用简单编程概念(如递归和随机数)的奇妙图形创意的完美工具。在一位有创造力的程序员手中,这款独特的工具可以成为非常强大的数字画布。与所有自由软件一样,您也可以自由地修改系统的内部结构并增强 Eisenstein 脚本引擎。或者,创建一个 Python 系统,将您的 Python 代码转换为可以输入到 Structure Synth 并导出到 POV-Ray 的 Eisenstein 代码怎么样?创造力是游戏的名称。祝您抽象图形黑客愉快!

Emre Sevinç 目前担任软件开发人员和研究员。自 1994 年在伊斯坦布尔技术大学数学系首次接触 GNU/Linux 以来,他就一直参与其中。

加载 Disqus 评论