![]() |
|
||||||||||
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А Flash давно перестал быть продуктом только для одного человека. Зато в одной программе могут работать и дизайнеры и программисты, и вместе делать продукт.
|
|
|||||
|
ветеран форума
|
to AlexDesinger:
Это немного не для этой темы и ветки вообще, но в ответ на Ваш вопрос прикрепил примерчик с реакцией на движение мыши и 3D трансформацией для Flash CS4, пример элементарный, но для старта пойдет. А as3, как по мне, то намного понятнее и правильнее во многих отношениях... сори за оффтоп
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Мне пока только одна простая идея с перспективным (типа free distort) искажением мувиклипа с полным сохранением его интерактивности пришла: применять к мувику фильтр DisplacementMapFilter. Но отрисовывать карту смещений придется динамически!!!
|
|
|||||
|
ветеран форума
|
Такая идея меня тоже посещала, единственное не могу понять какую карту смещения использовать для перспективного искажения.
Для сферического на основе градиента нашел а вот для ровного перспективного, чтоб именно плоскость получалась в итоге пока не могу разобраться. Если кто-нибудь подскажет карту, то я сделаю интерактивный примерчик с реакцией на движение мыши и искажения 3d plane с текстурой анимированного мувика.
__________________
trace("Остановите Землю, я сойду!!!"); Последний раз редактировалось Mur4ik; 20.10.2008 в 20:23. |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
http://flasher.ru/forum/showpost.php...6&postcount=31 - там пример iNils-а. Он правда карту смещений в фотошопе нарисовал - такую же предстоит нарисовать скриптом во флеше! Но у iNils только два конца прямоугольника смещены (и два линейных градиента, соответственно), а если все концы смещать (free distort) то, думаю, надо будет 4 градиента рисовать...
![]() |
|
|||||
|
ветеран форума
|
Как то сложно это все будет, мне кажется все таки решение с матрицами трансформации, разбиением на треугольники и масками для мувиклипа будет попроще.
Пока ковыряю этот вариант, если че получится покажу исходники...
__________________
trace("Остановите Землю, я сойду!!!"); |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Оно может и проще, но не представляю, как в этом случае интерактивность сохранить.
|
|
|||||
|
ветеран форума
|
Я не имею ввиду переводить мувиклипы в битмапы а потом искажать уже,
вообщем представляю себе алгоритм таким: 1. Вычисляем 4 угловые точки по которым нужно трансформировать мувик. 2. Дублируем мувиклип. 3. Искажаем мувик по первым трем точкам, по ним же рисуем тругольную маску и применяем ее к этому муву. 4. Проделываем то же но для последних трех точек. В итоге получаем мувиклип искаженный перспективно (визуально) с сохранением интерактивности (кнопки внутри него, текстовые поля и т.д.). Единственное качество такого мувика будет зависеть от количества треугольников на которые мы его делим, а чем больше треугольников, тем больше копий мувиклипов, и производительность от этого может сильно пострадать. updated: Это я ошибся на счет интерактивности, если мы дублируем клип то и допустим кнопок у нас будет больше и текстовых полей, и реагировать ихние части будут каждая по своему. Значит такой вариант (с разбиением на треугольники) не катит для интерактивности. Остается только карта смещений... Если без внутренней интерактивности то все намного проще, просто в onEnterFrame создаем битмап текущего кадра и искажаем его без всяких там масок (с помощью beginBitmapFill() ). Этот вариант подходит и для мувиков с анимацией и для видео (и потокового тоже). Но интересно добиться именно интерактивности внутри искажаемого мувика. Может есть еще у кого нибудь идеи в плане реализации этой задачи, более оптимальные чем я задумал. Кстати сложный градиент для фильтра смещения можно с помощью матриц нарисовать, но я пока не могу въехать в сам алгоритм применения этого фильтра. Это нужно спрашивать таких монстров как Silin или iNils, они точно в этой теме знают толк. ![]()
__________________
trace("Остановите Землю, я сойду!!!"); Последний раз редактировалось Mur4ik; 21.10.2008 в 03:07. |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:30. |
|
|
« Предыдущая тема | Следующая тема » |
|
|