![]() |
|
||||||||||
|
|||||
|
Есть игра, в которой сражаются между собой два персонажа. Необходимо написать движок для реализации анимации боя. При этом аниматор не должен взаимодействовать с программистом, т.е. он может создавать скелеты любых сложностей, от амебы до осьминога и описать анимацию для этого скелета. При этом должна быть возможность в любом из кадров анимации отсылать события или команды, чтоб движок мог их перехватывать и обрабатывать.
Еще одно требование: скелет - это просто набор контейнеров, в котором нет анимации, так же в скелете не обязательно должна быть графика, т.е. сначала должен загружаться скелет, затем на основе каких-то конфигов определяется необходимая для него графика, скачивается, добавляется в определенный контейнер, только затем обрабатывается анимация. Вопрос сложный и имеет несколько способов реализации, но мне нужен наиболее оптимальный, поэтому прошу советов у профи. Я полагаю, что должна быть папка, в которой хранятся все скелеты (swf-файлы), для каждого из которых есть конфиги графики (xml-файлы) и конфиги анимации (xml-файлы), либо оба конфига в одном файле. Только как правильно организовать эти xml-файлы и является xml лучшим решением?
__________________
Forge of Empires |
|
|||||
|
Не показалось ли тебе правильным описывать анимацию не XML файлом, а собирать непосредственно во флеше? Там для тебя даже кинематику прикрутили, чтобы всё болталось - пользуйся на здоровье. А потом просто вызывай gotoAndPlay("criticalStrike"); где criticalStrike метка фрейма с которого надо начать проигрывание анимации.
Кончено метод с XML файлами для художников, которые всё это дело будут собирать, без сомнения идеальный способ потратить кучу времени =)
__________________
if (love is true) break my.heart; |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цитата:
таким-же образом создаю остальные секвенции. затем jsfl-скриптом вставляю их в sfw-либу персонажа. Анимацию делаю чем-то вроде http://blog.hexagonstar.com/animatedbitmapclass/ Можно еще более автоматизировать - на входе max со всеми вариантами анимации -> генерация секвенций по отдельным папочкам (например кадры от 0 до 29 в папку имя_ макс_файла_ direction_up_walk.. кадры 30-60 имя_ макс_файла_ direction_up_left_walk.. итп.)-> обрезка -> jsfl внедрение битмап и xml -> имя_ макс_файла.swf (swc) либо если итоговый размер битмапы позволяет - все варианты анимации в одну битмапу.
__________________
Отряд Котовскага |
|
|||||
|
Я так понял, что здесь идёт речь о сражении двух персонажей с боку (как в dwar'ах) и автор хочет описать шевеление ручками, в виде xml файла.
p.s. Cами пользуемся jsfl для сбора персонажей отрендеренных в 3d studio max только в мувики с подписанными кадрами.
__________________
if (love is true) break my.heart; |
|
|||||
|
Цитата:
Вот пример: В бою встречаются 10 рукий мутант (А) и шарик от пин понга(Б) со своим животным - пылесосом(В). Каждый обладает своим набором анимаций, причем у А их более сотни,у Б/В по одной. Добавление этих сущностей в приложение не должно вызвать никаких изменений в систему анимации, ни одного вмешательства в скелет А/Б/В ни под каким предлогом. В любой момент времени должна быть возможность добавить/ изменить количество или вид анимаций объектов А/Б/В, например добить пылесосу (В) новый супер удар или фаталити для шарика от пин понга (Б).
__________________
Forge of Empires |
|
|||||
|
Я бы наверное сделал так: Файл скелета состоит из проименованных контейнеров для которых уже откатана анимация и в которые попадают части от модели. Хотя тут тоже могут возникнуть проблемы (при смене ключевых кадров части тела могут и пропасть). XML файл для одного скелета можно попробовать и описать, но я не представляю как он должен выглядеть, чтобы движения были натуральными.
__________________
if (love is true) break my.heart; |
|
|||||
|
Не хочу тебя обидеть, но кажется ты не до конца понимаешь принципов правильной архитектуры. Анимация не может быть встроенной в скелет. Допустим у тебя есть персонаж рыцарь и разбойник. Скелет, понятное дело, у них одинаковый, но анимация у каждого своя. При твоем подходе нужно было бы все анимации (рыцаря, разбойника, ремесленника, кузнеца и т.д.) хранить в одном файле. Не удобно редактировать и громоздкий файл. Либо можно сделать несколько файлов, у которых будет своя анимация, но при этом в каждом будет одинаковый скелет. Но так нельзя, потому что копипаст - отстой.
__________________
Forge of Empires |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
Художнику удобно работать во флеше, пусть там и работает. Он берет скелет и перемещает его узлы. Потом мы берем и для этого скелета формируем xml(свой бинарный формат было бы компактеней) c помощью jsfl. Что он содержит? Координаты узлов скелета для каждого кадра каждой секвенции "идти","бить","умирать". Так мы уходим от gotoAndPlay("секвенция");
Теперь, чтобы у разбойника и, скажем, рыцаря, были и общие анимации и разные анимации, нужно сделать что-то типа наследования, т.е., чтобы в этом xml было сказано: рыцарь, наследует анимации разбойника, но со своей анимацией блока, своей анимацией смерти + есть еще один узел скелета: щит, для каждой из секвенций вот координаты узла "щит". улавливаешь?
__________________
мой пустой блог |
|
|||||
|
про jsfl и формирования xml и так было понятно. На счет своего формата я подумаю.
А вот на счет наследования хотелось бы продолжить )
__________________
Forge of Empires |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
ну это... деньги-то тебе платят =)
Ну в конечном итоге должно быть что-то типа: <unit id="bandit">
<idle>
<head x="10,25,45,10" y="10,25,45,10"/>
<body x="..." y="..." />
<leftpalm ... />
<rightpalm ... />
...
</idle>
<attack>
<head x="... y="..."/>
<body x="..." y="..." />
<leftpalm ... />
<rightpalm ... />
...
</attack>
</unit>
__________________
мой пустой блог Последний раз редактировалось iflamberg; 16.04.2010 в 18:25. |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:57. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| Data Driven , анимация , организация , скелет , структура |
|
|