Войти
ФлеймФорумПрограммирование

множители Лагранжа (3 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 3 4 Следующая »
#30
7:38, 21 июня 2019

Suslik
Топтание из за запятой не? Я заметил что с ростом числа итераций интенсивность дрожания увеличивается.

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


#31
(Правка: 7:46) 7:45, 21 июня 2019

Mira
> Топтание из за запятой не?
я уже сказал, что нет. даже если ты бы считал с бесконечной точностью в рациональных числах, оно бы никуда не делось именно из-за слабого солвера:
> У иерархии нихрена, ты можешь достичь цели и вроде все, но тут к своей цели двинулась правая рука перетащив грудь (базу) и опять надо сводить левую. Иногда функция при этом вообще не может сойтись и сольвер мечет туда сюда.
потому что простые проекционные солверы плохо себя ведут, если у матрицы связей нет диагонального преобладания, то есть если связи "противоречат" друг другу.

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

#32
(Правка: 9:58) 9:32, 21 июня 2019

Suslik
> иногда это значит, что можно выбрать связи так, чтобы их было разрешать проще

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

А так хер знает что ищем, потому и видим что все скачет.

#33
9:59, 21 июня 2019

Suslik
Да тут связь примитивная, смещаются цепочки рук к цели и сдвигают свой виртуальный корневой джойнт.
Цель цепочки спины выбирается как среднее значение на этой итерации - это среднее между сдвинутыми джойнтами.

Когда среднее плавает на границе то сольвер пытается гнуть спину то назад то вперед. Сходимость всирается, еще и тело трясет.
Вот как тут выкрутиться, если по идее можно что туда что обратно гнуть. Эти оба решения приемлимы, по отдельности) не разом.
Если задать какие то приоритеты, это будет костыль, который стопудов гденить колом встанет. Вот это я не придумал как решить, эту проблему прям во всех туториалах можно вытащить, и даже в юнитишных ик сольверах без "поз подсказок".

#34
10:02, 21 июня 2019

slepov
Всмысле че ищем?)
Тут вопрос лучше правой или левой , например :D сольвер вот не может определиться, я тоже.

#35
10:13, 21 июня 2019

Mira
> Всмысле че ищем?)

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

Пля это на столько тривиальные вещи. А ты ищешь причины в флоатах, фабриках, еще в чем то. А банально меру качества не можешь сформулировать.

#36
15:31, 21 июня 2019

slepov
> А банально меру качества не можешь сформулировать.
даже банально - расстояние эффектора до цели, с учетом ограничений. дополнительная мера - более человекоподобный сгиб, но у меня этих данных нет, их можно отбросить пока.
надо заставить сольвер работать хотя бы не красиво - но стабильно. потом уже думать что наращивать.

мне вот интересно, как сделать упругость пофизичнее в расчетах.
чтоб цепочка в продольном направлении больше толкалась а не сморщивалась, а гнулась при оттягивании вбок

Изображение
#37
15:41, 21 июня 2019

Mira
почему нижн правую картинку зафейлил? он правильно гнется (в частности для 4х узлов). Доказ-во правильности - симметрия.

"Сначала программа должна работать правильно, а уж потом быстро". - если этому следовать то твой вопрос
>мне вот интересно, как сделать упругость пофизичнее в расчетах

имеет ответ: юзай физ движок !! ))

#38
15:48, 21 июня 2019

Mira

Хочешь совет - брось ты это. Если ты этим занимаешся только в рамках одной игры - ты зря тратишь время. Эта тема требует хорошего математ бэграунта, выч. геометрии. Или запасаться терпением и перечитать уйму книг, или вообще не трогать.

#39
(Правка: 16:10) 15:49, 21 июня 2019

slepov
> почему нижн правую картинку зафейлил? он правильно гнется (в частности для 4х
> узлов). Доказ-во правильности - симметрия.
не правильно, он в случае упругости должен толкнуться и может немного прогнуться.
толкни ивовый прутик с торца - он подвинет всю ветку, если не достаточно тонкий то даже не согнется. если толкнешь сбоку - то больше согнется чем поведет ветку.

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

#40
15:55, 21 июня 2019

slepov
> Хочешь совет - брось ты это. Если ты этим занимаешся только в рамках одной игры
> - ты зря тратишь время.
нифига, я много интересных вещиц освоил. игра это проЭкт, ее можно делать можно нет, а полученный в этой области опыт (плохой и хороший) можно использовать и в других приколах.

#41
16:13, 21 июня 2019

MrShoor тебе мог бы помочь. У него тоже можно сказать ИК только на 2д пространстве. Он там тянет всякие дорожки, на которые наложены ограничения.

Удивительно почему он до сих пор скепсис свой не высказал.

#42
(Правка: 16:25) 16:18, 21 июня 2019

slepov
у него интеграция Spine ваще то. 2д это не то, там все проще в разы.
была бы такая же либа для 3д ровная и бесплатная, стал бы я мудохаться чтоле

#43
9:00, 23 июня 2019

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

#44
10:02, 23 июня 2019

Mira
> мне вот еще интересно, как в этих сольверах решается проблема

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

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