Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.03.2012, 17:56
Samuraix вне форума Посмотреть профиль Отправить личное сообщение для Samuraix Найти все сообщения от Samuraix
  № 1  
Ответить с цитированием
Samuraix

Регистрация: Apr 2010
Сообщений: 28
Attention Заливка цветом с сохранением бликов

Здравствуйте.
Задача в следующем:
есть картинка с бликами, поверх нее я создаю Sprite залитый нужным цветом.
Естесственно, вся картинка оказывается "под" этим цветом. Для сохранения естесственности мне нужно блики (а это места картинки с цветом 0хFFFFFF условно) поднять над слоем с цветом.
Пробовал blendmode.OVERLAY, но исходный цвет спрайта искажается, что логично
Может быть, кто-нибудь сталкивался с подобной задачей или какие-то мысли есть, буду благодарен.

Спасибо.

Старый 09.03.2012, 18:09
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 2  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
ColorMatrixFilter подойдет? посмотрите плагин к твинлайту или руками забейте нужные значения.

Старый 09.03.2012, 18:31
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 3  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Код AS3:
/**
 * 
 * @param solidColorImage изображение, залитое сплошным цветом
 * @param originalImage оригинал изображения с необходимыми бликами
 * @param threshold значение порога (0...255) выше которого мы считаем цвет бликом
 * @param spotlightColor цвет добавляемого блика в формате AARRGGBB
 * 
 */
 
public function addSpotlight(solidColorImage:BitmapData, originalImage:BitmapData, threshold:uint = 0xff, spotlightColor:uint = 0xffffffff):void
{
    if (threshold > 255)
    {
        throw new ArgumentError("параметр threshold должен находиться в диапазоне 0...255");
    }
    var rect:Rectangle = solidColorImage.rect;
    var point:Point = new Point(0, 0);
    solidColorImage.threshold(originalImage, rect, point, ">=", threshold, spotlightColor, 0x000000ff);
}
Писал все прямо тут.
К неоспоримым недостаткам метода можно отнести работу с одним лишь каналом (сейчас синим, можно поменять). Это будет давать артефакты на ярких цветах вообще. Т.е. для него ярко синий или сиреневый цвета тоже будут бликами. Ярко зеленые/красные/желтые — нет.
__________________
Поймай яблоко 2!


Последний раз редактировалось Zebestov; 09.03.2012 в 18:35.
Старый 09.03.2012, 18:32
Samuraix вне форума Посмотреть профиль Отправить личное сообщение для Samuraix Найти все сообщения от Samuraix
  № 4  
Ответить с цитированием
Samuraix

Регистрация: Apr 2010
Сообщений: 28
Цитата:
Сообщение от nOobCrafter Посмотреть сообщение
ColorMatrixFilter подойдет? посмотрите плагин к твинлайту или руками забейте нужные значения.
Простите, немного не понял. К чему применить этот фильтр? Вроде как с ним работал, но в данной ситуации не вижу, как использовать..
Спасибо.

Добавлено через 4 минуты
Цитата:
Сообщение от Zebestov Посмотреть сообщение
Код AS3:
/**
 * 
 * @param solidColorImage изображение, залитое сплошным цветом
 * @param originalImage оригинал изображения с необходимыми бликами
 * @param threshold значение порога (0...255) выше которого мы считаем цвет бликом
 * @param spotlightColor цвет добавляемого блика в формате AARRGGBB
 * 
 */
 
public function addSpotlight(solidColorImage:BitmapData, originalImage:BitmapData, threshold:uint = 0xff, spotlightColor:uint = 0xffffffff):void
{
    if (threshold > 255)
    {
        throw new ArgumentError("параметр threshold должен находиться в диапазоне 0...255");
    }
    var rect:Rectangle = solidColorImage.rect;
    var point:Point = new Point(0, 0);
    solidColorImage.threshold(originalImage, rect, point, ">=", threshold, spotlightColor, 0x000000ff);
}
Писал все прямо тут.
К неоспоримым недостаткам метода можно отнести работу с одним лишь каналом (сейчас синим, можно поменять). Это будет давать артефакты на ярких цветах вообще. Т.е. для него ярко синий или сиреневый цвета тоже будут бликами. Ярко зеленые/красные/желтые — нет.
Спасибо большое! Буду применять

Старый 09.03.2012, 18:39
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 5  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
А вообще если нужно делать такое программно, то:

1. оригинал делаем grayscale
2. полученное изображение "вытягиваем" так, чтобы все, что темнее бликов стало черным
3. создаем картинку белого цвета и копируем ей в альфу любой канал (RGB) из предыдущего изображения

Получится программно созданный слой с бликами на прозрачном фоне.
__________________
Поймай яблоко 2!

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:16.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
overlay , блики , заливка

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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