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

сравнение позы (2 стр)

Страницы: 1 2 3 Следующая »
#15
16:36, 12 июня 2019

А что Вы хотите от этого сравнения получить? Соответственно, ставьте задачу. Одного интересует устойчивость позы, другого – пригодность для максимально быстрого перехода от статической позы к бою, третьего – кинематика движения, переводящего из одной позы в другую. А как задача будет поставлена, так и вопрос отпадёт.


#16
18:11, 12 июня 2019

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

не факт что эта хорошая идея, но попробовать можно.

#17
17:18, 13 июня 2019

А по-русски?

#18
18:32, 13 июня 2019

Mira
это какой-то тролль

#19
18:34, 13 июня 2019

Тарас-Прогер
vote@ban

#20
18:50, 13 июня 2019

endeavour_pr
> это какой-то тролль
Тролль здесь ты.

#21
19:43, 13 июня 2019

Тарас-Прогер
> А по-русски?

взять набор шаблонов поз.
если нужно перснажа как то согнуть - то найти наиболее подходящий шаблон. согнуть им.  дальше использовать ИК.

#22
10:12, 20 июня 2019

Тарас-Прогер
> А по-русски?

Давай я попробую, я ему эту идею подсказал, парень насилует все ИК.
Короче, есть скелет, ты указываешь его конечность (мизинец левой руки например). И указываешь конечную точку куда хочешь чтобы эта конечность дотянуллась. Но так чтобы и другие ограничения учитывались. Ограничения это: сочленения между собой, допустимые углы поворотов,.. прочее.
Говоря проще - хочешь марианеткой двигать так чтобы все ограничения на движения работали.

Идея в том чтобы иметь словарь ключевых поз. Для произвольной позы находим наиболее близкую ключевую. А для этой ключевой уже есть заранее расчитаные решения.

Вопрос близости двух поз поэтому встает.

Mira

Самый простой вариант: снова натягиваем пружинки между конечностями и измеряем общую энергию. Это все равно что сумма квадратов всех расстояний между соответствующими конечностями.  Но ессно это эвристика. Хз как оно будет. И кстати, не забудь перед взятием этой суммы вырвнять две позы, чтобы эта сумма минимизировалась. Я не уверен, что если ты ключевую позу на километр отнесешь от целевой позы то такой поиск минимума даст тоже самое,

#23
(Правка: 25 июня 2019, 5:56) 12:07, 22 июня 2019

Далеко не всегда для для перехода в позу нужна наиболее похожая. Попробуйте сесть на шпагат, а потом, не вставая, пересесть на корточки. Или наоборот. Если шпагат Вам доступен, то получится. Но намучаетесь при этом больше, чем, вставая и садясь заново.

#24
12:22, 22 июня 2019

Тарас-Прогер
> Попробуйте сесть на шпагат, а потом, не вставая, пересесть на корточки

запросто, при наличии сильных мышц ты любое трение пяток с полом преодолеешь и при этом поднимешь вес свой. Мы же не обсуждаем возможно человека правда? У него же более простая модель

#25
(Правка: 14:11) 14:10, 22 июня 2019

Решал эту задачу на днях довольно простым способом (правда я только ноги учитывал).
Во-первых, обычно у персонажей кости не двигаются, а только вращаются вокруг своих пивотов.
Во-вторых, можно не заморачиваться с углами, кватернионами, а просто взять два любых вектора матрицы кости. Почему два? Потому что один обычно будет осью вращения (не двигается особо), а два других шататься в стороны, поэтому один из двух всегда будет активным (не осью).
Считаем суммы dot(pose1.vecX, pose2.vecX) + dot(pose1.vecY, pose2.vecY) на каждую кость, это и скажет нам похожесть.
В моём случае, я выискивал наиболее похожую позу ног в одной анимации на позу в другой. Если сумма дотов у одного кости была ниже порога, поза отбрасывалась. Из неотброшенных выбирается поза с самой большой суммой. Вуаля, motion matching на коленке.

#26
16:45, 22 июня 2019

Mr F
кстати да. дотов должно хватить для наколенного сравнения

#27
1:11, 23 июня 2019

Mr F
> Считаем суммы dot(pose1.vecX, pose2.vecX) + dot(pose1.vecY, pose2.vecY) на
> каждую кость
скорее K*(dot(pose1.vecX, pose2.vecX) + dot(pose1.vecY, pose2.vecY))
где K пропорционально уменьшается с глубиной иерархии
чтобы шевеление пальцем ноги не воспринималось системой также как и такое же шевеление коленом

#28
8:57, 23 июня 2019

Oxyd
Хорошая мысль, да

#29
(Правка: 10:08) 10:00, 23 июня 2019

Oxyd
> где K пропорционально уменьшается с глубиной иерархии
можно еще учитывать длину кости и длину костей далее по иерархии. То есть каждый узел хранит в себе длину кости + максимальную сумму длин костей следом за ней. На самом деле хранить достаточно итоговый коэффициент рассчитанный один раз.

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