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

Процедурная анимация (2 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#15
13:18, 18 янв 2010

та-даан, добавил ещё две лапы. обновление в шапке :)

#16
14:41, 18 янв 2010

Suslik
У тебя безнадежный подход.
Кинематическая система любого животного имеет слишком много степеней свободы. Знаешь анекдот про сороконожку?
У нее спросили, с какой ноги она ничинает движение, она запуталась и не смогла пойти.
Теперь поделюсь как они это делают на самом деле. Эти животины членистоногие, более того, "членистотелые", у них в каждом сегменте тела есть нервные ганлиии, которые и управляют этим сегментом, а вместе управляют движением всего тела. Их "хождение" это на самом деле волна распространяющаяся вдоль тела.
Но не надо думать, что только у примитивных животных такой механизм управления движением. Сокращения нашего сердца или перистилистика кишечника управляются аналогично.
Перейдем теперь по эволюционной лестнице чуть выше. У земноводных и простых пресмыкающихся (о динозаврах я умолчу) узор движения тоже не отличается большим разнообразием, фактически он жестко запрограммирован и почти не использует динамики. Только у теплокровных появляются несимметричные аллюры, типа галопа.
К чему я это все? К тому, что на самом деле бег волка - это некое интеллектуальное действо, которому нужно обучаться достаточно длительное время.
Итак в чем там проблемы? - степеней свободы сильно много. Как их разрешить? Использовать те или иные принципы оптимизации или эвристики (ящерицы или лягушки используют эвристики, ты в своей проге тоже).
Оставим эвристики пока в стороне, посмотрим на оптимизации. Что там можно оптимизировать?
- расход энергии на еденицу времени или пути
- максимальная скорость
- максимально длинный прыжок в длину или высоту
- продолжительность бега (тут все и расход энергии, и равномрная загрузка мышц).
Естественно, бег оптимизированный по какому то параметру и будет аллюром. Для лошади например
оптимизация расхода энергии на время (при возможности одновременного сбора этой энергии с пространства при пастьбе) - это шаг
оптимизация расхода энергии на путь - это рысь
оптимизация на скорость - это галоп.

#17
14:50, 18 янв 2010

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

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

#18
15:29, 18 янв 2010

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

Распиши лагранжиан. Будет не сильно сложно.

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

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

#19
1:21, 19 янв 2010

О. Федор
>Распиши лагранжиан. Будет не сильно сложно.
ты пошутил? он те то что нелинеен, он просто супернелинеен с разрывами на всех производных по времени(лапы постоянно то касаются земли, то отрываются). можно пытаться расписывать его в малой окрестности по времени, но примерно этим(очень отдалённо) я и занимаюсь.

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

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

#20
2:16, 19 янв 2010

Подстава. Мне почему-то показалось, что то, чем я сейчас занимаюсь, называется инверсной кинематикой. Набрал в гугле и что я вижу на первой странице ссылок? Выстраданные мной за три дня методы её решения! Оказывается, человечеству они уже известны :/

#21
4:40, 19 янв 2010

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

#22
13:05, 19 янв 2010

Suslik
может будет интересным
http://runevision.com/blog/labels/locomotion.html
но там реконструируют из готовых анимаций

#23
16:47, 19 янв 2010

Suslik
> ты пошутил? он те то что нелинеен, он просто супернелинеен с разрывами на всех
> производных по времени(лапы постоянно то касаются земли, то отрываются). можно
> пытаться расписывать его в малой окрестности по времени, но примерно этим(очень
> отдалённо) я и занимаюсь.

Лапы не касающееся земли - это частный случай лап касающихся земли. Сделай функцию

силаНаЛапе(расстояниеДоЗемли)

непрерывной, хоть и бизкой к нулю везде кроме земли. Функция Дирака (дельта-функция) спасет отца русской демократии.

Suslik
> вообще говоря, она управляется именно так, просто система управления очень
> сложная. учитывается очень много входных данных, причём учитываются очень не
> тривиально.

Добавь только то, что в систему управления входят также и собственные био-механические качества системы. Т.е. она не просто нервно-информационная.

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

Напротив, я совсем не столь опрометчив. Разумеется периодический процесс проще оптимизировать. Детали разверну в следующем посте.

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

Ты знаешь, такие видео, даже лучше, я уже видел, поэтому это и написал. И вместо
"бег выглядит достаточно оптимально с энергетической точки зрения"
лучше было действительно оптимально.
А ты знаешь, что такое оптимальный бег?

#24
17:04, 19 янв 2010

О. Федор
> Лапы не касающееся земли - это частный случай лап касающихся земли. Сделай
> функцию
> силаНаЛапе(расстояниеДоЗемли)
> непрерывной, хоть и бизкой к нулю везде кроме земли. Функция Дирака
> (дельта-функция) спасет отца русской демократии.
я знаю, что такое лагранжиан, я знаю, что такое функция дирака, я знаю, что такое уравнение лагранжа. но я слабо представляю, как для этого случая его составить и численно решить. будем считать, что я не обладаю достаточным скиллом и поэтому иду по неоптимальному пути.

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

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

#25
17:36, 19 янв 2010

Рассмотрим периодический тип движения (бег, прыжки, ползанье и т.п.).
Очевидно, что в этом случае все "приводные функции" (т.е. функции напряжения мышц F, которыми и управляет нервная система) будут периодичными, и более того, их период T во времени будет совпадать.
Поэтому эти функции можно разложить в ряд Фурье и таким образом свести задачу оптимизации движения к поиску минимума функции расхода энергии W(ai), которая зависит от коэффициентов Фурье ai как от параметров.
При расчете нужно однако иметь в виду, что у человека и животных есть два типа мышечных волокон: быстрые и медленные.
Для первых характерно то, что быстро развивают нужную силу, но в них расход энергии пропорционален времени х сила, а "медленные" в состоянии развивать силу (без движения) без расхода энергии. Именно поэтому, для животных имеющих запас мощности, выгоден режим загрузки  (быстрых) мышц короткими импульсами.
Рассмотрим упрощенную модель тетрапода ("волка")

Wolk | Процедурная анимация

Здесь считается, что бедренные и плечевые шарниры сферические, т.е. имеют по три степени свободы, две поворота и одну вращения.
"Колена" - цилиндрические шарниры по одной степени свободы.
Шея и хвост могут поворачиваться только вокруг точки прикрепления к корпусу, т.е. имеют по две степени свободы.
Таким образом всего (3+1)*4+2*2=20 степеней свободы.
Если ограничиваться только симметричными аллюрами, то коэффициенты Фурье парных органов (ног) будут совпадать (будет только сдвинута на 180 начальная фаза) и таким образом задачу можно будет свести к поиску (3+1)*2+2*2=12 функций F.
Если для представления каждой функции ограничится 5 коэффициентами Фурье, то при поиске минимума функции расхода энергии W достаточно ограничится 60 параметрами.

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

#26
17:43, 19 янв 2010

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

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

Suslik
> а ты уверен, что сам догадываешься, как все эти "не просто
> нервно-информационные" качества учесть в функционале энергии? и ты на полном
> серьёзе представляешь, как не эвристиками его минимизировать в реалтайме?

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

#27
17:52, 19 янв 2010

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

> Очевидно, что в этом случае все "приводные функции" (т.е. функции напряжения
> мышц F, которыми и управляет нервная система) будут периодичными, и более того,
> их период T во времени будет совпадать.
периодичны по чему? по времени? ну так время для этих функций - всего лишь один из туевой хучи параметров.

>Если для представления каждой функции ограничится 5 коэффициентами Фурье, то при поиске минимума функции расхода энергии W достаточно ограничится 60 параметрами.
опять же, с чего вдруг ты рассматриваешь только функции времени? мало того, что эти функции зависят от кучи внешних параметров(ориентация, текущая скорость, наклон поверхности), так они зависят ещё и друг от друга, причём достаточно прямо: именно эту зависимость и пытается разрешать инверсная кинематика.

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

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

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

#28
18:31, 19 янв 2010

Suslik
> периодичны по чему? по времени?

Ага

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

Нет, время - это выделенный параметр.

> опять же, с чего вдруг ты рассматриваешь только функции времени? мало того, что
> эти функции зависят от кучи внешних параметров(ориентация, текущая скорость,
> наклон поверхности), так они зависят ещё и друг от друга, причём достаточно
> прямо: именно эту зависимость и пытается разрешать инверсная кинематика.

Фокус в том, что тебе этого ничего не надо. Эти функции F - это на самом деле функции актуаторов, их координат. Не больше и не меньше.

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

Никакие случайности конечно не учитываются. Процесс строго периодичен и предсказум.
Suslik
> но всё же главное, на мой взгляд, преимущество моего метода, которого лишён
> твой - адаптация к внешним возмущениям. во втором видео показано, что будет,
> если на животное сверху сильно надавить - оно не теряется, а идёт, прогибаясь.

К постоянным или даже к периодичным известным воздействиям мой метод (если уж ты его так назвал) тоже сможет адаптироваться.

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

В явном виде решения не будет. Это определенно.
Решение возможно тольько как некий найденный в итерационном процессе экстремум.

#29
18:40, 19 янв 2010

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

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

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

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

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