Войти
ПрограммированиеФорумФизика

Вопрос знатокам PhysX

Страницы: 1 2 Следующая »
#0
(Правка: 8:28) 8:04, 29 янв. 2019

Разбираюсь с PhysX SDK. Вроде работает, но есть одна проблема, насколько я понимаю, для продвинутых (себя к таковым не отношу ни коим боком).

Короче мне надо собрать пирамидку из кубиков (наважно для чего, но поверьте что надо), и по возможности большую (ну скажем 10 кубиков друг на друге). Да, речь идет о VR. Используя SDK как есть, у меня больше 6-7 кубиков не получается - при приближении очередного кубика пирамидка начинает дрожжать и падает. Хотя кубики вроде стоят более-менее ровно, но видимо 7 степеней свободы приводит SDK в ступор, а 8 - уже фатально в 100% случаях (кстати тот же результат на bullet3).

Стал я думать. Если сделать кубики клейкими или намагниченными то вроде все должно быть устойчивее. Осталось понять как это сделать. Упоминания об этом в документации есть, но весьма туманные. Типа можно, но как - разбирайтесь сами. В конце концов до ContactModifyCallback::onContactModify(PxContactModifyPair* const pairs, PxU32 count) я добрался. Вызывается. Имею пары которые контачат и список контактов. И че дальше с этим делать? Как сделать что бы они слиплись, скажем если нормали противоположные, т.е они плоскостями соприкоснулись?


#1
11:33, 29 янв. 2019
как вариант выключать им физику и включать в момент контакта оО
Но не уверен что такое будет красиво
еще наверное можно скрепить их джоинтами
#2
14:43, 29 янв. 2019

Не знаток физикса.
Но, может, там число итераций солвера можно увеличить.
То что он не держит пирамиду из 10 боксов это ненормально.

Вот самопальная физика и пирамида из 101 кубика при 20 итерациях солвера.

#3
(Правка: 16:43) 16:33, 29 янв. 2019

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

#4
17:11, 29 янв. 2019

san
Во всех движках используется маленький шаг солвера, но много раз. А не 1 на кадр.

#5
18:21, 29 янв. 2019

Я беру стандартную настройку движка. Начинаю строить башню. Пять кубиков ставятся легко. Шестой вызывает шаткость конструкции но его еще поставить можно. Когда берешь седьмой и только подносишь его к башне, чаще всего она рушится. Т.е. еще до контакта. Если все же удается пристроить седьмой, то восьмой вызывает обрушение в 100% случаев.

#6
3:06, 31 янв. 2019

проблема решена ? Интересно

#7
(Правка: 7:35) 7:28, 31 янв. 2019

endeavour_pr
Проблема решена обходным манёвром. :)
Просто я понял, что для меня главное это поставить кубик в правильную позицию. И что бы он там не трепыхался попусту. Короче после того, как кубик правильно поставлен (ну т.е. близко к центру башни), я стал его двигать до полного совпадения и превращать в кинематический. При этом отрубаю ему гравитацию и ставлю бесконечную массу. Теперь он стоит мертво. А на него уже легко поставить другой кубик и он тоже замрет. Когда я пытаюсь вынуть кубик, то я его обратно превращаю в динамический, а те, что над ним, я плавно двигаю на освободившееся место и опять все стоит и не дергается. Таким манером я могу делать башню любой высоты.

Это конечно не совсем честное решение, но для моих целей вполне годится.

P.S.
Пока экспериментировал, мне удалось построить башню из 8 кубиков. На втором часу появился необходимый опыт :)
Вообще забавный процесс, меня даже азарт пробил. Кубики падают, башня шатается... Если рука слегка дрожжит то все рушится. И с той стороны подойдешь и с этой... Прикольно.

#8
15:22, 31 янв. 2019

воу

#9
11:52, 1 фев. 2019

Нет у PhysX'а таких проблем https://drive.google.com/open?id=1fYd2XGTTJZYsOHEYpttFz36gfWusOrbU

#10
18:41, 1 фев. 2019

BingoBongo
Прекрасно, тогда научи меня, расскажи из-за чего у меня больше 8 кубиков в пирамидку поставить не удается. А лучше покажи исходник того примера что на видео - я попробую сам разобраться в чем неправ. Когда я таким же образом роняю кубики, они сразу рассыпаются. Кстати и в реальности подобная конструкция развалится, поведение кубиков на видео выглядит скорее неестественно.

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

#11
19:21, 1 фев. 2019

san
https://docs.nvidia.com/gameworks/content/gameworkslibrary/physx/… oing-to-sleep
или гугли stacking problem solving

#12
19:29, 1 фев. 2019

lookid
Спасибо за полезную информацию. В принципе частная проблема уже решена (см. выше) но в будущем пригодится.

#13
21:43, 1 фев. 2019

lookid
> гугли stacking problem solving
спасибо !

#14
8:07, 4 фев. 2019

Еще момент - движок чувствителен к масштабу. Т.е. кубики размером 1х1м будут стекаться значительно лучше, чем кубики 1х1см
В PhysX 4.0 обещали этот момент улучшить, но нужно переключать солвер на TGS

Плюс есть такая фича как stabilization

Страницы: 1 2 Следующая »
ПрограммированиеФорумФизика