Отговори на тема  [ 37 мнения ]  Отиди на страница Предишна  1, 2, 3  Следваща
RGB - алгоритъм за плавно преливане. 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Ъ? Това пък как ще го докарам. Ти съвсем ми усложни живота :)

Ще си настройва очите към RGB. Щото на мен ми е по лесно.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Авг 10, 2009 5:07 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
За този алгоритъм дето го постнах и гамата се смята лесно. Не съм я изследвал как я смята но е нещо от сорта на обратно пропорциолно. В смисъл цвета с най-малко запълване се усилва най-много. Пример : жълто R=255, G=255, B=0 -> бледо жълто R=255,G=255, B=241; оранж : р=255, г=110, б=0 -> малко по-светло става р=255, г=115, б=15. Може и зависимост да се извади ама сега не ми се смята.


Пон Авг 10, 2009 5:15 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Дек 19, 2004 6:26 pm
Мнения: 1628
Местоположение: Сливен
Мнение 
Художникът каза, че дори 5-6 стойности на PWM за всеки цвят стигат.
Няма нужда да са 256. По-важно било областите на преливане............
Не я разбирам тази наука............. :cry:


Пон Авг 10, 2009 5:22 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
Е, аз не съм художник ама имам Corel. Ама си е кеф да работиш с художник. Имал съм тази чест и чак не съм можел да повярвам че нещото мога да го направя на компютър. Особено като ми каже "направи го с една йота по светло" - кеф. Тази мерна единица колко съм я търсил в менютата :)


Пон Авг 10, 2009 5:26 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Сря Апр 05, 2006 9:52 pm
Мнения: 877
Местоположение: Разград
Мнение 
bateAz написа:
Цецо, абстрахирай се от RGB, окото е по-толерантно настроено към яркост / наситеност / фаза ( не помня как се казваше точно терминът ... ) Но пак си е 3Д


Да не би да имаш предвид HSB (Hue, saturation, brightness) цветови модел? И аз мисля, че с него ще се генерират най лесно
всички цветови комбинации, фазата(цветът) се променя от 0 до 360°, а яркостта и насищането от 0 до 100. Едва ли обаче ще може да се мине през всичките 1000000 комбинаци, никой нама да има нерви да ги гледа всичките.
От модела HSB има формулки и код даже, за преобразуване в RGB и към PWM-а.

http://colorschemedesigner.com/


Пон Авг 10, 2009 5:29 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Ще пробвам отначало простия алгоритъм с дъгата. Ще кажа какво се е получило. Като ми остане време да го пробвам :)

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Авг 10, 2009 5:41 pm
Профил ICQ
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Чет Ное 20, 2008 1:49 pm
Мнения: 276
Местоположение: Бургас
Мнение 
Аз съм правил нещо такова, не е чак толкова трудно, както се опитват да те плашат колегите. :)
Ползувам таймер 0, за да генерирам модулираните импулси. За целта го чета постоянно и сравнявам текущата му стойност със зададените ми стойности за яркост на трите цвята. Получава се леко колебание в широчината на импулсите, ама без инструменти не се вижда.
Самото преливане реализирам, като след всеки импулс отделям няколко цикъла от процесора за пресмятане и зареждане на нови стойности. След това генерирам нов импулс, после пак смятам и зареждам нови стойности и така съм го зациклил.
С подходящо инкрементиране и декрементиране може да се получи не само дъга - зависи кой цвят накъде местиш. Така съм направил постепенна смяна към различни цветове, фейд ин, фейд аут и подобни. Като че ли бавната дъга е най-приятният ефект от всичките. Естествено, сложил съм и бутончета за смяна на програмите - все пак и потребителят трябва да има някакъв контрол. ;)
За дъгата, го правя така: инициализирам от пълен мрак като постепенно светвам червеното. След това бавно загасвам червеното, като в същото време пак така бавно светвам зеленото. Същата процедура след това със зеленото и синьото. После със синьото и червеното. И така зациклям.
Като разширение на този алгоритъм, може след инициализацията първо постепенно да светнеш зеленото и след това да угасиш червеното и така нататък, но тогава ще се получават разлики в яркостта.
Според мен, ще ти е най-лесно да работиш с 24-битов цвят, защото все пак тея машинки мислят 8-битово. ;) Аз поне така правя ... Дори и да имам данни за цвят с по-малко битове, първо си ги пресмятам до 24-битови и тогава ги правя каквото съм решил.
За съжаление, в момента прототипа съм го разпарчосал, за да ползвам частите за друг, така че не мога да демонстрирам. Но ако пожелаеш, ще го събера наново и ще го снимам.
Само едно не мога да направя все още и то е преобразуване от HSB към RGB. Трябва ми, за да мога да направя програма, при която да се задава цвят чрез потенциометър, като ъгълът на завъртане означава цвят от палитрата. Засега съм го направил като чета левите девет бита на АЦП, цепя го на три и зареждам полученото в съответните байтове за цвят, но така се получават едни накъсвания, не ти е работа. Някой да има идеи ?

_________________
Digitally yours: Optron


Вто Авг 11, 2009 10:16 am
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пет Окт 05, 2007 8:34 pm
Мнения: 76
Местоположение: Русе
Мнение 
Колега виж този пример за плавно преливане http://www.youtube.com/watch?v=OxDnNIoGRlw
Теоретично имаш 255х255х255 цвята (използват се от 1 до 255 бита шим за всеки от трите светодиода). PWM е софтуерен! Както са ти отговорили колегите по-горе отваряш Corel и гледаш палитрата (стълбчето с цветовете от червено до червено), след това като плъзгаш скролера гледай цифрите (битовете) в полетата на R G B. Те започват от 0 0 0 при черно и 255 255 255 при бяло. За твоята гимнастика трябва да направиш няколко " стълбчета" за да получиш "плавното" преливане.


Сря Авг 12, 2009 10:41 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение 
http://www.alvyray.com/Papers/PapersCG.htm#HWB
HWB-A More Intuitive Hue-Based Color Model (with Eric Ray Lyons)

the journal of graphics tools, Vol 1, No 1: 3-17, 1996

ABSTRACT: The two most common color selector models, other than RGB (Red-Green-Blue), are the hue-based HSV (Hue-Saturation-Value) and HSL (Hue-Saturation-Lightness) color models. It is shown that both of these models are flawed. A closely related model, HWB (Hue-Whiteness-Blackness), is introduced that avoids the flaws, is slightly faster to compute, and is very easy to teach to new users: Choose a hue. Lighten it with white. Darken it with black. That whitening is not the complement of blackening is explained. (The two pages below should be consulted for fixes to errata in the paper.)

C code implementing the color transforms in the paper:

HWB to RGB transforms
http://www.alvyray.com/Papers/hwb2rgb.htm

HSV to RGB transforms
http://www.alvyray.com/Papers/hsv2rgb.htm


Сря Авг 12, 2009 11:34 am
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Фев 06, 2007 2:45 am
Мнения: 263
Мнение 
Преди няколко години правих трифазно RGB с 12F508 (тогава с такова разполагахме във фирмата) :). Идеята беше да се постигнат колкото се може повече цветове с плавно преливане, но нямаше възможност за контрол. 7-битов PWM, като трите цвята са дефазирани на 120 градуса. 128-те стойности за PWM ги бях сложил в една таблица, като се изменяха от 0 до макс по гаусова крива (едната половина на камбаната). Таблицата се спретва за 2 минути в ексел. Имаше моменти, в които се получаваше дори и някакъв вид бяло, като за непретенциозно приложение беше много доволно.


Нед Авг 16, 2009 11:55 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
А аз го направих вече. Направих една "дъга". Натурях и разни други преливащи програмки, дето ги сътворих ей тъй "на око". Сложих и разни прости разноцветни премигвания. Абе стана прилично. Важното е, че човека си го харесва, много е доволен. Аз също, щото ми се махна тая работа от главата :).

Благодаря на всички за идеите :)

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Авг 17, 2009 8:44 am
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение 
Първо решаваш как искаш да се преливаш - това става най-лесно така: Отваряш пропъртитата на десктопа на Win и местиш мишката по петното с много цветове - гледаш резултантния цвят, докато решиш кое движение на мишката те устройва.
После измисляш алгоритъм да ти генерира горе -долу последователността на RGB през които си минал (виждат им се стойностите, докато местиш мишката)
После го тестваш
И накрая го публикуваш тука :)


Пон Авг 17, 2009 3:25 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Е аз така направих де. Ама няма да го публикувам тука, всеки знае как се прави цикъл на C. :) Няма нищо интересно в него.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Авг 17, 2009 5:05 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение 
Цецо написа:
... всеки знае как се прави цикъл на C. :) Няма нищо интересно в него.

Имам спомен, че на времето бях правил някаква сложнотия, която не стана много добре (това, за разглеждането на готова палитра ми дойде на ум по-късно).
Щеше да ми е интересно да видя :), няма значени, :).


Пон Авг 17, 2009 6:33 pm
Профил ICQ WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Авг 25, 2009 12:06 pm
Мнения: 1
Мнение RGB PWM модулация
Ето едно примерче за PWM модулация на трите цвята от 0 до 255:



void pwm_rgb(int8 time, int8 duty_r, int8 duty_g, int8 duty_b)
{

int8 i, time_off_red, time_off_green, time_off_blue =0;
int8 time_on_red, time_on_green, time_on_blue =0;

time_on_red = duty_r;
time_off_red = (250 - duty_r);
time_on_green = duty_g;
time_off_green = (250 - duty_g);
time_on_blue = duty_b;
time_off_blue = (250 - duty_b);

for (i=1; i<=250; i++)
{
delay_us(time);

if (time_off_red == i)
{
output_high (PIN_A0);
}
if (time_off_green == i)
{
output_high (PIN_A1);
}
if (time_off_blue == i)
{
output_high (PIN_B1);
}
}
output_low (PIN_A0);
output_low (PIN_A1);
output_low (PIN_B1);
}


а за различните цветове може да се ползва цикъл, който увеличава всеки цвят по-отделно като почва от R=0, G=0, B=0 и завършва с максималните им стойности.


Пон Сеп 14, 2009 9:56 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 37 мнения ]  Отиди на страница Предишна  1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни