Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Создать анимацию крыльев птицы |
Автор: Mr_Nuke 31.8.2012, 11:08 |
Всем привет. Столкнулся с задачей, необходимо создать анимацию на дельфи, анимировать необходимо птицу, что б она махала крыльями. Первый курс, нужно использовать простейшие методы рисования на канвасе. ![]() Попытался нарисовать дугу, через arc, и вращать ее. Не получилось... квадрат, в который она вписывается, не вращается, а просто уменьшается. Тогда была другая идея, изменять размеры квадрата, и начальные/конечные точки рисования дуги. Рассчитал конечное положение "крыла", нарисовал дугу. Потом от конечных координат отнял начальные, и вычислил шаг. ![]() Но уже на втором шаге все расплывается. Не могу найти алгоритм изменения координат. Или может есть более легкий способ? ![]() |
Автор: ksnk 31.8.2012, 11:27 |
Mr_Nuke, Нарисуй несколько картинок, отсканируй и меняй по кругу. Получится чиста артхус ![]() |
Автор: DarkProg 31.8.2012, 11:51 |
Ну зачем же так, можно использовать любые средства рисования. А так, мой совет таков, попробуйте вычислить две функции для x и для y одного крыла и другого, я понял смысл, того что вы хотите но там кажется двумя дугами не обойтись. Рисовать крылья надо от центра птички(т.е. взять за начало координат). Так с ходу накидать не смогу формулу, надо подумать... |
Автор: Pavia 31.8.2012, 11:53 |
Самая простое это спрайтовая анимация. Заготовил несколько изобажений и выводишь по круг. И это будет выглядить лучше, чем то что вы нарисуете линиями и окружностями. |
Автор: DarkProg 31.8.2012, 11:54 |
Взмах крыльев, это по идее: уменьшение округлости крыла, т.е. надо взять увеличить радиус, но уменьшать длинну дуги. |
Автор: Mr_Nuke 31.8.2012, 12:08 | ||||||
Пока отредактировал первый пост, добавил картинки. Сейчас почитаю комментарии, отпишусь ![]()
Две функции?? Получается, меняться должны сами функции. Мне кажется, это еще тяжелее, чем арки высчитывать. Появилась адовая идея, просчитать массив точек для крыла, и уже эти точки поворачивать по формуле картинку не хочу, лаба заключается не в этом, пошлют с картинкой
Примерно так, но как раз должна меняться левая точка крыла (если говорить про левое крыло) Вот сейчас, на рисунке это видно. И вот хз, как это сделать ))
А вот я не понял... Мы говорим про дуги, не про линии? Которые еще должны и вращаться... Или ты имеешь введу типа массива точек? |
Автор: Pavia 31.8.2012, 12:21 | ||
Я имею в виду обычную скелетную анимацию. http://www.youtube.com/watch?feature=fvwp&NR=1&v=Fmp7f7BKE74 |
Автор: Mr_Nuke 31.8.2012, 12:24 | ||
А если чуть-чуть по подробней? |
Автор: ksnk 31.8.2012, 13:08 |
Mr_Nuke, Анимация - это набор картинок. Для фигуры из палочек - не нужно заморачиваться функциями трансформации одной картинки в другую - нужно их рисовать каждый раз заново. В качестве примера, все-таки, посоветую нарисовать последовательность "маха" крыльями на бумаге. В крайних положениях и в паре положений в середине. Померить картинки линейкой... Получится что-то вроде массива реперных точек для каждого кадра (край крыла, центр крыла, тело птицы) через которые можно прорисовать крыло, к примеру, в помощью кривых Безье. |
Автор: Mr_Nuke 31.8.2012, 13:43 | ||
Ну как бы может это и логично, но идея лабы - найти алгоритм изменения |
Автор: Pavia 31.8.2012, 23:31 | ||
Идея лабы это проверка знаний которые вы должны были получить, а не в выдумывании чего либо. По поводу линейки. Художников учат делать эскиз по линейке. При создании анимации персонажа используют костюм, который определяет положение человека. Т.е тоже своеобразная линейка. Либо в редакторе создается модель. Хотя типично модель, в редакторе рисуется, обводится по фотографии. После уже делается анимация. Это либо ключевая анимация, либо спрайтовая анимация, либо скелетная анимация. |
Автор: _Y_ 1.9.2012, 09:54 |
Может такая идея подойдет. Находим на крыле суставы. Кости относительно точек крепления движутся по окружностям - описываем положение суставов. Крыло углов не имеет - аппроксимируем суставы, например полиномомом или сплайном |
Автор: Mr_Nuke 2.9.2012, 10:32 |
_Y_, Да, вот у меня была как раз это было последней идеей, но в процессе реализации выяснилось, что можно заменить кривые на прямые линии. Так что живем ![]() |