Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Как вывести все силы, действующие на тело с Rigidbody?

Как вывести все силы, действующие на тело с Rigidbody?

Поделиться
ArhinПользовательwww7 сен. 201712:20#0
В игре есть возможность прикладывать силы к обектам, при этом есть потребность в отображении всех сил, что на него сейчас действуют. Для этого нужно что бы где то был список сил, действующих на тело, чего в Rigidbody нет. Можно самому хранить силы, а потом их применять с помощью аддфорс, но есть такие силы, которые заложены по умолчанию: реакции опоры, упругости. Как быть с ними? Может есть наработки какие то, типа самописного скрипта физики или еще что то(я ничего нормального не нашел)?
Роман ШуваловУчастникwww7 сен. 201712:33#1
Arhin
> но есть такие силы, которые заложены по умолчанию: реакции опоры, упругости.
Не факт, что в движке это реализовано "настоящими" силами. Например, угасание (damping) скорости или вращения вполне может быть сделано просто плавным уменьшением значения скорости (угловой скорости) по экспоненте. Т.е. фальшиво. Без прикладывания противодействующей силы (момента). В любом случае остается только рыть код движка.
ArhinПользовательwww7 сен. 201712:59#2
Роман Шувалов
А его можно где то взять, этот код? Или может есть самописные скрипты физики, в которых можно это реализовать?

Правка: 7 сен. 2017 13:01

MrShoorУчастникwww7 сен. 201717:37#3
Arhin
Никак не вывести. Просто потому, что движок не будет хранить 100500 сил, ибо всегда можно посчитать равнодействующую силу. А зачем понадобилось достать все силы?
ArhinПользовательwww7 сен. 201717:41#4
MrShoor
Это типа песочницы, виртуальной лаборатории, где создаются тела, к ним прикладываются силы. А ещё она предполагает использование в обучении, поэтому нужно показать все силы, действующие на каждое отдельное тело и по сути их не так то и много. Уже даже появилась мысль попытаться смоделировать ту же силу реакции опоры и трение чисто с помощью приложения сил из ригидбоди, вручную так сказать

Правка: 7 сен. 2017 18:13

MrShoorУчастникwww7 сен. 201719:46#5
Arhin
> Это типа песочницы, виртуальной лаборатории, где создаются тела, к ним
> прикладываются силы.
Тогда самый простой вариант (если движок с открытым исходным кодом) - поставить коллбек на вызов AddForce или как там у тебя, и все вызовы AddForce накапливать в список.
ArhinПользовательwww7 сен. 201719:48#6
MrShoor
В Юнити, как я знаю не открытый исходный код
Роман ШуваловУчастникwww7 сен. 201719:55#7
Arhin
> А его можно где то взять, этот код?
Ну смотря какой движок, если с открытым кодом - бери и смотри. Я использую Bullet Physics, он открытый, под лицензией zlib.
ArhinПользовательwww7 сен. 201720:16#8
Роман Шувалов
Не в курсе, можно какой то другой физ движок в Юнити прикрутить? И да, может посоветуешь что можно использовать(инструментарий вместо Юнити) что бы создать 2д(или в крайнем случае псевдо 2д) игру с интерфейсом(хоть самым примитивным:кнопки, поля, ползунки) и открытой физикой с возможностью следить за всеми силами, там применяемыми и их отображением на экране? Мне собственно говоря не нужны всякие красивости, сойдет и топорная графика, главное что бы симуляции правдоподобные получались.
Эта Буллет Физика, как я понял просто либа для С++?
Роман ШуваловУчастникwww8 сен. 20170:30#9
С Юнити дел никогда не имел, ничего подсказать не могу.

Bullet Physics - библиотека, написана на Си++.

romgermanПостоялецwww8 сен. 201712:57#10
В юнити physx, сдк на сайте инвидии. Но вряд ли это чем-то поможет.
TokarnПостоялецwww8 сен. 201715:25#11
Что мешает самому вывести всё что требуется? Да может местами потребуются спорные решения, но по мне так, кроме как руками, эту задачку не решить.
Роман ШуваловУчастникwww8 сен. 201715:38#12
Tokarn
ТС хотел получить силы от уже имеющегося движка, а не писать свой.
ArhinПользовательwww8 сен. 201716:08#13
Ладно, спасибо, попробуем как то вручную вычисли  это все дело из данных о параметрах тела

Правка: 8 сен. 2017 16:09

TokarnПостоялецwww8 сен. 201717:35#14
Роман Шувалов
> ТС хотел получить силы от уже имеющегося движка, а не писать свой.
Ну допустим Rigidbody2D может иметь только вектор velocity и angularVelocity. Это вывести можно. Ускорение свободного падения тоже.
Но это все не эйнштейновская физика - нету этого в движке. Это по сути псевдо физика, игровая. Она по сути является модификацией этих двух параметров: velocity и angularVelocity.
Всё что касается вычисления того, что желает автор - это всё путем вычислений векторов, масс, скоростей и тд.

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

2001—2017 © GameDev.ru — Разработка игр