Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как трансформировать Bitmap или Sprite, что бы получился 3d эффект? (http://www.flasher.ru/forum/showthread.php?t=114461)

voy22 29.07.2008 20:52

Как трансформировать Bitmap или Sprite, что бы получился 3d эффект?
 
Предположим есть Bitmap или Sprite.
Нужно его трансформировать таким образом, что бы его верхние два угла придвинулись друг к другу по горизонтали. Таким образом получается 3d эффект, как будто бы картинка лежит на плоскости - перед нами.
Это легко сделать в среде разработке - графическим редактором.
Как это сделать программно?

mre 29.07.2008 20:54

http://silin.fatal.ru
DistortBitmap

Alex Lexcuk 29.07.2008 21:18

Для такого несложного эффекта предлагаю такую схему:
Методом draw перерисовать объект в BitmapData
Затем разбить объект на BitmapData высотой в 1 пиксель.
И нарисовать эти как-бы строки на спрайт-контейнер.
Звучит не очень, однако... Работает очень быстро.
Пример:
http://dnadillo.dn.ua/mur_gallery/ac3FLA/star_war.swf
http://dnadillo.dn.ua/mur_gallery/ac3FLA/star_war.rar

der hund 29.07.2008 23:37

Чтото пытался загрузить пример из поста два дисторт битмеп, выдает ошибку. Может не так открываю эти скрипты.

TypeError: Error #1007: Instantiation attempted on a non-constructor.
at Main$iinit()


Обясните пожалуйста, каков именно алгоритм.

Я так понял это все идет перерисовка картинки по пикселям. Каким образом идут расчеты?

silin 30.07.2008 00:45

ошибка из-за того что CS3 не понимает [Embed...]
положи картинку в библиотеку и бери BitmapData оттуда (да впрочем откуда удобнее..)

алгоритм таков: разбиваем изображение на треугольники (потому как их можно исказить как угодно) и дружно плющим их, получается имитация..

полезные ссылки:
http://www.flashsandy.org/blog/disto...s-by-code.html - тот же алгоритм но более тщательно все, работает лучше
http://five3d.mathieu-badimon.com/ - просто чудо по удобству, но сейчас почему-то не доступен (404)

voy22 30.07.2008 10:56

Цитата:

Сообщение от Alex Lexcuk (Сообщение 755151)
Для такого несложного эффекта предлагаю такую схему:
Методом draw перерисовать объект в BitmapData
Затем разбить объект на BitmapData высотой в 1 пиксель.
И нарисовать эти как-бы строки на спрайт-контейнер.
Звучит не очень, однако... Работает очень быстро.
Пример:
http://dnadillo.dn.ua/mur_gallery/ac3FLA/star_war.swf
http://dnadillo.dn.ua/mur_gallery/ac3FLA/star_war.rar

Да, действительно отличная идея. Для статической анимации - то что надо. А вот для анимации в твоем аттаче смотрится не кашерно.


Часовой пояс GMT +4, время: 03:03.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.