Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.06;
Скачать: CL | DM;

Вниз

Нелинейная прозрачность.   Найти похожие ветки 

 
Карелин Артем ©   (2002-10-23 14:40) [0]

Есть картинка: темно-красное пятно на черном фоне. Если засунуть ее в 3D MAX, подстелив ее же в альфа-канал, то пятно будет очень даже выделяться на бэкграунде. У меня не получается добиться такого эффекта. Я делаю альфа-канал по формулам преобразования в оотенки серого, по усреднению цвета, но результатом моих преобразований является едва заметное красноватое пятнышко.
Законы рассчета альфы по цветовым составляющим в Максе явно далеки от линейных.
Вопрос в том, какими формулами следует пользоваться для рассчета альфы в случае не очень ярких рисунков и чтобы они были не слишком "полупрозрачными".


 
Alx2 ©   (2002-10-23 15:07) [1]

Не знаю, поможет ли это:

=================================
Григорьев Антон
10.06.99

Найти меня можно по адресу duker@ipmt-hpm.ac.ru
или grigorievab@mail.ru

.................
.................
.................
.................

SL[X].rgbtRed:=(Transparency*SL[X].rgbtRed+(100-Transparency)*GetRValue(_TranspColor)) div 100;
SL[X].rgbtGreen:=(Transparency*SL[X].rgbtGreen+(100-Transparency)*GetGValue(_TranspColor)) div 100;
SL[X].rgbtBlue:=(Transparency*SL[X].rgbtBlue+(100-Transparency)*GetBValue(_TranspColor)) div 100
{ Предыдущие три строчки - реализация алгоритма смешения цветов
Pr:=(Pa*Wa+Pb*Wb)/(Wa+Wb), где Pr - результирующий цвет,
Pa и Pb - исходные цвета, Wa и Wb - веса этих цветов.
У нас в качестве Pa берётся цвет пикселя скопированной с экрана картинки,
В качестве Pb - заранее заданный цвет TranspColor, Wa=Transparency,
Wb=100-Transparency. Очевидно, что эту операцию необходимо выполнить для
каждого из основных цветов в отдельности.
Здесь открывается широкое поле для деятельности. Можно, например, сделать
Transparency не постоянным, а зависящим от координаты - получится градиентная
прозрачность. Или можно в качестве Pb взять не фиксированный цвет, а цвет
пикселя другой картинки - получится окно, фоном которого служит
полупрозрачная картинка. В конце концов, можно изменить алгоритм смешения
цветов, и тогда откроются новые возможности.

Кстати, вот пример градиентной прозрачности:
SL[X].rgbtRed:=((CH-Y)*SL[X].rgbtRed+Y*GetRValue(TranspColor)) div CH;
SL[X].rgbtGreen:=((CH-Y)*SL[X].rgbtGreen+Y*GetGValue(TranspColor)) div CH;
SL[X].rgbtBlue:=((CH-Y)*SL[X].rgbtBlue+Y*GetBValue(TranspColor)) div CH;
Хочу добавить, что это смотрится нормально только в режимах True Color.
High Color для этого недостаточно. А в режимах, худших, чем High Color,
полупрозрачные окна выглядят страшнее, чем ядерная война.
}
================================


 
Карелин Артем ©   (2002-10-23 15:07) [2]

Формула видимо включает в себя экспоненту. Только трудновато у меня с выводом таких формул :(


 
Карелин Артем ©   (2002-10-24 09:49) [3]

А вот что я придумал:
альфа составляющая пусть будет функцией от насыщенности цвета. Часто берут альфу равную насыщенности. Мне же надо было нечто кривое. Ну и в итоге родилась следующая функция:
|C*(k-1) |
А=255*Ln|-------+1|/Ln(k)
| 255 |

Где С - насыщенность цвета (есть достаточно много методик рассчета)
K - к-т, отвечающий за нелинейность функции.

P.S. Математика делает наш сон спокойным, а кошельки пухлыми.



Страницы: 1 вся ветка

Текущий архив: 2003.02.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-15702
Юный_программер
2003-01-27 14:40
2003.02.06
Как создать подобие планировщика? как запускать в определенное


14-15900
Tsr
2003-01-17 00:36
2003.02.06
Большие размеры пустых файлов


6-15815
Свой
2002-11-19 12:23
2003.02.06
IdHTTPServer


4-15988
Ipx
2002-12-24 08:38
2003.02.06
Как поместить панель задач (если возможно) в любое место (по высо


7-15966
saf
2002-11-27 16:48
2003.02.06
Принтер