XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Моделлинг
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
NETRAT

offline
Опыт: 83,712
Активность:
Алексей уже описывал как это расшифровывается, по-моему эта анимация запорота и сделает вылет из вара

NETRAT добавил:
Цитата:
Сообщение от Алексей
Анимация хранится там в виде контроллеров анимаций. Это - скелетная анимация. Т.е. каждая вершина крепится к какой-нибудь кости (обязательно!). Как осуществляется крепление: в MDX у каждой поверхности есть секция Groups. Она состоит из наборов костей (Matrices). Каждый такой набор содержит список костей. Наборы получают порядковые номера - начиная с 0, в порядке следования. Кроме того, каждая поверхность содержит ещё 1 секцию - VertexGroup. В ней на каждую вершину приходится 1 число, указывающее ID набора костей, влияющих на эту вершину.
Теперь о самих костях. Они организованы в виде скелета. При этом существуют собственно кости (Bones) и помощники (Helpers). Помощники отличаются от костей только тем, что к ним НИКОГДА не крепятся вершины. У большинства костей/помощников есть РОДИТЕЛЬ. Он указан в поле Parent. Это объект, все трансформации которого передаются потомкам. У каждого объекта может быть несколько потомков, но только один родитель (или ни одного). Причём родителем кости м.б. как кость, так и помощник. А вот родителем помощника - только другой помощник.
Собственно анимация - это преобразования костей. Она хранится там в виде набора Ключевых кадров (КК), между которыми осуществляется интерполяция. Для каждого объекта могут быть следующие виды анимации:
1. Translation - указывается по 3 числа на кадр, сдвиги по осям координат.
2. Rotation - указывается 4 числа на кадр, представляют собой кватернион вращения (x,y,z,w).
3. Scaling - указывается 3 числа на кадр, масштабные множители по каждой оси.
4. Visibility (очень редко). 1 число на кадр: 0 - невидимость, 1-видимость. Само собой, кости всегда невидимы, тут задаётся видимость связанных с костями вершин.
У каждой кости есть позиция (Pivot), от которой и считаются вращение/смещение/масштабирование. Все эти позиции хранятся в секции PivotPoints. Нумеруются они с нуля, а номер центра кости совпадает с ObjectID этой кости. Центр - это просто координаты кости, (x,y,z).
Что касается кадров, то War использует 1000 кадров в секунду (реально, конечно, проигрывается ~75кадров/сек, т.е. часть кадров пропускается). При попадании в КК можно просто взять значения оттуда, рассчитать матрицы костей и применить их к вершинам.
В случае же, если кадр попадает между КК, значения параметров кости для этого кадра придётся рассчитывать (интерполировать). Метод интерполяции всегда указывается в самом контроллере:
1. DontInterp - нет интерполяции. Нужно брать значения ближайшего слева КК (т.е. того, который идёт ПЕРЕД текущим кадром).
2. Linear - линейная интерполяция. Тут всё понятно. ВНИМАНИЕ: в случае контроллера Rotation используется в этом случае СФЕРИЧЕСКАЯ линейная интерполяция (алгоритм SLERP) - благодаря этому движения персонажей получаются "мягкими".
3. Bezier - интерполяция по кривой Безье. В этом случае кроме собственно значений в КК даются также значения угловых коэффициентов касательных: входа в кадр (InTan) и выхода из кадра (OutTan). В случае вращения полученные кватернионы необходимо ещё нормировать.
4. Hermite - интерполяция сплайнами Кочанека-Бартельса. В качестве InTan и OutTan даются производные rb и ra соответственно, для уравнения Кочанека-Бартельса. В случае вращения используется SLERP-форма сплайнов.
Кроме того, в параметрах кости может стоять значение Billboarded. В этом случае матрица поворота кости сбрасывается и заменяется матрицей вида (это приводит к тому, что объекты, связанные с такой костью, всегда повёрнуты к наблюдателю 1 и той же стороной. Например, шары, летающие вокруг Каэльтаса, на самом деле выполнены в виде плоскостей, но кажутся шарами, т.к. всегда повёрнуты к наблюдателю).
Кроме всего этого существуют ещё текстурные анимации, анимации многочисленных Источников, анимации прозрачностей, материалов и т.п.
Так что работы тут много. Например, в моём редакторе моделек War'а (MdlVis) редактор анимаций до сих пор в разработке и выйдет, скорее всего, только перед самым Новым годом (числа 31-го).
бяка
Старый 28.12.2005, 08:25
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
Мдаа... Глубокое вам спасибо, Нетрат и Алексей, и поклон до земли...
То что мне надо было лежит здесь, но я нифига не понял, слишком много высшей математики, а мы только начали производную =)
Ну чтож, попробую подумать (каламбур :)), анимация кстати не косячит, Нейтрат, она скопирована с реально действующей модели.
Старый 28.12.2005, 10:23
Wulfrein
где я?
offline
Опыт: 88,142
Активность:
Цитата:
по моему, сначала указывается центр или плоскость вращения

FellGuard, самое последнее значение в скобках - это масштабирование. Сёдня понял. Наверное, замечал, когда кость крутишь на 180 градусов, всё прикрепленное к ней уменьшается до масштаба в 0%. Чтоб этого избежать, в блокноте потом последние значения надо заменить на "1".

Блокнот всех спасёт!

Wolverine добавил:
Цитата:
0: { 0, 0, 0, 1 },
InTan { 0, 0, 0, 1 },
OutTan { 0, 0, 0, 1 },
333: { -0.21619, 0.00501513, -0.0477154, 0.975172 },
InTan { -0.320111, 0.0173934, -0.100442, 0.94188 },
OutTan { -0.320111, 0.0173934, -0.100442, 0.94188 }

Масштаб слегка уменьшен.
Старый 02.02.2006, 16:58
Mozes
Green Street!
offline
Опыт: 5,034
Активность:
А если например.
Сделать анимацию увеличения передней части модели.
Старый 02.02.2006, 17:05
Wulfrein
где я?
offline
Опыт: 88,142
Активность:
Можно
Старый 02.02.2006, 17:12
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 07:30.