Unity 6.3
0 онлайн 77 гостей 3 в системе
Вход

Применить интерполяцию к Rigidbody

Интерполяции обеспечивает способ управлять появлением джиттера в движении вашего Rigidbody GameObjects во время выполнения.

Джиттер может возникнуть, когда частота обновления физических моделей (определяемая Фиксированный временной шаг) медленнее, чем частота кадров приложения. Это наиболее заметно, если у вас есть Rigidbody с движением, основанным на физике, которое камера отслеживает во время работы.

Система PhysX в Unity позволяет реализовать интерполяцию. Параметр Интерполяция компонента Rigidbody предоставляет два варианта сглаживания движения Rigidbody, если во время выполнения оно выглядит прерывистым: Интерполяция и Экстраполировать.

Как интерполяция, так и экстраполяция рассчитывают позицию Rigidbody (т.е. положение и вращение) между обновлениями физики. Какой вариант выбрать зависит от того, какой вариант дает наилучший визуальный результат для вашего сценария использования.

Вы должны использовать интерполяцию или экстраполяцию только в том случае, если видите тремор в движении вашего Rigidbody. Интерполяция устанавливается на Нет по умолчанию.

Когда интерполяция или экстраполяция включены, физическая система берет на себя управление преобразованием Rigidbody. По этой причине, вы должны следовать за любым прямым (нефизическим) изменением преобразования с вызовами Physics.SyncTransforms. В противном случае, Unity игнорирует любое изменение преобразования, которое не происходит от физической системы.

Интерполяция

Используйте позу Rigidbody из предыдущих двух обновлений физики, чтобы рассчитать и применить позу Rigidbody в текущем кадре.

Интерполяция делает так, что Rigidbody выглядит, как будто она немного отстает от места, где должна быть. Это происходит потому, что интерполяция задерживает позу Rigidbody на одно обновление физики, так что у нее есть две точки для использования в своих расчетах и достаточно времени, чтобы переместить Rigidbody в новую позу.

Интерполяция более точна, чем экстраполяция, но имеет задержку во времени в одно обновление физики.

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

Интерполяция представлена свойством API RigidbodyInterpolation.Interpolate.

Экстраполировать

Использовать позу Rigidbody из предыдущего обновления физики и предсказать позу Rigidbody в следующем обновлении физики, чтобы рассчитать и предсказать позу в текущем кадре.

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

Экстраполяция зачастую менее точна, и может заметно превысить границы столкновения (и затем исправить себя в следующем кадре, после следующего обновления физики). Это потому, что расчеты экстраполяции не учитывают будущие физические силы или расчеты.

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

Экстраполяция представлена свойством API RigidbodyInterpolation.Extrapolate.