pymunk custom сложные существа

Я пытаюсь создать симулятор эволюции, что-то очень похожее на это. Что касается инструментов, я использую симулятор физики pymunk с pygame.

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

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

У кого-нибудь есть идея, как я могу решить эту проблему, пожалуйста? Благодарю вас!


person Timotej Hajduk    schedule 02.05.2020    source источник


Ответы (1)


Думаю, причина в том, что пружины недостаточно сильны, чтобы удерживать. Но может быть, если сделать пружины сильнее (жестче?), эффект будет не очень?

Я думаю, вы можете попробовать добавить DampedRotarySpring (http://www.pymunk.org/en/latest/pymunk.constraint.html#pymunk.constraint.DampedRotarySpring), а также для каждого имеющегося DampedSpring. Таким образом, у вас есть одна пружина, работающая на сохранение углов, а другая — на расстояние.

person viblo    schedule 03.05.2020
comment
Я думал об обеих вещах, которые вы написали, определенно рад за предложение. Я уже пытался сделать их жестче, частично помогло, а частично усугубило. Это помогло в структурной части, но затем я не смог заставить мышцы (пружины) выглядеть так, как будто они сокращаются и удлиняются, так как пружины были слишком сильными (хотя я не пытался увеличить силу мышц). Я хотел внедрить RotarySprings в в тот момент, когда я их увидел, но, поскольку у DampedSprings нет pymunk.body, я не могу соединить DampedSprings с узлами, используя DampedRotarySprings. - person Timotej Hajduk; 04.05.2020
comment
Еще одна проблема с усилением жесткости DampedSprings заключается в том, что это лишь частично удовлетворяет мои цели. Когда существо появляется треугольной формы, однако верхний узел находится не над центром тяжести, а больше в стороне, чем один из базовых узлов, оно все равно упадет вниз, поскольку оно действует так, как будто оно имеет опору в центре узла, и просто вращается внутри. . Моя цель состоит в том, чтобы все существо перевернулось, а два других узла создали основу существа. Надеюсь, я описал его достаточно хорошо. - person Timotej Hajduk; 04.05.2020
comment
Я не думаю, что понимаю, почему можно использовать поворотную пружину? Я думал добавить по одной пружине между каждой парой тел, которые у вас уже есть. - person viblo; 04.05.2020