Pull to refresh
-12
@sakurasunread⁠-⁠only

Русский Военный Корабль

Send message
по простому вроде нельзя, но все равно интересно.
А можно вместо нуклео с mbed использовать мапл?
MultiWii на мини отлично работает. Что бы подключить жпс еще одна мини.
есть «arducopter mega 2560» от «arduino mega 2560» отличие — наличии 4МБ флеша под логи по i2c + датчики уже там. То что оно не ставится на ардуину — чистая коммерция.
1. Время симуляции всегда одно и по умолчанию 60 кадров в секунду. Сила ~ Импульс
BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h:
virtual int	stepSimulation( btScalar timeStep,int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.));


2. Практически все о чем мы говорим реализовано в этих строчках, что я привела в статье.
Я вот в поисках версии буллета где было комментов по больше, боюсь солгать, но мне кажется, что про солвер было сказано, что он получен эксперементально перебором. Если глубину проникновения двух сфер легко получить, а глубину проникновения двух кубов уже сложней, тогда вопрос: Что считать глубиной? Напрашивается ответ, нам нужно расстояние на которое следует вытолкнуть тело из коллизии,

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

И наш алгоритм не должен подменять трение. Трение там отдельно реализовано.

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

Самый похожий код на код дампинга это

 const btScalar deltaVel1Dotn	=	c.m_contactNormal.dot(body1.internalGetDeltaLinearVelocity()) 	+ c.m_relpos1CrossNormal.dot(body1.internalGetDeltaAngularVelocity()); 
Что бы я сказала, что я понимаю, то нет. Мне кажется lowerLimit раньше не было и код был короче. Об этом и написала.

c.m_appliedImpulse — тут мы сообщаем с каким импульсом мы обработали коллизию. (Например, громкость удара)

Но получается, что если сила меньше, то ее фактически в тайне увеличивают до какого то миниума.

Зачем? Вопервых в буллет очень, хорошо борются с denormal numbers. Тут ни что не касается в ноль. (trashhold) Если интеловские процы нормально обрабатывают denormal, то многие другие например армы переходят в soft и это прерывание им стоит 100 тактов.

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

Вообще вопрос касается интересной проблемы. Ведь если мы имеем две коробки и алгоритм boxbox, то какой будет перпендикуляр касания, какая коробка первый параметр и какая коробка второй параметр. Часто так получается, что 3 сеукнды одна коробка первый параметр, и все красиво скользит потом, что где то далеко меняется, и это меняет параметры в boxbox местами и все летит в тар-тарары.
Создатель Bullet в начале работал на Havok. Потом он работал в Sony, потом в AMD. AMD как раз хотели добавить Open CL в Bullet, Open CL не использовала, не знаю. Вот видео вероятно как результат той работы. www.youtube.com/watch?v=8jGZv1YYe2c 110 тыс кубиков это очень много для симуляции в реальном времени
Тут описано три шага: Broadphase, Narrowphase, Solver. Я опустила управления памятью. Я не рассмотрела суставы и трение. Быстрый поиск поиск в статических мешах. Что ваш упрек заслуженный и я попробую исправится. AxisSweep3 это 16 битный алгоритм, который забивает большую AABB коробку на 16384 маленьких коробки и все объекты помещает в эти коробки и так и ищет. Чем то напоминает хеш таблицу. Если 16384 коробки мало, то есть bt32BitAxisSweep3 32 битный аналог.

Information

Rating
Does not participate
Registered
Activity