Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Анимация и коррекция цвета (http://www.flasher.ru/forum/showthread.php?t=180052)

AleXXX 26.05.2012 14:08

Анимация и коррекция цвета
 
Приветствую всех участников форума. Нужна помощь вот в каком вопросе.

Есть несколько картинок, образующих анимацию движения какого-нибудь юнита. Каждая картинка - это фон определенного цвета в RGB (#00FFFF), собственно сам юнит на этом фоне. Задача: перемещать этого юнита по сцене.

Сейчас сдел так:
1) в Flash CS скомпилил покадровый swf
2) в FleX через Embed портирую этот swf в основной проект и работаю с ним как MovieClip: перемещаю,вращаю и т.п.
3) А тут собственно незадача: нужно фон этого MovieClip'а сделать прозрачным, чтобы юнит остался юнитом, а его фон #FF00FFFF преобразовался в #00 xx xx xx (ARGB), и как следствие под ним отображался ландшафт сцены. Т.е. заменить цвет строго определенный цвет (RGB) #FF00FFFF на прозрачный #00xxxxxx (ARGB) А так получается, что перемешается квадрат с вписанным юнитом.

Предполагаю через MovieClip.transform это можно как-то решить, если я конечно прав.
Кто-то советует программно выдергивать из MovieClip Bitmap'ы и использовать threshold(), однако опыт программирования в др. языках мне подсказывает: "не для того MovieClip был сделан чтобы его потом потрошить". Возможно я вообще не правильно выбрал концепцию храния ресурсов в swf-ках. В общем посоветуйте подход.

PS. Вариант изменить цвет фона на прозрачный в исходных картинках, тоже не лучший вариант.

expl 26.05.2012 16:24

Дешёвого (по ресурсам) способа отфильтровать определённый цвет в альфу я не знаю (ColorMatrixFilter, ColorTransform такого не сделают в общем случае, а шейдеры и treshold - не дешёвые).

Нормальное решение:
- у вас должны где-то лежать исходные PNG-шки - перегнать их чем-нибудь в PNG-шки с прозрачностью
- повторно вставить во fla - если имена не меняли - то Вас спросят "Заменить ли картинки?" - говорите "да" и тогда по всем мувикам лазить не придётся.

А теперь способы перегона:
- Photoshop, говорят поддерживает автоматизацию
- батник или скрипт, использующий консольный бесплатный графически редактор imagemagic
- скрипт на любом языке, поддерживающим работу с графикой
- в конце концов, AIR-приложение на том же AS3 с использованием этого treshold
- сам обычно для предобработки графики использую связку haXe+neko+nme - граблей там куча, с альфой по-нормальному только попиксельно удаётся работать - но проще встроить в скрипт сборки, чем для AIR.
- засучить рукава и перегнать вручную каким-нибудь Paint.NET

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

strangedk 26.05.2012 16:31

Цитата:

Сообщение от AleXXX (Сообщение 1081462)
PS. Вариант изменить цвет фона на прозрачный в исходных картинках, тоже не лучший вариант.

Вообще-то это самый правильный вариант. Зачем ставить костыли, если изначально накосячил дизайнер?

Я понимаю что моё замечание может быть бесполезно, но о чем вы думали когда делали секвенцию картинок?

AleXXX 26.05.2012 16:58

Цитата:

Сообщение от strangedk (Сообщение 1081509)
Вообще-то это самый правильный вариант. Зачем ставить костыли, если изначально накосячил дизайнер?

Я понимаю что моё замечание может быть бесполезно, но о чем вы думали когда делали секвенцию картинок?

Да никто не накосячил, просто эти картинки вообще ресурсы игры под DirectX. Что-то увлек флеш, вот учусь. Кстати на них помимо фона есть есть еще обозначенные цветом: тень, аура(контур в несколько пикселей для спецэффектов). И под DirectX с этим проблем никаких, вот я подумал может нечто подобное и в Flash возможно.

expl 26.05.2012 17:21

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


Часовой пояс GMT +4, время: 04:02.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.