Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / 3D Инверсная кинематика в два клика

3D Инверсная кинематика в два клика

luckyleo769Постоялецwww19 апр. 201720:53#0
Доброго времени суток, друзья!

Подскажите, кто знает, есть ли какая-нибудь библиотека для C# решающая обратную задачу кинематики. Вот прям такая, что подключил, узлы выставил и пошел курить. Ну или типа того.
Разбирался с Fabrik, но затупил на ограничениях поворотов, а они край как нужны. Читал здешнюю статью - разновидность фабрика. Алгоритм простой, хороший, но пилить и пилить его.
Мне нужна демка шагающего бипеда на шарпе кровь из носа, а времени разбираться вообще нет.

Короче, сорри за такой флейм. Может у кого какие соображения по этому поводу, или кто-то допилил озвученные выше алгоритмы. Спасибо!

P.S. Если нужно, то могу залить сюда свою реализацию из здешней статьи, работает откровенно хреново, но может вместе по быстрому допилим, будет народным достоянием.

MiraПостоялецwww19 апр. 201721:04#1
luckyleo769
на ассет сторе не смотрел чтоли. там есть простые бесплатные и копеешные.
топовый (на мой взгляд)  FinalIK и тот есть в варезе, если нужен как референс можно его поизучать.
Polyflow3dПостоялецwww19 апр. 201721:15#2
для двух костей делается вообще легко, строчек в 20
luckyleo769Постоялецwww19 апр. 201722:39#3
Polyflow3d
> для двух костей делается вообще легко, строчек в 20

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


Mira
> топовый (на мой взгляд)  FinalIK и тот есть в варезе
спасибо, погляжу

Polyflow3dПостоялецwww19 апр. 201723:40#4
luckyleo769
ты собираешся анимировать всю ногу меняя положение одной точки?
luckyleo769Постоялецwww19 апр. 201723:52#5
Polyflow3d
> ты собираешся анимировать всю ногу меняя положение одной точки?

Я вообще хочу сделать демку ходьбы.

В моей реализации алгоритма проблемы возникают, когда target-точка оказывается ближе к родительскому узлу, чем конечная точка дочернего. В таком случае, узлы начинают дергаться: каждую первую итерацию в одну сторону, каждую вторую в другую, ну и оказывается бесконечный цикл.

Polyflow3dПостоялецwww20 апр. 201710:02#6
luckyleo769
у тебя эффектор - это что? Сустав стопы? Или основание большого пальца?
У тебя узлы будут дергаься при любом алгоритме, потому что невозможно определить ориентацию колена зная всего две точки.
Точнее , можно, но ты не сможешь это сделать.
HotDogПостоялецwww20 апр. 201711:28#7
Глянь тут, может есть что то интересное для тебя
https://github.com/cheatdeath/research-skeletal-animation
http://www.seanjoflynn.com/research/skeletal-animation.html
luckyleo769Постоялецwww23 апр. 201712:43#8
Проблема решилась. Нашел код, который решает задачу по алгоритму CCD и Якобианами.
Короче, перевел его на шарп, хочу оформить в ддл-ку NET-овскую. Так, что если кому-то нужно будет, потом выложу.


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

Это понятно, просто моя прога в принципе неправильно считала. Я вообще не понимал как работает ИК, благо с разбором кода понял.

HotDog
> Глянь тут, может есть что то интересное для тебя
> https://github.com/cheatdeath/research-skeletal-animation
> http://www.seanjoflynn.com/research/skeletal-animation.html

Спасибо большое, погляжу.

P.S.
В коде есть ошибки. В частности в алгоритме CCD вычисленный угол получается в 1000, а то и в 10^5 раз больше подходящего. Я вообще себе поставил динамический множитель для повышения точности, который по мере итераций уменьшается. На якобианах не пробовал, ибо мороки больше. В целом CCD хватает выше крыши. Конечно, результаты шумные. Решил медианным и гауссовским фильтрами.

DODgeПостоялецwww23 апр. 201714:55#9
Не знаю, актуальный ли еще вопрос для ТС, но для .NET я использую комплект библиотек BEPUphysics. По сути там 3 библиотеки: одна про физику, другая про инверсную кинематику, а третья про математику для первых двух. Доступны как на GitHub, так и через NuGet. Честно говоря библиотеку с ИК лично я не пробовал, но та что с физикой для меня на первом месте среди тех что доступны на платформе .NET!
Sh.Tac.Постоялецwww23 апр. 201717:28#10
а unity locomotion чем не проканала? : )
хотя релевантные ссылки не самые свежие по ней

/ Форум / Программирование игр / Физика

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

2001—2018 © GameDev.ru — Разработка игр