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

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

Страницы: 1 2
#15
3:17, 5 фев. 2019

Zogrim
>кубики размером 1х1м будут стекаться значительно лучше, чем кубики 1х1см
Размеры кубиков у меня сантиметров 5. Что бы нормально работало, я уменьшил офсет до 0.002, т.е до 4 миллиметров.

> PhysX 4.0 обещали этот момент улучшить, но нужно переключать солвер на TGS
У меня как раз 4.0, но что до TGS то там темный лес. Нет ни примеров ни документации.


#16
1:22, 7 фев. 2019

Вопрос, а кто-нибудь делал симуляцию в отдельном потоке? Как считаете шаг?
Следующий вопрос: Не возникало ситуации, когда не удалялись физические тела со сцены? Это даже в SingleThreaded версии. чяднт?

#17
9:35, 8 фев. 2019

NickGastovski
> Вопрос, а кто-нибудь делал симуляцию в отдельном потоке?

PhysX сам по себе мультитредовый и число потоков ты можешь установить сам. У меня например работают 8 потоков. Пробовал 16, но особого выигрыша уже не получил (250 мкс против 300).

#18
16:59, 8 фев. 2019

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

#19
3:47, 9 фев. 2019

NickGastovski
> вызов simulate занимал приличное время, поэтому закинул его в отдельный поток
Это никакого смысле не имеет. Функция simulate сама вызывает треды для анализа коллизий, т.е. ты запустил "запускатель" в отдельном треде, что совершенно бессмысленно. Поставь PxDefaultCpuDispatcherCreate(8) - будет у тебя 8 тредов. Мало - поставь больше.

В продолжение темы:
мне надо сделать что-то вроде шайб на льду, т.е. шайбы по льду должны катиться без трения, но при соударении друг с другом трение должно быть значительным. Я поставил для льда метериал createMaterial(0.0, 0.0, 0.2), для шайб - createMaterial(0.7, 0.7, 0.7). И фиг вам, шайбы почти сразу останавливаются. Похоже трение берется как среднее значение из трений столкнувшихся тел.
И че делать? Как это можно обойти?

#20
12:32, 9 фев. 2019

Попробовать PxFrictionType::eTWO_DIRECTIONAL, есть эффект что дефолтный алгоритм не всегда точно считает

#21
13:10, 9 фев. 2019

san, ладно, сегодня попробую профайлером пройтись и посмотреть.
Вообще говоря, количество воркер-потоков выбирается следующим образом: кол-во физ.ядер-1. Поэтому это не хардкорится у меня.

#22
(Правка: 19:02) 18:51, 9 фев. 2019

NickGastovski
Ты запусти WPR, а потом посмотри через GPUview, когда нажмешь 2 раза на +, будет видно треды от PhysX.
Что до ядер, то не совсем так. Не ядер, а логических процессоров. Для I-7 число ядер надо умножать на 2, для AMD тоже нечто подобное. У меня шестикоровый I7, так что 8 тредов самое то. Но если проц слабый, то лишние треды все равно не помешают. Хуже не будет.

#23
18:57, 9 фев. 2019

WPR?

#24
(Правка: 19:10) 19:06, 9 фев. 2019

NickGastovski
Windows Performance Recorder. Это входит в Windows SDK. Поставь его сначала, если не стоит.

#25
15:18, 10 фев. 2019

Посмотрел. Разницы в поведении и производительности, на глаз, никакой. Надо под профайлером запустить.

По поводу количества воркеров-мной описанный способ используется по-умолчанию(посмотри в семплах или в доке). Как раз по производительности бьёт. Легко проверяется на каком-нибудь двухядерном i7u :)

#26
15:21, 10 фев. 2019

Я на VTune хочу погонять, но пока не до этого.

Ты с Character controller'ом не разобрался?(прыжки).

А продвинутые stepper'ы не смотрел?

#27
15:24, 10 фев. 2019

Не могу отредактировать пост в мобильной версии сайта(.

Уточняю,
Simulate профилировал через vtune

#28
21:15, 10 фев. 2019

NickGastovski
> Разницы в поведении и производительности, на глаз, никакой
Ты не на глаз, а посмотри в GPUvuew сколько времени у тебя занимают треды PhysX'а. И надеюсь ты релиз версию проверяешь, а то в дебаге физика работает в несколько раз медленнее.

Страницы: 1 2
ПрограммированиеФорумФизика