Главная страница
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.019 c
3-15507
bambina
2003-01-20 16:34
2003.02.06
kak dobavit novuyu zapis v tablicu Paradox?


3-15495
Helpme
2003-01-21 05:18
2003.02.06
dbcombobox


8-15763
malkolinge
2002-09-28 18:34
2003.02.06
Распознавание речи


1-15564
Anbezr
2003-01-28 16:25
2003.02.06
Переопределение констант


1-15591
_saha_
2003-01-28 21:59
2003.02.06
Есть вопросик