Используя PhysX, как я могу предсказать, где мне нужно будет генерировать процедурные формы столкновения ландшафта?

8

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

Мое текущее потенциальное решение, которое может быть наивным, состоит в том, чтобы перебирать всех «активных» физических актеров, использовать их границы / экстенты и скорости для генерации сфер, в которых они могут находиться после обновления физики, а затем генерировать значения высоты для диапазонов, охватывающих кластерные группы. актеров. Однако, большая часть этих данных уже рассчитана PhysX.

Есть ли какой-нибудь API, возможно набор запросов, даже обратные вызовы из пространственной системы, которые я мог бы использовать, чтобы предсказать, где понадобятся значения высоты ландшафта?

Сион Шеевок
источник
Мне кажется, вы уже закодировали лучшее решение. Не уверен, как работает PhysX, возможно, вместо этого вы можете использовать ограничивающие прямоугольные триггеры на своих кусках ландшафта и генерировать формы столкновений, если что-то входит (вызывает) в этот блок. В основном то, что вы делаете, но с другой стороны и с физикой столкновений PhysX.
аэрозон

Ответы:

0

Если вы генерируете сетки из ваших данных для рендеринга, вы можете передать сетку в PhysX в качестве сетки коллайдера. Это означает, что PhysX и ваш рендерер ссылаются на один и тот же объект.

Этот Бездомный Парень
источник
1
Не следует предполагать, что видимая местность - это единственная местность, с которой могут сталкиваться объекты. Проблема состоит в том, чтобы быстро определить, с каким диапазоном местности можно столкнуться, так что формы столкновения могут быть сгенерированы для них по требованию.
Сион Шеевок
1
ru.wikipedia.org/wiki/Octree, разделяя мировые данные на кубы и «разрезая» их там, где у вас есть свободная встречная сущность, вы можете затем вызывать данные рельефа в очень маленькой области с минимальными издержками. Вот пример использования четырех деревьев для столкновения двумерной частицы, но концепция для дерева совпадает, но с дополнительным измерением. Это также позволило бы отдельным свободно сталкивающимся объектам сталкиваться друг с другом. youtube.com/watch?v=fuexOsLOfl0 Затем вы можете генерировать очень маленькие коллайдеры на основе данных о местности рядом со свободно встречающимися объектами
That Homeless Guy
1
Я знаком с октреями и пространственным разделением - PhysX уже делает это внутренне. Мне нужна информация от PhysX относительно его системы пространственного разделения, чтобы я мог генерировать формы столкновения местности, где они необходимы, потому что местность является процедурной.
Сион Шеевок
1
Вы упускаете суть. Я генерирую данные для местности. Я выбираю эти данные, чтобы построить поле высоты. Мне нужно предсказать, где нужны данные о местности. Если в (-100.0, -100.0) есть объект, мне нужно сгенерировать местность вблизи (-100.0, -100.0), прежде чем я буду симулировать физику. Мне также нужно создать достаточно большую область местности, иначе объект может переместиться за пределы области и оказаться ниже того места, где был бы ландшафт, если бы он был создан в этой области. PhysX уже должен отслеживать такую ​​информацию, чтобы предсказать возможные столкновения - мне нужна эта информация. Я не знаю, если / как это сделать.
Сион Шеевок
1
Это метод обхода, который я обрисовал в своем вопросе, да. Я спрашиваю, могу ли я получить работу, которую PhysX уже проделал, чтобы я не излишне вычислял те же результаты. Я еще не нашел пути, но я не настолько знаком с API PhysX без лицензирования.
Сион Шеевок