Nodebox

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


    С сайта программы возьмем ее описание «Nodebox программа, которая позволяет создавать 2D визуализацию (статичную, анимированную и интерактивную) с помощью языка программирования Python и, в последствии, экспортировать ее в форматы PDF и QuickTime». Программа абсолютна бесплатна, отлично документирована. Есть множество уроков «от простого к сложному». Единственный минус — она только на Mac. Давайте её уже скачаем и посмотрим, чем она может удивить нас :)

    Открываем смотрим интерфейс. Как и ожидалось чистый минимал, как в Processing.
    image
    Конечно, весь смак программы в языке, код в разы будет меньше чем в том же процессинге со своей явой. К примеру, рисуем круг:
    size (100, 100) #Задаем размеры фона
    fill(0.2) #Делаем заливку кругу
    oval(10, 20, 40, 40) #Круг

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

    SVG

    Из названия, я думаю, сразу понятно становиться, что плагин позволяет подгружать в код SVG-файлы. На уровне кода можно менять цвета, прозрачность, работать с кривыми и точками. Хочу на примере того как я рисовал флаер, показать как он работает. Была задача нарисовать флаер для вечеринки с тематикой Лондона. Идем в гугл ищем картинки, которые ассоциируются с Лондоном. Все это дело кидаем в иллюстратор, переводим в вектор и сохраняем в SVG.
    imageimageimage
    Далее мне надо было простой рандомный разброс по «холсту». К сожалению, исходников тех не сохранилось и поэтому я покажу простой код, на основе примеров.
    image
    Далее наигравшись с рандомом и выбрав нужный вариант, экспортируем это в нужный нам формат. Nodebox не одним PDF един :)
    image
    Я выбираю EPS, кидаю в люстру и уже там разгрупировав могучую кучку объектов могу рулить отдельными объектами. В итоге проведя со всем изображениями такие манипуляции я получил вот такой флаер.
    image
    Вообщем очень нужный и важный плагин, заинтересовались? Прошу сюда.

    Core Image

    Самый мощный плагин, я считаю. Так сказать Adobe® Photoshop®™ (вынужден его так называть в свете последних событий :) командной строкой. Плагин позволяет производить различные манипуляции с изображениями, почти все фильтры фотожопа можно реализовать с помощью этого плагина. Сие чудо работает через Core Image, а значит на аппаратном ускорении. Плагин позволяет создавать слои, а если сохранить в TIFF соответсвенно сохранится иерархия. Может регулировать яркость, контраст, насыщение. Работает со смешиванием в слоях. Пример применения фильтра Triangle Tile (всего 2 строки!):
    image
    l = c.append("lily.tif")
    l.filter("triangletile", dx=-30, dy=-30, width=40)

    Очень много чего умеет, тут можно скачать и почитать подробней.

    Supershape

    Плагин, позволяющий, реализовать формулы суперформ Johan Gielis. Можно к примеру написать хабр вот так:
    image
    Или санимировать суперформу:
    image

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

    image

    Вот как-то так. А теперь бонус! :)

    Nodebox 2


    image
    Программа пока находится в бета-тестировании. В программе изменилась сама модель написания. Теперь это работа с модулями. Пока не ясно, что именно будет реализованно в программе. Самый приятный момент, что программа теперь идет на винде и чуть-чуть на линуксе :) Давайте на примере урока попробуем понять как теперь с ней работать.
    При создании проекта мы видим чистый интерфейс
    image
    Окна распределяются следующим образом
    image

    Правой кнопкой щелкаем на поле Network

    image

    Выбираем из меню New node

    image
    image

    Ищем Rect в списке и добавляем его. Теперь он на сцене, мы можем менять его параметры

    image

    Следующим шагом добавляем модуль Wiggle, и соединяем Rect c Wiggle.

    image

    Теперь мы можем наблюдать следующее (смотря кто как эксперементирует)

    image

    Дальше добавляем Place, это как бы рендер то что на выходе получиться. При присоединение к этому модулю, он спрашивает вас в качестве чего подцепить к нему, надо выбирать Shape ибо мы добавляем фигуру.

    image

    Добавляем модуль Grid, когда соединяем, выбираем Template, как бы шаблон для рендера.

    image

    И в итоге на выходе имеем PROFIT!

    image

    Проект опен-сорс, проект интересный, коммьюнити по-тихому собирается. Интересно будет увидеть мастистых программистов на питоне с их экспериментами. Совсем запыхался и не дал ссылку на скачивание, вот! Спасибо LLIAMAH, что напомнил.

    ЗЫ. Я знаю, что у меня проблемы с русским, что я совершаю орфографические, пунктационные и лексические ошибки. Но очень прошу вас не указывайте на ошибки в комментариях, пишите в личку, буду править, а то как начнется… В итоге тред будет учителей русского языка :)
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 32

      +6
      Спасибо огромное за обзор, никогда прежде не слышал об этой программе. Теперь я знаю, чем займусь на выходных :)
        +5
        Ммм! Интересная вещичка, надо скачать-попробовать! Я на Processing даже кой-чего писал, будет с чем сравнивать.
        Кстати, дали бы хоть ссылочку на скачивание Nodebox 2(чтобы люди по всяким гуглам не лазили):
        beta.nodebox.net/download
        Версии для винды, мака и инструкции для дебиана.
          +1
          Моя вина, сейчас добавлю.
            +4
            Вот спасибо =) А то я по мере статьи все больше отчаивался, что я не Маковод =))
            +1
            Обзор великолепен, а то что много картинок — это только плюс! Плагин заинтересовал после того, как увидел, что с помощью его можно реализовать. Вторая версия показалась более заманчивой…
              +1
              Очень занятно, спасибо за статью. Будет с чем поиграться в свободное время, модет и юзкейс найдется хороший.
                +8
                Есть у меня две работы, которые я делал в самом начале знакомства с программой. На самом деле ничего особенного, так эксперименты с Python.

                  0
                  это Nodebox2?
                    +1
                    Нет, первый. Но во втором еще проще сделать такое :)
                  +1
                  Очень интересная штука. С утра на работе попробую обязательно!
                    +1
                    Посмотрел-потыкал. Штука интересная, но я не понял одного — можно ли создавать динамическую картинку? Может через плагин какой? Я люблю кодить именно анимацию, просто картинки создавать не интересно)
                    А так впечатления только положительные, поиграться интересно с ней. Ничего не тормозит на моем довольно старом ноуте(Pentium M), все через GUI, что для знакомства просто отлично! Это потом уже можно и покодить, когда понравится.
                    Но анимацию очень хочется — никто не подскажет? Мне Procesing именно этой фичей понравился — довольно просто кодить всякие визуальные эффекты(писал визуализацию алгоритма Дейкстры для графов, с добавлением/удалением узлов прямо в процессе работы).
                      +2
                      Можно.
                      В топике автор рассказал, как нарисовать круг, вот вам простенькая анимация с кругами — всё просто, если раньше имело дело с action_script, asymptote или чем-либо подобным:

                      size (500, 500)
                      speed(20)

                      def setup():

                      global frame
                      frame=1

                      def draw():

                      global frame
                      frame += 1

                      for i in range(100):
                      ova=random(0,10)/10.0
                      ovr=random(0,10)/10.0
                      ovg=random(0,10)/10.0
                      ovb=random(0,10)/10.0
                      fill(ovr,ovg,ovb,ova)
                      ov1=random(0,500)
                      ov2=random(0,500)
                      ov3=random(0,50)
                      oval(ov1, ov2, ov3, ov3)

                      Потом либо просмотр в nodebox, либо экспорт в *.mov.
                      Экспорт *.mov, как водится, работает только под mac (кило антоновки в зад разработчикам этого недоформата). ffmpeg/mencoder разработчики не осилили, увы, и я при бешлом осмотре не понял откуда вызываться экспортв mov должен (вдруг можно прикрутить ffmpeg/mencoder). Очень жаль, что нет некоего аналога flash-player или blender-player… Был бы кстати.
                        +1
                        Спасибо Вам за ответ, но так как для меня все это лишь хобби(основной кодинг на с++ да асьме), то я даже не понял, куда вставить этот код =(.
                        Кстати, раз в маке есть экспорт в mov, значит разработчики предполагают возможность создания анимации. Но вот честно говоря, пока это не интуитивно, имхо. Я помню, что это лишь бета. Может попозже допилят? Сейчас эта штука для меня лишь как игрушка для создания забавных картинок и только.
                        В Processing что круто, так это кроссплатформенность — код легко собирается в бинарник хоть под виндой, хоть под линуксом. Java, что говорить… Для Nodebox это пока точно лишнее, его ниша, как я это понял — готовый продукт, будь то картинка или видео.
                          +2
                          Вставить в левое окно программы ) Ну и смотрите на сайте программы список зависимостей — нужен питон и кое-что ещё. По ctrl+r код отправится на исполнение. По ctrl+. остановится (требуется только для бесконечной анимации). Прога по сути своей IDE для python с поддержкой собственных библиотек.
                          Создание анимации, ещё раз повторю, есть! Его не предполагают. Вот тот код, что я кинул, рисует разноцветные шарики со случайными координатами. Каждый кадр — свой «горошек». Но можно и траектории им прописать, и плавное изменение движения, и отрисовывать вместо них что-то другое, и много чего ещё. Единственный косяк — информацию можно запихнуть только в mov, в linux этот пункт недоступен. Но на сайте есть видео с анимациями, экспортированными на mac`ах.
                          На счёт ниши — ну виджеям пригодилось бы. Для pdf asymptote есть. Хотя, по мне так он посложнее и с серьёзной заточкой на нужды верстальщиков и полиграфистов. А nodebox как раз аниматорам бы пригодилась.
                          А если б была возможность транслировать питоний код во flash-байткод… …мечты-мечты.
                          Под linux видео можно получить при помощи recordmydesktop (ну или иным способом захватив видео с экрана), но решение, конечно, костыльное…
                            +1
                            Да, получается, что это IDE для питона с дополнениями. Но как чисто IDE она неудобная имхо, гораздо проще писать анимацию в созданных специально для этого системах. Было бы круто, если была бы Node, которая получает в качестве параметров либо точки изображения(если оно векторное), либо картинку(растр) и может менять их в цикле. Ну и на выходе тоже выдает точки/картинку, чтобы можно было бы дальше присоединять node'ы.
                            Я на сайте что-то не нашел раздела соответствующего, где лежат готовые дополнения, сейчас особо времени нету. Но софтинка интересная, еще и linux поддерживающая — буду следить за ее развитием.
                              +2
                              В правое окно код — ошибся.
                              На счёт удобная нет — я вот ещё по флэшу замечал, что аниматорам и прогерам нужны разные IDE. Первым попроще и без лишнего, вторым — побольше возможностей. Что до специально созданных систем — в каких именно? Я вот кроме FLASH ничего и не вспомню, разве что какие-то сверхтяжёлые пакеты для визуализации. А всё остальное на уровне «блокнот и компилятор». Ну или на уровне nodebox. Да и не нужна навороченная IDE для анимации, на мой взгляд — вот инструменты для работы с графикой нужны, таймлайны, удобное управление графическими объектами, шустрый движок визуализации — куда нужнее. А навороченная IDE для простого кода как бы и ни к чему.
                              Посмотрим, во что превратят bodebox2. Будет время — попробую списаться с авторами на предмет прикручивания ffmpeg. Жаль сам только если тестированием смогу помочь…
                      +1
                      И все-таки макось удивительная операционная система. Каждый раз открываю столько новых вкусных программ, не перестаю удивляться))
                        +5
                        Версии под линукс (http://dev.nodebox.net/wiki/Qt) и Виндоус (http://nodebox.net/download/nodebox2/nodebox-2.0.966-setup.exe) тоже есть ;)
                          0
                          nodebox первый из этого svn у меня не завёлся.
                          +1
                          Интересная программа, что-то типа Houdini(3х мерный пакет для спецэффектов) для 2d. По крайней мере нодовая логика блоков операторов оттуда. Но работы над ней создателям еще много предстоит.
                            +1
                            Похоже, что слово «Node» входит в моду.
                            • НЛО прилетело и опубликовало эту надпись здесь
                              +1
                              эдакий ni reaktor для графики
                                +1
                                Только я увидел в статье дух Doctor Who?
                                  +1
                                  у него синяя будка
                                    +1
                                    А летающие автобусы?
                                    Тем более синяя было бы слишком явно и я б ушел ждать 17го числа
                                  +2
                                  Очень классный пост и прога.

                                  Я в школьные годы матлабом (да, я знаю что матлаб — это из иной оперы) увлекался, там тоже можно было делать подобное. Точнее анимировать трехмерные графики функций и др. Но скриптовый язык сложноват был. А тут пайтон, что заставит наконец-то за него сесть.
                                    0
                                    Можете попробывать еще поставить Blender, там 3д, но тоже питон. Смысл в том, чтобы генерировать композиции, а потом уже рендерить. У меня на фликере есть в контактах чувак, он занимается generative art, он в разных програх работал (и в блендере тоже), можете посматреть его эксперименты (все на основе математики)
                                    +1
                                    Интересная штука. См ахивает на гибрид asymptote и неинтерактивный flash…
                                      +1
                                      Про флэш тоже есть что сказать, потом будет статья.
                                      +1
                                      Beta начинает напоминать Pure Data
                                        +1
                                        Экспорта видео для linux нет. Ещё одни «неосилившие»…

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

                                        Самое читаемое