Войти
ПрограммированиеФорумОбщее

Вопрос по блендингу анимаций

Страницы: 1 2 Следующая »
#0
22:39, 9 дек. 2015

Вот и у меня встала задача...
Вобщем хотелось бы дерево сделать, как в УЕ

1)
я так понял базовая функция будет та, которая берет ДВЕ анимации (или не две анимации а сколько угодно?) и их текущие кадры для текущего времени.
pos
rot

и далее происходит линейный бленд между этими ЛОКАЛЬНЫМИ трансформациями костей.(У меня на матрицах... Не хотелось бы их туда сюда перегонять в кватеры для SLERP)

Далее по дереву до корня всё блендится с предыдущим..
Можно сделать типа групп костей - которые можно будет еще и отрубать..

Верно я понимаю?

2)
Еще неясно , если я блендю 2 анимации..
У обоих скорость 30фпс

В одной 20 кадров
В другой 5..

Это получается я должен меньшее растянуть по времени или не надо?
То есть если текущее время перевалит за 5 кадров, то при блендвалуе = 1 , у меня будет или текущий луп, или конечный кадр всё время?


#1
8:37, 10 дек. 2015

1 - Матрицы можно лерпить, как-то будет работать. А если бы с самого начала разделял, не пришлось бы "сюда", которое сильно дороже, чем "туда".
2 - Сделай в каждой ноде/слое свое независимое время.

#2
8:46, 10 дек. 2015

The Andreyp
> Вобщем хотелось бы дерево сделать, как в УЕ

Какое дерево?

> я так понял базовая функция будет та, которая берет ДВЕ анимации (или не две
> анимации а сколько угодно?)

Если ты про AnimGraph - там всё гораздо сложнее. И типов блендов там до кучи - целых 4 :)

> Можно сделать типа групп костей - которые можно будет еще и отрубать..

Если ты про LayerBlending- там указываешь кость (и глубину) с которой начинается блендинг

#3
8:47, 10 дек. 2015

The Andreyp
> В одной 20 кадров
> В другой 5..
> Это получается я должен меньшее растянуть по времени или не надо?

Лучше так не делать - напоролись на баги типа тряски

> и далее происходит линейный бленд между этими ЛОКАЛЬНЫМИ трансформациями костей

Почему только линейный ?

#4
19:45, 10 дек. 2015

Wraith
> 2 - Сделай в каждой ноде/слое свое независимое время.

не допонял. Можно поподробнее..
Там сейчас у каждой анимации можно время свое ставить.

Чисто на глаз что должно быть - как дожно выглядеть при 20, 5

innuendo

>Какое дерево?

Изображение

>Лучше так не делать
а как надо?

>Почему только линейный ?
так между двумя анимациями... без кватернионов..

то есть если у меня в ноде 4 анимации , то билинейный уже прикручивается?

а может бленда между двумя на нод достаточно?

#5
20:26, 10 дек. 2015

The Andreyp
> > акое дерево?

Это UE3 я так понимаю ? Я про UE4 имел ввиду

#6
22:27, 10 дек. 2015

innuendo
ну да - получается блендСпасес

Изображение

Такое бы хотелось
Получается для поиска весов - они юзают интереполяцию внутри триса... А в моем случае позиция задается не руками, а будет задаваться движком во время
действий

Но тут и непонятно . Этот трис 1 узел с 3 чилдами чтоли .. хз Тогда как будет с этим слинкован парент.

Для поиска весов - с 3 можно заюзать через барицентрикс..
С 4 чилдами - биллинейную
С 2 - линейную

#7
10:41, 11 дек. 2015

The Andreyp
> ну да - получается блендСпасес

Не делай три, делай N*M, дальше просто считаешь в узлах и билинейно интерполируешь

#8
11:21, 11 дек. 2015

The Andreyp
> не допонял. Можно поподробнее..
> Там сейчас у каждой анимации можно время свое ставить.
>
> Чисто на глаз что должно быть - как дожно выглядеть при 20, 5
На твое усмотрение. Например, можно вообще время в ноде привязать к углу линии прицела к горизонту, чтобы она аддитивно вбленживала  смещения костей вида "зырю вверх/вниз".

#9
18:32, 13 дек. 2015

Если не помогло, смотри исходники UE4 :)

#10
20:07, 13 дек. 2015

innuendo

Короче как я понял..
Есть некий блендспасе внутри которого сетка.. Сетка задает микс из всех анимаций в ней. Программно ищется положение фактора интреполяции внутри этой сетки.
И помимо этого программно выбирается нужная сетка в зависимости от игрового кода.. На выходе сетки результат. Далее происходит бленд между старой сеткой и текущей (линейно) в зависимости от условий движения. А внутри сетки интереполируется биллинейно (кроме 1д - там линейно). И деревьев (именно иерархических отношений там нет)

#11
12:24, 15 дек. 2015

А что в таком биллинеить, если там 3 точки ?????????

Изображение
Изображение

Мне кажется надо всетаки в треугольнике интерполировать.. просто искать в каком трисе точка с текущим значением и вычислять

#12
12:35, 15 дек. 2015

The Andreyp
> А что в таком биллинеить, если там 3 точки ?????????


Ты же всегда можешь подсчитать значения в узлах сетки ?
Kuben - это какая-то задница - оно тебе надо так делать ?

#13
13:40, 15 дек. 2015

innuendo
да впринципе не факт, что еще и понадобится.. Просто если задача встанет, мало ли... Надо что-то универсальное замутить.
Согласен про задницу

Могу вычислить координаты барицентрические для точки внутри триса..
3 бариц координаты и будут веса для каждой анимации - мне показалось так..
Для квада тоже должны быть веса у биллинейной

http://gamedev.stackexchange.com/questions/23743/whats-the-most-e… c-coordinates

#14
13:42, 15 дек. 2015

The Andreyp
> Могу вычислить координаты барицентрические для точки внутри триса..

Зато когда у тебя будет квад - будешь делать билерп :)

Страницы: 1 2 Следующая »
ПрограммированиеФорумОбщее

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