Креативное программирование что это

Креативное программирование

Что такое креативное программирование?

Информатика и смежные компьютерные области долгое время представлялись молодежи неинтересными и незначимыми, акцентируясь на технических деталях, а не на творческом потенциале. Креативное программирование поддерживает развитие программирования с помощью креативности, воображения и интереса.

Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

Креативное программирование расширяет возможности.

Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

Создание компьютерных артефактов готовит молодежь к карьере ученого в компьютерной области или программиста. Это поддерживает развитие компьютерного мышления у молодежи – личности, которые могут составлять базовые понятия программирования, осуществить и применить в разных аспектах своей жизни, дисциплинах и контекстах.

Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

Что такое скретч?

С помощью Скретч можно создавать широкий спектр интерактивных медиа проектов: анимацию, истории, игры и многоедругое – и делиться этими проектами с другими в онлайн сообществе. С момента запуска Скретч, в мае 2007 года, сотни тысяч людей по всему миру уже создали и поделились более чем шестью миллионами проектов.

Мы предлагаем курсы «Креативное программирование». Желающие узнать о курсах поподробнее и записаться на них пройдите по ссылке Курсы начального опыта креативного программирования.

Источник

Креативное программирование: openFrameworks — установка и пример визуализации музыки

Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

Когда вы последний раз программировали на C++?

Может быть это ваша каждодневная работа, а мой последний (до вчерашнего дня) проект на С++ был в далеком 2000 году — дипломный проект на базе Visual Studio 4.2 (хорошая, кстати, система была), и с тех пор перешёл в веб-разработку — скриптовые языки.

А начиналось всё так — после очередного прослушивания музыки от одного композитора из Самары, я подумал — было бы интересно попробовать сделать визуализацию музыки, и обратился к Денису Перевалову (кто не первый год занимается созданием разнообразных интерактивных арт/перформанс систем) — он мне ответил, что это делается без проблем на базе openFrameworks и что в примерах к его книге (а он автор книги по openFrameworks), есть реализация такой задачи.

То есть мне нужно было всего лишь — установить фреймворк, доработать и собрать пример на С++… Об этом процессе — установке, настройки, и кратком описании openFrameworks и будет эта статья.

openFrameworks — это система с помощью которой можно запрограммировать интерактивное мультимедийное приложение, то есть арт, перформансы и т.п., она бесплатная, открытая и кроссплатформенная система (linux, mac, win), и так же есть версии для ARM (к примеру для RPi), и сборки для iPhone и Android.

Кстати на КДПВ — одна из инсталляций на базе openFrameworks (Семь Видеогидов. выставлено на ВДНХ в экспозиции Политехнического музея. Москва, 2014).

Что же такое openFrameworks? Это набор модулей — для интеграции с Arduino, с кинектом, с системой распознавания образов OpenCV, рисование 3д графики, работа со звуком, камерами и т.п. с помощью которых можно сделать интерактивное приложение. И всё это на базе C++.

В поле моего зрения openFrameworks попала, когда я вышел на роботизированные инсталляции созданные с её помощью.

1. Настройка openFrameworks

Установка openFrameworks

Согласно этой страничке download я выбрал версию openFrameworks, для моей ОС и для IDE на которой я планировал работать.

Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

В моем случае win и code::blocks: скачиваем архив of_v0.8.4_win_cb_release.zip

Распаковываем, архив содержит следующие папки:
* addons
* apps
* docs
* examples
* export
* libs
* other
* projectGenerator
* scripts

Это C++ библиотеки openFrameworks, примеры, аддоны и т.п.

Для того чтобы создавать openFrameworks приложение, лучше использовать IDE среду.

Установка IDE CodeBlocks

В качестве IDE, я решил выбрать code::blocks (visual studio всё таки великовата будет для меня сейчас)

CodeBlocks — это бесплатная и открытая IDE, созданная на базе кроссплатформенной GUI библиотеки wxWidgets. Согласно этой странице openframeworks.cc/setup/codeblocks скачиваю IDE CodeBlocks. Версия Release 12.11 Отсюда. Эта сборка идёт вместе с MinGW — открытой средой разработки под win платформу.

Вот так выглядит IDE CodeBlocks
Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

Копирование библиотек openFrameworks для CodeBlocks компилятора

Важный пункт — для того чтобы из IDE CodeBlocks, успешно собирались openFrameworks проекты, необходимо скопировать дополнительные файлы в MinGW.

Распаковываем во временной папке, и копируем в соответствующие папки в установленном CodeBlocks, согласно этой инструкции:

Add the contents of the folder «add_to_codeblocks_mingw_include» into «. \CodeBlocks\MinGW\include»
Add the contents of the folder «add_to_codeblocks_mingw_lib» into «. \CodeBlocks\MinGW\lib»

Всё, теперь мы готовы к сборке openFrameworks проектов!

2. Основные принципы openFrameworks приложения

Сборка тестового проекта

Откроем тестовый проект, для этого выберем со стартовой страницы IDE CodeBlocks выберем «Open an existing project. » (или в File — Import Project — Dev-C++ project… — и выбрав тип файлов *.*)

Переходим в папку где мы развернули openFrameworks, заходим в examples/empty/emptyExample, и открываем файл проекта emptyExample.

Вот так выглядит IDE после открытия проекта:
Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

Попробуем сразу же стартовать проект — на картинке указана стрелкой иконка или нажать F9 — RUN.

Если приложение не собрано, то будет стартована сборка (после вашего подтверждения) и по окончании сборки — приложение стартуется.

Если всё настроено верно, то по окончании процесса сборки будет открыто консольное окно, и мы увидим это окно:
Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

Поздравляю! Значит всё настроено верно. И в папочке bin появилось приложение emptyExample.exe, которое вы можете уже запускать независимо.

Файлы

Теперь посмотрим на файлы нашего emptyExample проекта, они находятся в папке src:
* main.cpp
* ofApp.h
* ofApp.cpp

В нем определяется окно нашего приложения, и далее создаётся экземпляр класса ofApp.

Здесь определяется класс наш класс ofApp, наследуется от ofBaseApp. И методы.

Основной класс приложения ofApp.cpp:

Как мы видим — ничего не реализовано, мы увидели просто пустое, но работающее openFrameworks приложение.

Цикл работы openFrameworks приложения

Основными методами нашего класса являются:

Архитектура любого openFrameworks приложения следующая:
Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

В методе setup прописываются настройки, подготовка ресурсов и т.п. Этот метод выполняется один раз при запуске приложения, перед началом основного цикла.

Основной цикл это update и draw, где в первом методе — происходят только расчеты, а во втором draw — рисование. И после этого цикл повторяется.

Выход происходит по нажатию Esc.

3. Тестовый пример

Вот мы подошли к нашей задаче — визуализации музыки.

На этом сайте представлены примеры к книге «Mastering openFrameworks: Creative Coding Demystified». Сами файлы можно бесплатно скачать с карточки книги (после регистрации).

Базовый пример Dancing Cloud

Я скачал этот пример, и распаковал архив в корне моей openFrameworks папки — это важно, т.к. папка проекта должна находиться на 2 уровня ниже.

Вот ВЕСЬ исходный код, проекта 06-Sound/06-DancingCloud:

300 точек (const int n = 300;) движутся по траекториям шума Перлина, причем соседние точки соединяются отрезками.
Радиус облака и скорость движения — это два параметра, которые берутся из анализа звука.

Анализ звука такой: исходный звук превращается в спектр (с помощью оконного преобразования Фурье). Выбираются два значения спектра, которые и становятся двумя параметрами, управляющими движением облака точек. Эти две частоты показаны на спектре чёрным цветом.

Смотрим отличия от нашего emptyExample.

main.cpp — идентичен по сути.

В testApp.h, добавился атрибут sound, класса ofSoundPlayer:

ofSoundPlayer — это базовый класс для работы со звуком, docs.

Самое интересное находится в testApp.cpp.

Вот переменные, что используются для реализации логики:

Вот что прописано в методе testApp::setup() происходит инициализация музыки, переменных для отображения спектра, и точек облака:

Видим, что музыка загружается, и сразу начинает воспроизводиться, причем циклом.

В методе testApp::update() — происходит вся «магия» по расчету размещения точек.

Вот метод рисования, здесь согласно рассчитанным данным происходит отображение спектра, точек облака, и линий между точками (при условии если они ближе float dist = 40):

Мои модификации

Автор любезно согласился на мое использование его композиции Звезда.

Первым дело — я заменил wav на mp3 — openFrameworks поддерживает mp3. Так же сделал потоковое воспроизведение (иначе все 8Мб должны быть сразу загружены — добавил true вторым параметром, docs).

Добавил загрузку фонового изображения:

Поменял цветовую гамму, сделал эффекты прозрачности зависимые от времени.

Фрагмент из ofApp::draw():

Создание видео

В этом возникли некоторые сложности, и в конечном итоге было выполнено с помощью «Camtasia Recorder».

Ссылки

Основной сайт проекта: openframeworks.cc там предоставлены достаточно хорошие туториалы.

Если вы работаете с openFrameworks, или интересно попробовать, то приглашаю в русскоязычную группу по openFrameworks.

Источник

Креативное программирование: методы и инструменты для JavaScript, Python и других языков

Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

Креативное программирование

Задача этого вида программирования состоит в создании не функционального, а выразительного продукта. В этом процессе немаловажную роль играет эстетика, и именно поэтому он зачастую подразумевает сотрудничество программистов с художниками.

Несмотря на то, что в таком тандеме могут рождаться удивительные вещи, иногда желаемого качества достигнуть не удается, и даже выдающийся художник вместе с умнейшим программистом создают весьма посредственный продукт. На это может быть много причин, одна из которых в возможном недопонимании, когда каждый из участников уверен, что его коллега не до конца понимает его замысел и видение.

Лексикон и общение

Мышление художника и программиста может разительно отличаться. В определенном смысле они совершенно разные создания, которые говорят на разных языках и даже нуждаются в переводчике. Возможно, в этом есть доля истины.

Идеальный перевод между языками требует наличия общих лексиконов. Чем больше общего в этих лексиконах, тем точнее перевод. Например, перевод с английского на французский делать гораздо проще, чем с английского на японский. Причина кроется в том, что английский и французский имеют большое лексическое сходство, что облегчает сопоставление их слов. Кроме того, истинное значение этих слов проще осознается благодаря близости двух культур.

Как же программисту и художнику наладить эффективный диалог? Желательно по меньшей мере превзойти результат, показанный в фильме “Трудности перевода”. Сцена съемок рекламы Suntory Time уморительна, но в итоге получилась неплохая фотосессия. Хотя бы есть на что надеяться. Нам же при организации сотрудничества между художником и программистом нужно добиться большего.

Под креативным программированием мы подразумеваем взаимодействие этих двух сторон с целью создания общего продукта, имеющего художественную ценность. Ознакомление с деталями креативного программирования поможет художникам и программистам обнаружить в этом процессе общие аспекты и выработать на их основе успешные модели сотрудничества.

Инструменты для креативного программирования

Когда дело доходит до выбора подходящих инструментов, то и художникам, и программистам приходится выбирать из имеющихся вариантов. Можно, конечно, создать что-то новое, но с практической точки зрения оптимальнее использовать уже существующие инструменты. Наилучший арсенал подбирается исходя из целей, поэтому важно тщательно их обсудить, прежде чем приступать к выбору средств реализации.

Немного истории

Художники изучали потенциал использования в творчестве компьютеров с самого их появления. Легендарные Bell Labs создали одни из самых ранних произведений искусства именно с помощью компьютеров. В этой же лаборатории Эдвард Заец создал первую известную компьютерную анимацию, а ставшая легендой Лилиан Шварц начала работать с графикой. В то время для этого использовался язык BEFLIX (Bell Flicks), первый вложенный предметно-ориентированный язык, разработанный Кеном Ноултоном для компьютерной анимации.

Первым высокоуровневым языком общего назначения, разработанным для научных исследований, был Fortran (означает перевод формулы). Манфред Мохр и Роман Веростко создавали с его помощью художественные произведения. Кроме этого, для попутных задач они приспособили и плоттеры. К примеру, Веростко создавал свои авторские работы, установив в плоттер чернильную кисть и используя для печати плотную акварельную бумагу.

Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

Со времен Fortran было разработано много языков программирования. Как правило, появление новых языков вызвано невозможностью решения задач с помощью существующих. Первым же ориентированным на креативное программирование языком стал, вероятно, Design By Numbers (DBN), созданный Джоном Маэда в Media Lab Массачуссетского технологического института (MIT) в 1999 году. DBN не является полнофункциональным, но он монументален, поскольку стал первым языком, предназначенным именно для креативного программирования. Два года спустя, студенты Маэды — Кэйси Риз и Бен Фрай заявили об изобретении Processing.

Интервью с Джоном Маэдой в Американском институте графического искусства (AIGA). Будучи президентом Род-Айлендской школы дизайна (RISD), он стремился внедрить в концепцию STEM (Science [наука], Technology [технология], Engineering [инженерия], Math [математика]) дисциплину Art (искусство) и преобразовать ее в STEAM.

Выбор инструмента для креативного программирования

Людям нравится сравнивать плюсы и минусы. Я же считаю, что это имеет смысл, только когда вы с этими инструментами уже знакомы. Иначе в большинстве случаев перечисление плюсов и минусов аналогично описанию симптомов доктору вроде боли в горле и отсутствия аппетита, что не дает представления об основной причине. Ваш выбор должен опираться на достаточное понимание рассматриваемых инструментов. Надеюсь, что четыре перечисленных ниже аспекта помогут вам в этом:

1) Источник

Большинство инструментов для креативного программирования основываются на существующих языках, в связи с чем неизбежно наследуют их специфику.

Processing | p5.js | openFrameworks

Если вы уже знакомы с языком программирования, то и инструмент можете выбирать ему соответствующий. Хотя нет ничего страшного в том, чтобы попробовать освоить новый язык. В этом случае для начала просто потребуется некоторое время.

Если же вы новичок в программировании, то советую начать с Processing. Если вы предпочтете использовать openFrameworks, то имейте в виду, что C++ известен своей высокой обслуживаемостью и для достижения успеха может потребовать более высокого уровня детерминации.

2) Шейдеры

Некоторые из наиболее визуально потрясающих проектов создаются при помощи GLSL шейдеров. GLSL расшифровывается как язык шейдинга OpenGL, и именно он лежит в основе компьютерной графики. К слову говоря, почти все перечисленные выше инструменты поддерживают шейдеры.

Почему многие Processing-программисты не используют шейдеры? Ответ прост и заключается в том, что программировать GLSL достаточно сложно. Если вы уже пробовали работать в Processing, то должны знать, что для правильной работы шейдеров нужно приложить немало усилий. Редактор p5.js по-прежнему не поддерживает эту технология, и в этом случае для использования шейдеров вам потребуется задействовать внешний инструмент, например glitch. Если же вас интересует именно разработка шейдеров, то следует рассмотреть ряд дополнительных инструментов.

OpenRNDR | ShaderToy | NME от Babylon.js

3) Визуальное программирование

Предоставление визуального интерфейса, упрощающего работу, кажется вполне естественным. На стыке любви к интерфейсам и программированию рождаются визуальные языки программирования. Разработанный MIT Scratch и детище Google Blocky созданы для привлечения детей. Какие же визуальные языки лучше всего подойдут для художников?

Max MSP | Pure Data | vvvv | cables.gl

Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

Пример документации Max MSP (разработан cycling74). Как вы видите, здесь требуются некоторые познания в цифровой музыке или DSP (цифровой обработке сигналов). Max MSP и Pure Data в первую очередь используются музыкантами.

Визуальный язык программирования может дать ряд преимуществ, если удачно впишется в рабочий процесс. Однако он может оказаться излишен, если вы только собираетесь делать наброски первых проектов в уме.

По сути, язык программирования — это формальный язык, и он имеет много сходств с естественным человеческим языком, например английским. Когда вы уже поработаете какое-то время с реальным языком программирования, то начнете чувствовать свободу в выражении собственных идей. Для сравнения, визуальный язык навязывает древовидную иерархию для связывания идей по кусочкам, что не отображает мыслительный процесс естественным образом.

4) Поддержка 3D

Честно говоря, Processing и p5.js предоставляют только базовую поддержку 3D. Если вы хотите разрабатывать 3d проекты, то лучше вложить свое время в изучение более подходящего инструмента. Ниже приведены два оптимальных варианта:

Three.js | Babylon.js

5) Данные

Многие творческие проекты основаны на данных. Если вы работаете над анализом данных и визуализацией, то есть ряд инструментов способных упростить задачу:

D3.js | Dash | Leaflet и Folium

Итоговый список 16 инструментов

Замысел художника

Согласны ли вы, что в результате креативного программирования должно получиться произведение искусства? Если да, то нельзя также не согласиться, что в этом процессе очень важен замысел художника.

Для оценки же готового произведения знание замысла создателя хоть и полезно, но уже необязательно. Многие могут восхищаться портретом Бетти, не зная, почему Герхард Рихтер нарисовал эту картину. Попробуйте еще раз взглянуть на нее после прочтения следующего абзаца и сравнить впечатления.

Контраст между ее алым свитером и сильно осветленной кожей порождает великое множество мифов — Спящая красавица, Белоснежка и даже Лилит. Утонченные черты лица Бетти скрывают сильное желание быть именно увиденной, а не просто наблюдаемой. Рихтер подчеркнул ее глаза кобальтовым оттенком, одновременно напоминая смотрящим о неизбежных условностях фотографии и мимолетной природе самого детства. Бетти смотрит не на нас, а на своего отца, создателя в жизни и искусстве.

Если вы работаете в команде креативной разработки, то должны понимать замысел художника. Давайте в общих чертах посмотрим, в чем вообще его важность для общества.

Вы можете рассматривать художника как исследователя, того, кто пытается раскрыть глубинные и универсальные элементы человеческого существа. Как только эти элементы будут найдены, об их открытии необходимо сообщить обществу. Чем эффективнее художник может передать свои открытия в произведении искусства, тем больше людей смогут их понять и пережить этот ценный человеческий опыт. В конце концов, именно поэтому репрезентатизм идет вслед за конвенциализмом. Простое поверхностное знакомство с произведением искусства не вызывает глубокие и ценные вопросы “Зачем?” и “Как так вышло?”, которые волнуют человеческую сущность. Репрезентативность — это просто вспомогательный инструмент, используемый в процессе выражения, чтобы помочь наблюдателю понять истинные причины, вдохновившие произведение. И художник, и его аудитория стремятся преисполниться понимания человеческого существа. Замысел художника — это единственный механизм контроля в процессе достижения и передачи желаемых результатов.

Поскольку замысел художника критически важен, то его необходимо отчетливо донести до команды креативной разработки. К сожалению, в процессе сотрудничества это происходит не всегда. Одна из возможных причин в том, что с программистами нелегко вести диалог.

О программистах ходит множество шуток. Иногда их представляют как странных существ, но большинство из них на самом деле любят говорить с людьми, особенно о программировании.

Когда художник чувствует, что визуальный результат, созданный программистом, не передает нужных ощущений, он зачастую стремится все объяснить в еще больших деталях, но последующие результаты могут так и не принести желаемого улучшения.

Постарайтесь передать замысел вашего художника. Я, может, и не эксперт в этом вопросе, но считаю, что программист должен понимать проект на его концептуальном уровне. Иначе такая команда для реализации проекта не годится.

Если же замысел художника понят правильно, то результат будет чудесен.

Техническое понимание

В проекте креативного программирования можно предположить, что как программисты, так и художники разделяют общие интересы в области эстетики и вычислений. Но поскольку визуальный результат создается именно программированием, художнику также стоит разобраться в принципах работы используемых для этого инструментов. В данном случае понимание незнакомой области можно облегчить приведением аналогий.

Модель художника

Класс Canvas появился в Java на очень раннем этапе. Назван он так не случайно, так как использует модель художника. Джеймс Фор Уокер в книге “Painting the Digital River” рассказывает о своей деятельности в области цифрового искусства. Там он подробно описывает свое видение и подход, которые по замыслу также совпадают с моделью художника.

Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

Processing в первую очередь служит для рисования 2D проектов, и построен он на основе этой же модели. Потому на языке Processing программа называется эскизом.

В модели художника элементы рисунка продолжают добавляться на холст, и при этом отсутствует реальное их стирание. Для стирания элемент закрашивают цветом фона. В изобразительном искусстве рисунку часто требуются тысячи линий для создания текстуры и ценности. И многие эскизы в Processing делают именно так — используют большое число линий для создания нюансов узора.

Работа с 3D

Представьте себе 3D кинотеатр. Для формирования 3D сцены нужна виртуальная камера. В этом случае используется OpenGL, являющаяся основной библиотекой с поддержкой большинства современных реализаций 3D.

Работа с 3D складывается из кадров с изображениями аналогично катушке с пленкой. Сложные модели можно создавать при помощи такого ПО, как Maya или Blender, но генеративное программирование в 3D может буквально завораживать.

Команда для креативного программирования

Команда, работающая над такими проектами, должна как минимум состоять из художника и программиста. Полнофункциональная же команда может включать больше участников, которые займут разные роли, как при создании фильма. Однако минимальная команда может состоять и из одного человека, который совместит в себе как художника, так и программиста.

1) Художник в роли программиста: настенные рисунки Сол ЛеВитта

Несмотря на то, что Сол ЛеВитт не использовал компьютер, его творения можно идеально повторить с помощью программирования. В действительности, воплощение его инструкций по созданию произведения отрисовывается так же, как на компьютере.

Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

Креативное программирование что это. Смотреть фото Креативное программирование что это. Смотреть картинку Креативное программирование что это. Картинка про Креативное программирование что это. Фото Креативное программирование что это

Сол ЛеВитт передал для своих настенных картин особые инструкции, подобные псевдоязыкам для программирования. Mass MoCA создали по ним крупномасштабную инсталляцию всех его работ, которая по истине впечатляет.

А вот еще один художник, который одновременно и программист.

2) Программист в роли художника: Агрегация Энди Ломаса

Энди Ломас был участником группы “Генеративное и генетическое искусство” на выставке SIGGRAPH 2006 в Бостоне, где объяснял алгоритм, создавший серию “Агрегация”. Его основным интересом было создание симуляции при помощи программирования, в результате чего получился сложный развивающийся процесс, символизирующий природные феномены. Серию “Агрегация” можно рассматривать как произведение искусства во многих смыслах.

Немало разработчиков начали свое путешествие в область креативного программирования именно этим путем. В структуре мира заложена универсальность, которую не стоит рассматривать как совпадение.

3) Команда из двух и более: Walking City

В командной работе есть ряд преимуществ, ведь каждый из ее членов представляет для проекта уникальную ценность. Однако при коллективной работе необходимо активное взаимодействие, которое может усложниться из-за различия опыта участников.

Команда проекта Walking City состоит из трех людей: художника Мэтта Пайка, технолога Криса Перри и саунддизайнера Саймона Пайка. Опять же, прочитав следующий за видеороликом абзац о замысле художника, вы можете взглянуть на эту работу уже иначе.

Ссылаясь на утопические видения архитектурной группы Archgram из 60-х, Walking City представляет собой развивающуюся видео-скульптуру, разработанную компанией Universal Everything.

Язык материалов и узоров, наблюдаемый в радикальной архитектуре, трансформируется по ходу бесконечного путешествия этого бродячего города, адаптируя его движения и форму под встречающееся окружение.

Рабочий процесс креативного программирования

Когда перед публикой предстает проект креативного программирования, он оценивается как произведение искусства, реализуемое во времени. Теория реализуемого во времени искусства лучше всего проявляется в кинематографе, поскольку данная область изучена в этом отношении больше других.

В отличие от стандартизированного производства фильмов, рабочий процесс креативного программирования может сильно отличаться в зависимости от команды и личных предпочтений. Среди этапов процесса могут присутствовать, например, следующие:

Анализ: когда отъезд становится прибытием

Это продукт сотрудничества Ребекки Сюй и Шона Чжай (меня), который выставлялся на ISEA2016 – 22-м международном симпозиуме по электронному искусству.

I. Разработка концепции

Представленный проект — это визуальное музыкальное произведение. Для подобных работ иногда мы сотрудничаем с композитором и разрабатываем видео- и звукоряд параллельно. В данном случае у нас уже была композиция, которая обоих устраивала. Взяли мы ее из серии произведений inter-sax-tive композитора Николаса Шерзингера.

“inter-sax-tive” — это серия импровизированных работ для саксофона и интерактивного компьютера. Главное отличие такого “взаимодействия” от многих традиционных работ, совмещающих живые инструменты с электроникой, в том, что здесь компьютер и исполнитель взаимодействуют в реальном времени. Каждое произведение составляется из набора материалов, подающих основной тон, и специальных эффектов, с которыми саксофонист свободно импровизирует. Компьютер реагирует на издаваемые музыкантом звуки, исходя из того, что он играет. В этом процессе компьютер также может создавать произвольные элементы, что позволяет реагировать на них уже саксофонисту. Интерактивная компьютерная среда спроектирована для максимальной гибкости в создании, наложении и маршрутизации музыкальных материалов с той же импровизационной свободой, с которой музыкант может работать в чисто акустической среде.

Техническая настройка “inter-sax-tive” относительно проста. Нужен саксофон, микрофон, компьютер с возможностью запуска Max/MSP, аудиоинтерфейс с входом и стереовыходом, педальный MIDI контроллер и два динамика.

Благодаря такому взаимодействию музыканта и программы Max/MSP во время прослушивания возникает ощущение непрерывного предвкушения, так как никогда не знаешь, что последует далее. Несмотря на то, что восприятие музыки в основном субъективно, мы хотели сохранить визуальную абстракцию, допуская тем самым некую двусмысленность итогового музыкально-визуального произведения.

В этом проекте мы стремимся вызвать к концу главы у зрителя необычайно расстраивающее, но в то же время предвосхищающее чувство прежде, чем отправляться в следующее путешествие к еще большим возможностям неизвестности.

II. Визуальный анализ

Как выразить свои идеи через визуальный язык? Это удивительный этап проекта, так как возможности очень обширны. Прежде чем мы сможем представить визуально привлекательное произведение, нам необходимо сформулировать его идею. Будучи командой, нам также нужно обсудить наши мысли друг с другом:

III. Разработка алгоритма

Мы хотим, чтобы образ выглядел небрежным и шероховатым, почти как рисунок каракулями. Тем не менее при использовании рисунка каракулями в графике, реализуемой во времени, необходимо поддерживать достаточную согласованность между кадрами.

В Processing мы добиваемся этого при помощи 3D сцены, не очищая изображения из предыдущих кадров. Позвольте объяснить подробнее:

Я уже отмечал, что Processing предоставляет только базовые возможности работы с 3D. Мы же нашли удивительную библиотеку iGeo, созданную Сатору Сугихара (ATLV), который разработал ее как инструмент параметрического проектирования в архитектуре. iGeo предоставляет богатую поддержку 3D вычислений. Как инструменту моделирования ей требуется некоторое время для вычисления изображений и для анимации она не оптимизирована.

По этому вопросу я связался с Сугихара через Facebook, и он любезно предоставил мне образец программы, показывающий как использовать iGeo в качестве внешней библиотеки.

IV. Повторения

Сотрудничество между художниками и программистами

Как добиться в этом сотрудничестве успеха? Суть в том, что программисты, работающие над подобными креативными проектами, обычно интересуются эстетикой, а художники, которым хватило смелости использовать программирование как инструмент творчества, также имеют некоторые познания в области вычислений.

Креативное программирование удивительно. Оно предлагает такую свободу творческого процесса, какую не предоставит ни одна форма искусства. По этой причине теория для этой области еще недостаточно разработана. Вероятно, эти теории никогда и не поспеют за стремительным развитием самой области креативного программирования. Также хочется сказать, что здесь никто не может гарантировать вам успеха, поэтому не стоит расстраиваться, если в процессе творчества не все пойдет как по маслу.

Не уверен, что имею достаточную квалификацию, чтобы давать советы, однако для меня некоторые из приведенных ниже оказались весьма полезны. Это лишь мое мнение, и для вас они могут быть вовсе необязательны.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *