Я хочу, чтобы объекты перемещались между двумя физическими симуляциями через «окно» и сталкивались с объектами обеих симуляций в случае, если они пересекают плоскость окна.
Системы координат моделирования не имеют одинакового происхождения и могут иметь различную ориентацию. Заворачивать симуляцию в себя не нужно, но это будет плюсом.
Как эффективно подключить системы без клонирования отдельных объектов?
Редактировать:
Расчеты должны быть максимально точными, чтобы объекты не застревали, если они пересекают окно одновременно с противоположных сторон.
physics
collision-detection
Tamschi
источник
источник
Ответы:
Есть такой классный проект под названием Pseudoform, ранее известный как «Portalized», который обрабатывает физические симуляции с использованием порталов в классной манере:
Pseudoform
Проверьте это!
Особенно видео - это потрясающе круто.
Это открытый исходный код, так что вы можете увидеть, как они это делают.
Бьюсь об заклад, это то, что вы хотите. :)
источник
Хорошо, я не знаю, сработает ли это.
Основываясь на вышеупомянутой информации, я бы поставил триггеры на «окна», чтобы я мог определить, когда объект выходит из мира. Захватить вектор скорости тока во время столкновения. Рассчитайте оставшееся время, основываясь на том, где он нажал на спусковой крючок и где он оказался в этом кадре (за пределами мира вашему миру для этого потребуется виртуальная граница). На данный момент вы знаете скорость и оставшееся время, поэтому вы можете переместить его на границу мира, в который он собирается войти, и перепроектировать скорость. Это, однако, потребовало бы двух обновлений физики в одном кадре, и был бы пограничный случай одного объекта, идущего от a до b, в то время как другой переходит от b к a в той же позиции - столкновения вообще не было бы обнаружено.
Какая отрывочная,
источник
Я прочитал некоторые сведения о физическом моделировании и нашел возможное решение. Он работает, разбивая каждый физический шаг на три фазы:
1. Предварительный шаг:
Каждый физический шаг, окно создает четыре преобразования, два для каждой стороны соединения:
(Статические окна нужно сделать только один раз.)
Кроме того, объекты в каждой системе координат делятся на три группы:
Физическая группировка http://content.wuala.com/contents/Tamschi/Stack%20Exchange/WindowGrouping.png
Объекты перед окном (зеленые).
Объект также считается в этой группе, если он пересекает плоскость окна или может пересечь его из-за окна (не показано).
Объекты, которые пересекают окно или могут пересечь его на этом шаге физики (оранжевый).
Объекты за окном (синие). Если объект летит к задней стороне окна, он все равно помечается как член группы три.
Группировка может быть упрощена, если окно находится на границе симуляции.
2. Main-Step:
Физика рассчитывается в основном как обычно, с некоторыми исключениями:
Объекты из второй группы никогда не сталкиваются с объектами из третьей и наоборот.
Входное преобразование окна используется для объектов из второй группы, и результаты сравниваются с передними и пересекающимися объектами из целевой системы. Результирующая сила преобразуется с использованием выходного преобразования и применяется к исходному объекту.
(Если объект попал в расчет, его необходимо перегруппировать!)
3. Пост-шаг:
Если объект из второй группы пересек окно, он перемещается в систему назначения с использованием преобразования ввода.
Дополнительные мысли:
Если преобразования сохраняются после вычисления физики, они могут использоваться для ускорения рендеринга и для более простых вычислений ИИ. Группировка может быть использована для удаления клип-плоскостей из процесса рендеринга.
Недостатком этого решения является то, что окна должны быть добавлены непосредственно в физический движок.
источник