Главная » Processing » Экспорт последовательности изображений в Processing

0

Processing – это прекрасный инструмент для создания видео. В ранних версия Processing был класс MovieMaker, который позволял вам конвертировать ваш скетч в QuickTime movie. В Processing 2 этот класс удален и теперь вместо него установлен GStreamer framework. В этом примере вы научитесь экспортировать вашу работу в виде последовельности изображений, чтобы затем создать из них видео.

Как это делается

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

int randomNum; l

PVector[] points; float radius = 2;

void setup()

{

size( 1280, 720 )

smooth();

background( 234, 228, 17 ); points = new PVector[64];

for ( int i = 0; i < points.length; i++ ) {

points[i] = new PVector(random(width), random(height));

}

frameRate( 30 );

randomNum = floor( random( 10000, 90000 ) );

noFill();

stroke( 0, 64 );

}

void draw()

{

for ( int i = 0; i < points.length; i++ ) { float newX = points[i].x + random( -10, 10 );

float newY = points[i].y + random( -10, 10 ); stroke( i*4, 64 );

line( points[i].x, points[i].y, newX, newY ); ellipse( newX, newY, radius, radius );

points[i].x = newX; points[i].y = newY;

}

radius++;

if ( radius > 10 ) { radius = 2;

}

saveFrame("images/export-"+randomNum+"-#####.tga");

// save 900 frames = 30 sec @ 30 fps if ( frameCount >= 900 ) {

exit();

}

}

После запуска скетча вы найдете в папке images в папке ваего скетча последовательность изображений типа TGA.

Самое важное в создании видео – это правильно установить размер и частоту кадров в функции setup() вашего скетча. Я задал размер кадра 1280 x 720 пикселей и частоту кадров 30 кадров в секунду. Это даст вам представление о том, как будет выглядеть видео когда вы запустите скетч. Этот формат видео хорош для размещения видео на таких веайтах как Vimeo и YouTube. Но обратите внимание, что если в каждом кадре вы делаете сложные вычисления, это может притормозить скетч и реальная частота кадров будет меньше, чем та, которую вы укажете в функции frameRate().

Каждый кадр будет сохранен с помощью функции saveFrame(). В имени файла изображения я использовал случайное целое число под именем randomNum, поэтому в одной и той же папке можно сохранить несколько последовательностей изображений. Сделать выход из скетча после сохранения последовательности изображений также будет хорошей идеей. Это делается с помощью функции exit(). Если нужно 30-скекундное видео, понадобится сохранить 900 кадров. Рассчитать это количество просто: число кадров в секунду x число секунд = количество кадров.

Я сохранил последовательность изображений в формате TGA. Это самый простой способ сохранить изображения в Processing, так как формат TGA не сжимается. Вы можете использовать PNG или JPEG, но помните, что это замедлит ваш скетч.

Источник: Ян Вантомм, Processing 2: креативное программирование, перевод с английского Александры Мишутиной, Published by Packt Publishing Ltd., 2012, BIRMINGHAM – MUMBAI.

По теме:

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