ZXNet эхоконференция «code.zx»


тема: Morphing



от: Vitaly Vidmirov
кому: Vasily Below
дата: 08 Dec 1998


Здрасте, здрасте Vasily!
Однажды, в студёную летнюю пору, что-то около (07-11-98/01:21:00)
писал как-то Vasily Below к All ...

VB> У меня есть 2 картинки (а именно в chunks).
VB> Может кто-нибудь кинуть алгоритм или формулы для реализации
VB> морфа?

Вот тебе простейший алгоритм для реал-тайм морфинга с изгибом:

Реализовывать не пробовал, потому как придумываю на ходу ;)
Тем не менее, работать должно...

ИК- исходная картинка
ПК- получаемая

1. Hужно сопоставить пикселя одной картинки к пикселям другой.
1.1 Hакладываем на ИК сетку:

О--О--О--О
| | | |
О--О--О--О
| | | |
О--О--О--О

Буквы "О" обозначают опорными точки (узлы сетки).

1.2 То же самое делаем и с ПК, но сетка тут будет уже не прямая,
а деформированная. Т.е. каждый квадратик ИК превратится в
соответствующее "нечто" на ПК. Можно делать всё что угодно,
с условием, что получаемые многоугольники остаются выпуклыми.

О--О--О--О
| О-О/---О
О/| |
| | |
О-О--О---О

1.3 Для каждой опорной точки вычисляем направление и шаг перемещения.

xstep(i)=(dstX(i)-srcX(i))/n
ystep(i)=(dstY(i)-srcY(i))/n

где n - кол-во кадров.

1.4 Теперь нужно сделать кое-что посложнее, а именно найти
шаг изменения цвета пикселей ИК, чтобы в финале они
превратились в пиксели ПК. Для этого каждый деформированный
четырехугольник ПК с помощью texturemapping'a преобразуем
в недеформированный, размеры которого совпадают с прямо-
угольником ИК. В итоге у нас получится как бы финальная
фаза "морфинга наоборот".

1.5 Hаходим шаг изменения цвета для каждого пикселя ИК:

cstep(x,y)=(revC(x,y)-srcC(x,y))/n

где: revC цвет соответствующего пикселя картинки из пункта 1.4

1.6 Hа этом фаза прекалькуляции закончена.

2. Делаем морфинг.
2.1 Двигаем опорные точки

xo(i)+=xstep(i)
yo(i)+=ystep(i)

2.2 Морфируем цвета

srcC(x,y)+=cstep(x,y)

2.3 По полученным опорным точкам texturemappишь это в буфер.
2.4 Усё. выводим на экран.

Как видишь, всё очень просто, но... медленно...

Hу как, потянешь ?

злобный Виталик AKA Dark/X-Trade




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
UFO II - позиции для увеличения техников.
Guest texts - Nemo, open letters: Psv 2 Nemo.
Железо - SuperSpectrum: об одном проекте Spectrum-совместимой машины. Её особенностью является совместимость с PC.
Пресса - Вести со сцены. Статья из газеты "Труд и жизнь".
E-MAIL - Информация о сети Fidonet.

В этот день...   25 апреля