Search
Write a publication
Pull to refresh

Comments 41

Не поможет. Как правильно сказал ниже lsdima, для решения задачи необходимо перевести каждый пиксель из RGB в HSL, выполнить сдвиг, и перевести обратно.

Что нереально сделать в рамках ColorMatrixFilter (который просто выполняет единую операцию для всех RGB пикселей), а другого фильтра во флэше нет…
Хозяйке на заметку: для этих целей есть PixelBender.
вот вам фильтр, который выполняет честную трансформацию (перевод-сдвиг-обратный перевод):
исходник
скомпилированный фильтр
пример использования (flashdevelop)
(за название извините, пожалуйста)
работает, разумеется, гораздо быстрее, чем выше описанная процедура на as3.
Какая еще технология позволит просто обработать скомпилированный код в браузере?
В каком виде еще можно вставить виджет в блог, в каком-нибудь ЖЖ?

Не говорите что флэш не нужен, скажите лучше что не знаете зачем он вам.
Надо было выделить слово «просто» =)
Заставлять пользователя устанавливать что-то дополнительное — значит создавать препятствие к популяризации своего приложения или сервиса. Так уж вышло, что флэш — почти дефолтная платформа для разработчиков рассчитывающих каким-то образом не массовость.
А как у юнити с доступом ко всяким веб-камерам и микрофонам?
все отлично.
будет идти по дефолту для начала на андройде.
а как у проверенной рынком технолигии флэш с этим? айфоны и все такое
> а как у проверенной рынком технолигии флэш с этим? айфоны и все такое

Хреново конечно. Но альтернативы пока нет, к сожалению.
Я надеюсь вы правильно поняли мою позицию: я не фанат флэша, просто пока, в неком специфичном списке задач, без него никуда…
Флеш, hue.

По сабжу действительно странно. В пятой версии ещё не работал.
факт — есть факт.
Когда-то были проблемы с текстом, пришлось долго разбираться…
UFO landed and left these words here
Дело в том, что вы не разобрались в работе ColorMatrixFilter.

При помощи данного фильтра невозможно решить вашу задачу в принципе, потому что он работает в системе RGB и не ведет перерасчет каждого пикселя в систему HSB (HSL, HSV). В результате работы ColorMatrix получается что-то вроде наложения желаемого цвета поверх исходного с 50% прозрачностью.
Это я подозреваю.

Но смущает не столько ColorMatrixFilter, сколько то, как (по сути — он же) выглядит в самом флэше.

Когда ты берешь, выбираешь объект и добавляешь к нему фильтр «Adjust color» с параметром «hue», то ожидаешь увидеть правильный и корректный hue, не вдумываясь «как оно там работает».
Еще раз повторю — когда во всех граф. редакторах этот эффект называется «hue», то видя аналогично названный фильтр во флэше — ожидаешь обычного его действия.

Назвали бы его PseudoHue — вопросов бы не было.

А так — использовали общепринятый термин, а фильтр сделали с только ему понятным результатом работы.
И, кстати, не мешало бы в статье, указать, что ваш косяк то, по сути, а не адоби.

PS: Можно я тут не буду затирать про то, почему инструмент работает именно так, что такое movieclip, и почему по другому не получится ну никак?
А давайте.

Почему я могу в фотошопе применить фильтр сдвига hue к любой картинке, но не могу сделать тоже самое во флэше?

Флэш-объект — эта та же картинка (но которая может двигаться). Что мешает ко всем пикселям этой картинки (а ведь в конечном итоге мувик все равно преобразуется в пиксели) — применить нормальный hue, такой же как применяют все графические редакторы?
Что мешает сделать как везде — перевести все пиксели RGB в HSL, выполнить поворот и перевести обратно в RGB?

Фильтры с попиксельной работой во флэше давно есть (тот же блюр). Никто не мешает сделать «правильный» hue.
> При помощи данного фильтра невозможно решить вашу задачу в принципе, потому что он работает в системе RGB и не ведет перерасчет каждого пикселя в систему HSB (HSL, HSV). В результате работы ColorMatrix получается что-то вроде наложения желаемого цвета поверх исходного с 50% прозрачностью.

Странное утверждение. ColorMatrixFilter — обычная матрица, не более, используется для преобразования RGBA значений. Ничто не мешает в одной матрице задать все преобразования.

beesbuzz.biz/code/hsv_color_transforms.php — тут описано по шагам
www.quasimondo.com/archives/000565.php — готовый AS класс
Вы ошибаетесь. СоlorMatrixFilter — это не матрица, а фильтр. С его помощью невозможно манипулировать значениями в режиме HSB, только в режиме RGB. А матрица, о которой вы говорите, позволяет применить к каждому из значений rgba либо множитель, либо смещение. Стоит-ли говорить, что с помощью этих двух операций нельзя преобразовать RGB в HSB сместить одно значение и конвертировать обратно.

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

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

Господи ну курите мануалы наконец, вдыхайте полной грудью интернеты, прежде чем открывать страшную правду на Хабре.
Orion, поменьше пафоса!

Есть такое понятие — поворот (сдвиг) «hue». И оно должно и в Африке работать одинаково. Применяя hue=120 к объекту цвета 00FF00 я должен получать 0000FF и точка.

То, что во флэше «hue» работает используя неподходящие алгоритмы — это ведь не моя проблема, верно?

И что за фразы про белую заливку? Если белый/серый цвет сдвинуть по hue — ничего не изменится.

Вы вообще не путаете два понятия — поворот hue и наложение цветового RGB-фильтра? Возьмите любой редактор и поворачивайте hue — сможете получить любой цвет из зеленого (в пределах изначальной saturation и luminance, естественно).
>Есть такое понятие — поворот (сдвиг) «hue». И оно должно и в Африке работать одинаково. Применяя hue=120 к объекту цвета 00FF00 я должен получать 0000FF и точка.

>То, что во флэше «hue» работает используя неподходящие алгоритмы

Нет не точка. Есть слово hue в программе Flash, да так уж повелось, здесь это слово не значит «тоже самое что фильтр HUE в Adobe Photoshop», более того, если мне не изменяет память во Flash данная возможность появилась еще до того как этот пакет стал принадлежать компании Adobe. Если вы считаете, что любое упоминание этого должно означать «как в PS», то вы не правы.

По сути все эти сдвиги, как вам сказали выше есть GUI для ColorMatrixFilter в программе. Почему не по другому, потому что, применяется на movie clip, грубо говоря неизменямый объект (ересь конечно, но в данном разрезе так и есть). Т.е. нельзя изменить instance movieclip, т.к. по сути это только отображение, единственное, что мы можем сделать, этот положить сверху «цветное стелкышко».

Есть желание иметь true hue юзайтеBitmapData или ByteArray для соответвующих попиксельных преобразований.

Еще раз, повторюсь, рискуя получить порцию минусов, инструмент надо знать, а не писать «WTF а что это не как в фотошопе!». И еще раз скажу пост не о чем, автор не в теме и поднял панику на абсолютно пустом месте. Все равно что сказать какого фига CSS не использует С style написания или почему HTML текстовый, а не бинарный формат. Наверное были причины.
Пост дополнил (см. конец).

Однако, дело не в «как в PS». Абсолютно все редакторы понимают под сдвигом hue именно то, что и есть — сдвиг цветового оттенка. Сдвиг зеленого на 120 градусов получит чистый синий по любой терминологии.

Так что это не «не как в фотошопе», а «не как ВЕЗДЕ». У «hue» есть строгое определение — en.wikipedia.org/wiki/Hue

То, что применяется во флэше — это просто не hue. Это попытка сделать hue, но ущербными инструментами.

По поводу «неизменяемого объекта» и «цветного стеклышка» — нифига! Во флэше есть фильтры размытия. Которые работают на пиксельном уровне, т.е. изменяют объект. Равно как и текущая реализация «hue» — это-таки не «цветное стеклышко», т.к. если бы это было так, то из зеленого можно было получить только разной степени зеленый (т.к. накладывая цветной светофильтр вы никогда не получите цвет, которого не было в оригинале).

Так что суть остается та же — во флэше вместо hue используется костыль, который работает не как ожидается и может внести смуту. И сделано это так, потому что авторы флэша просто не сделали функционал для работы с HSL-пространством.
Авторы много, что не сделали по сабжу. Но, сдается мне, что сделав всё, получился бы этакий рилтайм Premiere. А это, согласитесь, абсолютно неюзабельно.

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

Вас же смутило то, что фильтр назвали наиболее близким по смыслу словом. :)
Меня смутило то, что мне нужен был конкретно «hue». Его я нашел и заюзал. А на деле он оказался не совсем «hue». :)

И сделав HSL-функции мы совсем не превратим флэш в премьер. Так что не вижу тут никакой проблемы.

А по поводу «откусывания заливок» — к этому очень быстро привык и считаю очень удобным. Но к топику это отношения не имеет.
Я конечно дико извиняюсь, потому что ничего не смыслю во flash и action script, но неужели нельзя самому элементарно считать HUE без всяких там процедур? Кода то на 5 строчек…
Может потому-что считать нужно на всех элементах, или доверить дело флешу — ему сказал вот у всех объектов тут сделать hue…
Для этого нужно:
1) конвертануть векторный movie clip в bitmap
2) обработать каждый пиксель вручную (применить для всех единый фильтр — не получится)

Средствами action script это будет весьма медленно.
Ну я же говорил, что не бельмеса во флеше не смыслю )) Я с точки зрения классического прикладного программирования говорил. Спасибо что объяснили, теперь понятно в чем сложность. Тогда да, неприятный баг имеет место быть.
А нельзя рисовать градиент программно и сдвигать hue стопцвета только?
нам с hue приходилось разбираться, когда заказчик хотел сделать поиск по всяким комплиментарным, сплит-комплиментарным цветам к заданному. пока разбирался в вопросе, накатал класс для Actionscript: diomas.ru/2010/04/30/color_wheel/
пользуйтесь на здоровье
Sign up to leave a comment.

Articles