Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.04.2010, 15:30
Peregrin вне форума Посмотреть профиль Отправить личное сообщение для Peregrin Найти все сообщения от Peregrin
  № 1  
Ответить с цитированием
Peregrin
 
Аватар для Peregrin

Регистрация: Nov 2006
Адрес: Hamburg
Сообщений: 195
Отправить сообщение для Peregrin с помощью ICQ
Question Data Driven Design: Animation

Есть игра, в которой сражаются между собой два персонажа. Необходимо написать движок для реализации анимации боя. При этом аниматор не должен взаимодействовать с программистом, т.е. он может создавать скелеты любых сложностей, от амебы до осьминога и описать анимацию для этого скелета. При этом должна быть возможность в любом из кадров анимации отсылать события или команды, чтоб движок мог их перехватывать и обрабатывать.
Еще одно требование: скелет - это просто набор контейнеров, в котором нет анимации, так же в скелете не обязательно должна быть графика, т.е. сначала должен загружаться скелет, затем на основе каких-то конфигов определяется необходимая для него графика, скачивается, добавляется в определенный контейнер, только затем обрабатывается анимация.

Вопрос сложный и имеет несколько способов реализации, но мне нужен наиболее оптимальный, поэтому прошу советов у профи.

Я полагаю, что должна быть папка, в которой хранятся все скелеты (swf-файлы), для каждого из которых есть конфиги графики (xml-файлы) и конфиги анимации (xml-файлы), либо оба конфига в одном файле. Только как правильно организовать эти xml-файлы и является xml лучшим решением?
__________________
Forge of Empires

Старый 16.04.2010, 02:15
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 2  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Не показалось ли тебе правильным описывать анимацию не XML файлом, а собирать непосредственно во флеше? Там для тебя даже кинематику прикрутили, чтобы всё болталось - пользуйся на здоровье. А потом просто вызывай gotoAndPlay("criticalStrike"); где criticalStrike метка фрейма с которого надо начать проигрывание анимации.

Кончено метод с XML файлами для художников, которые всё это дело будут собирать, без сомнения идеальный способ потратить кучу времени =)

Старый 16.04.2010, 10:48
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 3  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от Rzer Посмотреть сообщение
Кончено метод с XML файлами для художников, которые всё это дело будут собирать, без сомнения идеальный способ потратить кучу времени =)
тут можно поспорить. Я, например, делаю секвенцию кадров определённого движения в 3DMaxe - затем склеиваю их в одну простыню. итоговой битмапе даю имя id_персонажа_ направление_действие.
таким-же образом создаю остальные секвенции.
затем jsfl-скриптом вставляю их в sfw-либу персонажа.
Анимацию делаю чем-то вроде http://blog.hexagonstar.com/animatedbitmapclass/
Можно еще более автоматизировать - на входе max со всеми вариантами анимации -> генерация секвенций по отдельным папочкам (например кадры от 0 до 29 в папку имя_ макс_файла_ direction_up_walk.. кадры 30-60 имя_ макс_файла_ direction_up_left_walk.. итп.)-> обрезка -> jsfl внедрение битмап и xml -> имя_ макс_файла.swf (swc)
либо если итоговый размер битмапы позволяет - все варианты анимации в одну битмапу.
__________________
Отряд Котовскага

Старый 16.04.2010, 11:29
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 4  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Я так понял, что здесь идёт речь о сражении двух персонажей с боку (как в dwar'ах) и автор хочет описать шевеление ручками, в виде xml файла.

p.s. Cами пользуемся jsfl для сбора персонажей отрендеренных в 3d studio max только в мувики с подписанными кадрами.

Старый 16.04.2010, 11:42
Peregrin вне форума Посмотреть профиль Отправить личное сообщение для Peregrin Найти все сообщения от Peregrin
  № 5  
Ответить с цитированием
Peregrin
 
Аватар для Peregrin

Регистрация: Nov 2006
Адрес: Hamburg
Сообщений: 195
Отправить сообщение для Peregrin с помощью ICQ
Цитата:
Сообщение от Rzer Посмотреть сообщение
Я так понял, что здесь идёт речь о сражении двух персонажей с боку (как в dwar'ах) и автор хочет описать шевеление ручками, в виде xml файла.
Не обязательно чтобы это было описано в xml-файле, можно, чтоб это было и в swf. Главное, чтобы всем этим легко было управлять и чтобы выполнялись все приведенный выше требования.
Вот пример:
В бою встречаются 10 рукий мутант (А) и шарик от пин понга(Б) со своим животным - пылесосом(В). Каждый обладает своим набором анимаций, причем у А их более сотни,у Б/В по одной. Добавление этих сущностей в приложение не должно вызвать никаких изменений в систему анимации, ни одного вмешательства в скелет А/Б/В ни под каким предлогом. В любой момент времени должна быть возможность добавить/ изменить количество или вид анимаций объектов А/Б/В, например добить пылесосу (В) новый супер удар или фаталити для шарика от пин понга (Б).
__________________
Forge of Empires

Старый 16.04.2010, 11:56
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 6  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Я бы наверное сделал так: Файл скелета состоит из проименованных контейнеров для которых уже откатана анимация и в которые попадают части от модели. Хотя тут тоже могут возникнуть проблемы (при смене ключевых кадров части тела могут и пропасть). XML файл для одного скелета можно попробовать и описать, но я не представляю как он должен выглядеть, чтобы движения были натуральными.

Старый 16.04.2010, 12:19
Peregrin вне форума Посмотреть профиль Отправить личное сообщение для Peregrin Найти все сообщения от Peregrin
  № 7  
Ответить с цитированием
Peregrin
 
Аватар для Peregrin

Регистрация: Nov 2006
Адрес: Hamburg
Сообщений: 195
Отправить сообщение для Peregrin с помощью ICQ
Не хочу тебя обидеть, но кажется ты не до конца понимаешь принципов правильной архитектуры. Анимация не может быть встроенной в скелет. Допустим у тебя есть персонаж рыцарь и разбойник. Скелет, понятное дело, у них одинаковый, но анимация у каждого своя. При твоем подходе нужно было бы все анимации (рыцаря, разбойника, ремесленника, кузнеца и т.д.) хранить в одном файле. Не удобно редактировать и громоздкий файл. Либо можно сделать несколько файлов, у которых будет своя анимация, но при этом в каждом будет одинаковый скелет. Но так нельзя, потому что копипаст - отстой.
__________________
Forge of Empires

Старый 16.04.2010, 17:35
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 8  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Художнику удобно работать во флеше, пусть там и работает. Он берет скелет и перемещает его узлы. Потом мы берем и для этого скелета формируем xml(свой бинарный формат было бы компактеней) c помощью jsfl. Что он содержит? Координаты узлов скелета для каждого кадра каждой секвенции "идти","бить","умирать". Так мы уходим от gotoAndPlay("секвенция");

Теперь, чтобы у разбойника и, скажем, рыцаря, были и общие анимации и разные анимации, нужно сделать что-то типа наследования, т.е., чтобы в этом xml было сказано: рыцарь, наследует анимации разбойника, но со своей анимацией блока, своей анимацией смерти + есть еще один узел скелета: щит, для каждой из секвенций вот координаты узла "щит".

улавливаешь?
__________________
мой пустой блог

Старый 16.04.2010, 18:06
Peregrin вне форума Посмотреть профиль Отправить личное сообщение для Peregrin Найти все сообщения от Peregrin
  № 9  
Ответить с цитированием
Peregrin
 
Аватар для Peregrin

Регистрация: Nov 2006
Адрес: Hamburg
Сообщений: 195
Отправить сообщение для Peregrin с помощью ICQ
про jsfl и формирования xml и так было понятно. На счет своего формата я подумаю.
А вот на счет наследования хотелось бы продолжить )
__________________
Forge of Empires

Старый 16.04.2010, 18:21
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 10  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: 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>
Код:
<unit id="knight" extends="bandit">
  <idle>
    <shield x="..." y="..." />
  </idle>
  <attack>
    <shield x="..." y="..." />
  </attack>
  <defend>
    <head x="... y="..."/>
    <body x="..." y="..." />
    <leftpalm ... />
    <rightpalm ... />
    ...
    <shield x="..." y="..." />
  </defend>
</unit>
т.е. когда у нас юнит-рыцарь, то движок смотрит, что рыцарь extends bandit, клонирует в себя bandit и уже в этот клон bandit копирует свойства knight. А у него прописаны: в секвенциях idle и defend только новые ключи для нового узла скелета "щит"; и абсолюно новая секвенция "defend", для которой прописаны ключи для всех узлов скелета.
__________________
мой пустой блог


Последний раз редактировалось iflamberg; 16.04.2010 в 18:25.
Создать новую тему Ответ Часовой пояс GMT +4, время: 09:57.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
Data Driven , анимация , организация , скелет , структура

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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