Моделирование сокращения мышц скелета

Используя сферические узлы, цилиндрические кости и ограничения конусного скручивания, мне удалось создать простой скелет в трех измерениях. Я использую ответвление библиотеки физики пуль (physijs от @chandlerprall вместе с threejs).

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

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

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

Может ли кто-нибудь дать несколько советов о том, как мне лучше всего подойти к этому, используя движок пули (или, на самом деле, любой физический движок)?

РЕДАКТИРОВАТЬ: Что, если мне не нужны столкновения для мышцы? Скажем, мне просто нужна визуальная мышца, которая ограничена двумя узлами: setupДва узла линейно ограничены мышцей сетка столкновения, которая вместо того, чтобы быть большой сеткой, является всего лишь маленькой, которая существует только для того, чтобы удерживать геометрию визуальных мышц на месте и обеспечивать ось для узлов, которые должны быть ограничены.

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


person Community    schedule 21.03.2014    source источник


Ответы (1)


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

Мышцы, используемые в таких симуляциях, моделируются для создания силы физиологическим способом. Величина силы, которую мышца может произвести в любой момент времени, зависит от ее длины и скорости изменения ее длины. Вот статья, описывающая довольно сложную модель мышц, которую могут использовать биомеханики: http://nmbl.stanford.edu/publications/pdf/Millard2013.pdf.

Еще одна сложность моделирования мышц, возникающая при биомеханическом моделировании, заключается в том, что траектория движения мышцы должна охватывать суставы (например, колено). Это то, что вы пытаетесь понять, когда упоминаете о столкновениях вдоль мышцы. Это называется обертыванием мышц. См. http://www.baylor.edu/content/services/document.php/41153.pdf.

Я аспирант в лаборатории, которая занимается моделированием людей с участием многих мышц. Мы используем библиотеку динамики нескольких тел (физический движок) Simbody (http://github.com/simbody/simbody ), что позволяет определить силовые элементы, действующие вдоль траектории. Такие пути могут быть определены довольно сложным образом: они могут охватывать множество разных поверхностей. Для имитации движения человека, управляемого мышцами, мы используем OpenSim (http://opensim.stanford.edu), который в очередь использует Simbody для имитации физики.

person chrisdembia    schedule 28.03.2014
comment
Большое спасибо! Вы поставили меня на новый и интересный путь с этой проблемой. - person ; 28.03.2014
comment
Мне интересно услышать больше о том, что вы хотите сделать. - person chrisdembia; 29.03.2014
comment
Ничего себе, я только что посмотрел на это: chrisdembia.github.io/projects - вы сделали некоторые удивительные вещи. Я работаю над созданием существ - только что загрузил этап 1 здесь: josephrocca.com/creature следующий этап мышцы, потом мозги :P - person ; 29.03.2014
comment
Да, чуть не забыл: перетащите узел, чтобы добавить кости. Нажмите P, чтобы снять паузу. пока все очень примитивно - person ; 29.03.2014
comment
Аккуратный! Спасибо, что познакомили меня с проектом physijs; Я упомянул об этом в проекте pydy (динамика Python). Контакт еще не имеет трения? Я сделал фигурку из палочек (это было очень легко построить), а он продолжал извиваться. - person chrisdembia; 30.03.2014
comment
О, у них есть трение, но я думаю, это потому, что суставы вращаются. Это связано с моей последней проблемой (кроме мышц) - созданием жестких суставов. Надеюсь, скоро я добьюсь некоторого прогресса в этом - person ; 31.03.2014