Cascadeur: Задача о падающей кошке
Все знают, что кошка всегда приземляется на 4 лапы, как бы ее ни бросили. Этот вопрос давно занимал физиков, и было предложено несколько моделей того, как это кошке удается. Все эти модели достаточно приблизительны и обычно ограничиваются цилиндрами. Однако, команда программы для physics-based анимации Cascadeur попробовала смоделировать переворот кошки на более подробной физической модели.
Раньше физики думали, что кошка может заранее рассчитать свое вращение и в начале падения успевает правильно оттолкнуться, приобретая начальный угловой момент. Но эксперименты показали, что даже если кошку подвесить за лапы на веревки, а потом резко перерезать их, то кошка все равно умудряется перевернуться.
Видимо, это специальный рефлекс у кошек — они неосознанно делают правильное движение, когда теряют опору и ориентированы в пространстве неправильно. Правда, в невесомости этот рефлекс дает сбой :) Но даже в невесомости видно, что кошки могут своими движениями менять свою ориентацию в пространстве.
Мы решили попробовать воспроизвести этот кошачий трюк в Cascadeur. Наша физическая модель кошки позволяет моделировать ее движение достаточно подробно.
Основная проблема переворачивания кошки заключается в том, что без точек опоры кошка не может менять свой угловой момент. Если изначально угловой момент равен нулю, то и дальше он будет оставаться нулевым.
Раньше мы думали, что кошки разворачиваются за счет хвоста — крутят хвост в одну сторону, а тело из-за этого поворачивается в противоположную, сохраняя суммарный угловой момент нулевым. Это логичная идея, но, похоже, одного хвоста недостаточно — видео реальных экспериментов показывают, что кошки делают что-то более сложное. Тем более кошка может перевернуться вообще без хвоста.
Оказывается физики в разное время предлагали разные решения этой задачи.
Например, в 1894 году Л. Лекорну предложил модель, в которой кошка состоит из двух цилиндров, которые проворачиваются под углом друг к другу. Это было почти не замечено научным сообществом, но позже эту идею в 1935 году развили нидерландские исследователи Радемакер и Брак.
В экспериментах заметно, что кошка сгибает туловище посередине. Можно представить переднюю и заднюю половины тела кошки, как два цилиндра, которые могут проворачиваться вдоль своих осей. Если между осями цилиндров есть угол, то их проворот вдоль своих осей создаст общее компенсационное вращение в противоположную сторону, чтобы суммарный угловой момент остался нулевым.
Мы попробовали воспроизвести это с нашей саблезубой кошкой в Cascadeur.
Но как бы мы ни сгибали тело, поворота на 180 градусов нам добиться не удалось. За одно такое движение кошка проворачивалась максимум градусов на 120. Мы пришли к выводу, что одного этого движения не достаточно.
Также у физиков популярна модель, предложенная М. Гийу, учитывающая поджатие лап. Если сначала поджать передние лапы, задние лапы вытянуть, а переднюю половину тела повернуть вдоль оси относительно задней половины, то за счет разницы в моментах инерции передняя половина повернется больше, чем задняя половина повернется в обратную сторону. После этого можно поджать задние лапы, вытянуть передние лапы, а заднюю половину тела повернуть относительно передней, возвращая в исходное состояние, то задняя половина повернется больше передней, и итоговое положение кошки окажется повернутым, несмотря на то, что суммарный угловой момент все время оставался нулевым.
Эта модель кажется логичной, но остается важный вопрос: почему кошка обычно вытягивает только одну переднюю и одну заднюю лапы, хотя выгоднее было бы максимально вытягивать сразу две передние, а потом две задние лапы?
Внимательно изучая видео, мы заметили, что кошка не просто вытягивает одну переднюю лапу и одну заднюю, а загребает ими в противоположных направлениях.
Наша физическая модель более подробна, чем просто два твердых тела. В ней можно воспроизвести сложное движения лап.
Поэкспериментировав с этим загребанием лапами, мы получили неожиданно сильный вклад этого движения лап в переворот кошки. Если использовать изгибание тела плюс загребание лапами, то этого достаточно, чтобы кошка развернулась на 180 градусов и более.
В эксперименте мы почти не использовали хвост, так как у нашей саблезубой кошки он совсем маленький. Но в жизни кошки чуть меньше загребают ногами и меньше изгибают тело, а часть переворота действительно обеспечивают хвостом.
Итого, мы пришли к мнению, что кошки используют сразу несколько принципов. Наибольший вклад имеет изгиб туловища, на втором месте по вкладу — загребание лапами, и дополнительно помогает хвост.
Может быть, наши эксперименты не тянут на научную работу, но надеемся, что вам было интересно и вы лучше поняли, как кошке удается этот трюк. Будем рады ответить на вопросы в комментариях.
Узнать больше о Cascadeur:
Cascadeur: будущее игровой анимации
Cascadeur: предсказание позы персонажа по шести точкам
В команду Banzai Games требуется Senior Unity Developer. Подробнее о вакансии можно прочитать здесь.