Вот и у меня встала задача...
Вобщем хотелось бы дерево сделать, как в УЕ
1)
я так понял базовая функция будет та, которая берет ДВЕ анимации (или не две анимации а сколько угодно?) и их текущие кадры для текущего времени.
pos
rot
и далее происходит линейный бленд между этими ЛОКАЛЬНЫМИ трансформациями костей.(У меня на матрицах... Не хотелось бы их туда сюда перегонять в кватеры для SLERP)
Далее по дереву до корня всё блендится с предыдущим..
Можно сделать типа групп костей - которые можно будет еще и отрубать..
Верно я понимаю?
2)
Еще неясно , если я блендю 2 анимации..
У обоих скорость 30фпс
В одной 20 кадров
В другой 5..
Это получается я должен меньшее растянуть по времени или не надо?
То есть если текущее время перевалит за 5 кадров, то при блендвалуе = 1 , у меня будет или текущий луп, или конечный кадр всё время?
1 - Матрицы можно лерпить, как-то будет работать. А если бы с самого начала разделял, не пришлось бы "сюда", которое сильно дороже, чем "туда".
2 - Сделай в каждой ноде/слое свое независимое время.
The Andreyp
> Вобщем хотелось бы дерево сделать, как в УЕ
Какое дерево?
> я так понял базовая функция будет та, которая берет ДВЕ анимации (или не две
> анимации а сколько угодно?)
Если ты про AnimGraph - там всё гораздо сложнее. И типов блендов там до кучи - целых 4 :)
> Можно сделать типа групп костей - которые можно будет еще и отрубать..
Если ты про LayerBlending- там указываешь кость (и глубину) с которой начинается блендинг
The Andreyp
> В одной 20 кадров
> В другой 5..
> Это получается я должен меньшее растянуть по времени или не надо?
Лучше так не делать - напоролись на баги типа тряски
> и далее происходит линейный бленд между этими ЛОКАЛЬНЫМИ трансформациями костей
Почему только линейный ?
Wraith
> 2 - Сделай в каждой ноде/слое свое независимое время.
не допонял. Можно поподробнее..
Там сейчас у каждой анимации можно время свое ставить.
Чисто на глаз что должно быть - как дожно выглядеть при 20, 5
innuendo
>Какое дерево?

>Лучше так не делать
а как надо?
>Почему только линейный ?
так между двумя анимациями... без кватернионов..
то есть если у меня в ноде 4 анимации , то билинейный уже прикручивается?
а может бленда между двумя на нод достаточно?
The Andreyp
> > акое дерево?
Это UE3 я так понимаю ? Я про UE4 имел ввиду
innuendo
ну да - получается блендСпасес

Такое бы хотелось
Получается для поиска весов - они юзают интереполяцию внутри триса... А в моем случае позиция задается не руками, а будет задаваться движком во время
действий
Но тут и непонятно . Этот трис 1 узел с 3 чилдами чтоли .. хз Тогда как будет с этим слинкован парент.
Для поиска весов - с 3 можно заюзать через барицентрикс..
С 4 чилдами - биллинейную
С 2 - линейную
The Andreyp
> ну да - получается блендСпасес
Не делай три, делай N*M, дальше просто считаешь в узлах и билинейно интерполируешь
The Andreyp
> не допонял. Можно поподробнее..
> Там сейчас у каждой анимации можно время свое ставить.
>
> Чисто на глаз что должно быть - как дожно выглядеть при 20, 5
На твое усмотрение. Например, можно вообще время в ноде привязать к углу линии прицела к горизонту, чтобы она аддитивно вбленживала смещения костей вида "зырю вверх/вниз".
Если не помогло, смотри исходники UE4 :)
innuendo
Короче как я понял..
Есть некий блендспасе внутри которого сетка.. Сетка задает микс из всех анимаций в ней. Программно ищется положение фактора интреполяции внутри этой сетки.
И помимо этого программно выбирается нужная сетка в зависимости от игрового кода.. На выходе сетки результат. Далее происходит бленд между старой сеткой и текущей (линейно) в зависимости от условий движения. А внутри сетки интереполируется биллинейно (кроме 1д - там линейно). И деревьев (именно иерархических отношений там нет)
А что в таком биллинеить, если там 3 точки ?????????
Мне кажется надо всетаки в треугольнике интерполировать.. просто искать в каком трисе точка с текущим значением и вычислять
The Andreyp
> А что в таком биллинеить, если там 3 точки ?????????
Ты же всегда можешь подсчитать значения в узлах сетки ?
Kuben - это какая-то задница - оно тебе надо так делать ?
innuendo
да впринципе не факт, что еще и понадобится.. Просто если задача встанет, мало ли... Надо что-то универсальное замутить.
Согласен про задницу
Могу вычислить координаты барицентрические для точки внутри триса..
3 бариц координаты и будут веса для каждой анимации - мне показалось так..
Для квада тоже должны быть веса у биллинейной
http://gamedev.stackexchange.com/questions/23743/whats-the-most-e… c-coordinates
The Andreyp
> Могу вычислить координаты барицентрические для точки внутри триса..
Зато когда у тебя будет квад - будешь делать билерп :)
Тема в архиве.