ПрограммированиеФорумГрафика

SMD анимация : ( Ни как не получается. (Решено - осталось несколько вопросов)) (6 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#75
22:47, 24 июля 2009

хорошо а как смешать треки?

вот предположим есть 3 трека  одной модели - T1, T2, T3

у модели одна кость..  B1

ну так вот.. я проинтерполировал анимацию в каждом треке и получил 3 кватерниона

t1Q1, t2Q1, t3Q1    как мне их правильно смешать?  (с учётом того что у каждого трека есть свой все, сумма их весов всегда  = 1.0)

#76
23:15, 24 июля 2009

Не надо так.
Есть два ключевых кадра. Между ними интерполируй от 0 до 1 с учетом текущей дельты, кадров в секунду анимации.
В итоге получится плавный переход от ключа 1 к ключу 2.
И потом по цепочке, где в новой итерации ключ 2 станет ключом 1, а ключ 3 станет 2.
Псевдокод:

animationDeltaFrame = 1000 / animationFramesPerSecond; // длительность кадра в мс
animationDeltaTime = currentAnimationTime / animationDeltaFrame;
firstKey = floor (animationDeltaTime) % animationNumFrames; // вычислим первый индекс в массиве ключевых кадров
secondKey = (firstKey + 1) % animationNumFrames; // вычислим второй  индекс
lerpCoeff = frac (animationDeltaTime); // вычислим коэффициент интерполяции между двумя кадрами

для i из всех bones:
  нач
    // поворот
    quat rotation = quat::lerp (animationBones[i].frames[firstKey].rotation, animationBones[i].frames[secondKey].rotation, lerpCoeff);
    // перенос
    vec3 position = vec3::lerp (animationBones[i].frames[firstKey].position, animationBones[i].frames[secondKey].position, lerpCoeff);
    // матрица кости
    animationMatrices[i] = rotation.toMatrix (); // из кватерниона в матрицу
    animationMatrices[i] [3] = vec4 (position, 1.0); // добавим перенос
  конец

currentAnimationTime += FrameDeltaTime;

Без учета иерархии костей, но думаю прилипить будет не трудно

#77
23:58, 24 июля 2009

не, ты немного не понял, что я имею ввиду!  это ОДИН трек анимации! например "анимация хотьбы".
Кадры интерполировать я догадался как.. тут много мозга не нада вроде как.  а как смешать ДВЕ и БОЛЕЕ анимации:

например анимация "бег" и анимация "стрельба"    получается у меня ДВА трека!  я у 1 и у 2 НАШЁЛ УЖЕ позицию и поворот ИНТЕРПОЛИРОВАННЫЕ.  Как мне сами АНИМАЦИИ смешать?  Если их там 5 например

#78
0:13, 25 июля 2009

А, ё.
Кури блендинг/смешивание анимаций.
Например лекцию товарисча IronPeter:
http://www.gamedev.ru/community/gamedev_lecture/articles/?id=505

#79
1:40, 25 июля 2009

Blew_zc
> Например лекцию товарисча IronPeter:
спасибо, прочитал.
Помоему там им самим пофиг  тупо линейную интерполяцию юзают. (ну как я для начала и хотел сам сделать)

#80
2:23, 25 июля 2009

heihachi
Ты для начала хотел матрицы интерполировать ;)

#81
2:36, 25 июля 2009

Blew_zc
> Ты для начала хотел матрицы интерполировать ;)
ну осечка, с кем не бывает : )  для первого раза не так уж и страшно..я их не собирался а интерполировал : Р  и анимацию от 3D MAX-овской НЕ ОТЛИЧИШЬ! ; )  хотя наверно *специфичных ситуаций* ещё небыло.

Хорошэй у тебя движокЪ, кросавчег, жаль  что DX рендера нету (OGL *не перевариваю*)

#82
2:52, 25 июля 2009

о, ещё вопрос в догонку... абстрактный

Как лучше к костям игровые объекты биндить? Ну например к руке прицепить нож!

Предположим я в максе специально добавлю кость для оружия и обзову специфично, а в двиге спокойно найду её.
Как обычно все биндяд объекты к костям?

В ум первое пришло (очень аццки)  сделать интерфейс кости  IBone и наследовать класс Bone от Ibone- это "нормальные" кости.  и сделать ещё 1 класс  NodeBone  в котором унаследовать IBone и ISceneNode.

(о моём сценеграфе: объекты(модели, свет, триггеры и т.д.) - узлы сцены, группируются специальным объектом GroopNode,
который только и может что группировать объекты)

что я "придумал" -  находим такую кость в скелете, конвертим её из Bone в NodeBone и вставляем в сценеграф... потом если нуна чонить к ней прицепить - создаём GroopNode, в него пихаем нашу кость и нужный bind-объект..всё.. они соединены

да, наверно слишком "аццки"..  в 02:45 то какие ещё могут лезть в голову мысли..  ппц о_О : )

#83
14:32, 25 июля 2009

я тоже задался этим вопросом и пришло на ум вот что

есть персонаж, у него есть кости руки ! к ним привязываем оружие и экспортируем это оружие с индексами костей рук персонажа !

далее !!! добавляем меш оружия к мешу персонажа и так как персонаж обсчитывается скелетной анимацией, то оружие которое имеет индексы костей рук персонажа, будет двигаться в соответствие с анимацией рук персонажа ! типа как то так )))))) тонкости еще не проработал, так как пока до этого не дошел :D на освещение сейчас торчу )))

#84
15:39, 25 июля 2009

хах, а как он ронять будет оружие? или кидать гранаты? : )

#85
15:58, 25 июля 2009

эээм а в чем проблема ? )))))
берешь отбиндиваешь меш оружия меша персонажа и кидаешь его на пол или в другого персонажа )))))
мы же ведь просто добавляем вершины оружия к вершинам персонажа так же как и добавили можно удалить ))))
к примеру имеем структуру персонажа

struct
{
  modelUse;
  weaponUse;
  animation;
... same atributes;
}

так вот на этапе рендере берется модель ее оружие комбинируется и отправлеяется в рендер
теперь если решили выбросить оружие то нужно, эээ ))))) а тут я сам чето не могу додумать
есть идеи но не менее ацкие чем у тебя )))) вобще очень интересно мнение гуру на этот счет ! так как лекцию я прочитал ( кстате спасибо за линк, многое то что я додумал уже сам прочитал там ( например про биндинг анимаций )) но там очень в скользь говориться о теме оружия или атрибутов

#86
16:14, 25 июля 2009

iArt
> а тут я сам чето не могу додумать
я про этот участок и говорил + биндить геометрию даещё и разбивать назад - извращение, очень медленно и не нужно ИМХО  наверно сделаю, как придумал

#87
16:28, 25 июля 2009

да вот придумать то можна много чего )))))) просто вот интересно как ГУРУ делают !
я просто честно не до конца вкурил как ты придумал

#88
17:07, 25 июля 2009

а я сам себе гуру. придумал кость, к которой бум цеплять оружие, представить ещё и как игровой объект.    и как обычно группирую игровые объекты, так и сгруппирую оружие  с костью.

#89
17:57, 25 июля 2009

точнее сделаю ноду оружия дочерним узлом этой самой  бинд кости

Страницы: 1 2 3 4 5 6 7 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.