ПредишенСледващото


Adobe Pixel Bender: ново ниво на обработка на изображения за светкавицата

Програмата за Pixel Бендер се запише като файл с разширение "рВК", а след това тези файлове могат да бъдат директно изтеглени в сряда, Adobe Photoshop CS, или Adobe After Effects CS, или можете да компилирате ядрото програма "pbj" файл, който може да бъде изтеглен и конфигуриран изпълнение FlashPlayer среда. Ето един важен момент: ако създадем молба е да се работи в FlashPlayer среда, тогава ние няма да имат достъп до цялата функционалност на Pixel Bender Kernel език. Тя също така ще бъде напълно отсъства езикова поддръжка Графика Language (за подробен списък на тези ограничения може да се намери в помощта, която върви заедно с Pixel Bender Toolkit). Сега ще дам на програмата детайла на Bender ядрото на Pixel. Това празно можете да получите във всеки един момент, ако изберете опцията в менюто "File -> New Kernel":


ядрото NewFilter

вход image4 SRC;
изход pixel4 DST;

невалидни evaluatePixel () DST = sampleNearest (SRC, outCoord ());
>
>

плава булев вътр pixel1 image1
float2 bool2 int2 pixel2 image2
float3 bool3 int3 pixel3 image3
float4 bool4 int4 pixel4 image4

Използването на такива типове векторни данни е много удобно, тъй като всички аритметични операции "залети" и знаят как да се размножават, разделение, добавете вектори заедно. Тук си струва да говорим за работа swizzling. Същността на swizzling-и, че от вектор, например, на четирите елемента, ние искаме да се вземат само три, например, първо, трето и четвърто елементи. И тогава ние може да събере нова променлива величина 3, самите елементи могат да се разменят, като например:

float4 vec4;
float4 червено = vec4.rrrr
float3 rgb_only = vec4.rgb

DST = sampleNearest (SRC, outCoord ());

Той казва, че "DST" променлива (резултат на изчисление на Shader) се получава като резултат от функция на повикване sampleNearest. Какво прави sampleNearest? Може да се каже, че функцията sampleNearest просто отнема от картинката (първият аргумент) пиксел в дадените координати, но това не е вярно. В компютърната графика, има такова нещо като вземане на проби, или за вземане на проби и изчисляване на стойността на базата на списъка на пробата (въпреки че е приложим и в други области на термина вземане на проби). Да приемем, че имаме задача "дръпне" текстурата първоначално дава под формата на справка изображение (с размер от 200 на 200 пиксела), на повърхността на по-голям или по-малък. Тук не можем недвусмислено да поставят на всеки изход пиксел един и само един вход на пикселите (пиксел не могат достатъчно сантиментален). Затова нашата задача е да "участък" или "свиване" на изображението, но по начин, за да се избегнат вредните артефакти (размазване, неточности и т.н.). Има няколко алгоритми за решаване на този проблем, но често то се свежда до това, което ние приемаме за дадено координира не е един пиксел, както и няколко околни пиксела, и се изчислява въз основа на техните цветови стойности на един пиксел, разположен в средата. Така в Pixel Bender има три функции вземане на проби и (има и версии на функциите, които работят на изображения и размера на пикселите в две, три и четири канала):

pixel4 проба (image4 им, float2 о)
pixel4 sampleLinear (image4 им, float2 о)
pixel4 sampleNearest (image4 им, float2 о)

Функции sampleLinear проба и направи същото нещо: изчисляване на резултат цвят на основата на линейна интерполация на съседни цветни пиксели. sampleNearest Функцията просто отнема цвета на един пиксел, който се намира най-близо до исканата изхода координира. Що се отнася до функция outCoord (), той се връща един пиксел координира, цвят сега е изчислено. Това означава, че ако я пускате примерен скрипт, ми даде да изпълнява, ще получите като резултат от картината, един по един съвпада с входното изображение. Нека да го проверим. За да направите това в менюто "Файл", ние изберете елемента "Load Image 1" и след всяка снимка. След като кликнете върху бутона "F5", ще видите, както се очакваше, на оригиналното изображение (нашия код просто копират на снимката). За да се провери дали всичко работи правилно, можете да промените нашата шейдър, например:

невалидни evaluatePixel () DST = pixel4 (0,0,1,1);
>

Adobe пиксел гуляй ново ниво в обработка на изображения за флаш
След стартиране на Shader да изпълнява, ще видим, че цялата площ на изходното изображение е изпълнен с синьо, както аз възлага всичко на цвета на изхода на пикселите е посочено своите RGBA-компоненти (pixel4 конструктор данни тип отнема четири числа в интервала от нула до един е в RGBA ред) , Сега се опитайте този пример (който аз имам, е показано на фигура 1.)

пакет внос flash.display * .;
внос flash.events * .;
внос flash.net * .;
внос flash.filters * .;

[ДИФ (широчина = "600", височина = "400", backgroundColor = "# aa0000", кадри = "30")]
обществени клас Главна простира Sprite

[Постави (източник = '/ lisa.png ")]
частен Var fotoClass: Клас;
частен Var fotoImage: растерни = нови fotoClass ()
частен Var urlLoader: URLLoader = нула;

обществена функция Main (): нищожен addChild (fotoImage);
Var URLRequest: URLRequest = нов URLRequest ( "shader.pbj");
urlLoader = нов URLLoader ();
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.addEventListener (Event.COMPLETE, applyFilter);
urlLoader.load (URLRequest);
>

частен функция applyFilter (събитие: Event): voidurlLoader.removeEventListener (Event.COMPLETE, applyFilter);
Var шейдър: Shader = нов Shader (event.target.data);
Var shaderFilter: ShaderFilter = нов ShaderFilter (шейдър);
= FotoImage.filters [shaderFilter];
>
>>

черно Зоро, black-zorro.com

Свързани статии

Подкрепете проекта - споделете линка, благодаря!