Что означает «Итерация по умолчанию»? - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь понять движок Unity Physics (PhysX). Может кто-нибудь объяснить, что именно Итерации решателя по умолчанию и Итерации скорости решателя по умолчанию - это?

enter image description here

Это из документации Unity:

Итерации решателя по умолчанию: Определите, сколько решающих процессов Unity запускает в каждом физическом фрейме.Решатели - это небольшие задачи физического движка, которые определяют ряд физических взаимодействий, таких как движения суставов или управление контактом между перекрывающимися компонентами Rigidbody.Это влияет на качество выходных данных решателя, и рекомендуется изменить это свойство в случае, если используется нестандартное Time.fixedDeltaTime или если конфигурация требует больших усилий.Как правило, он используется для уменьшения дрожания, вызванного соединениями или контактами.

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

1 Ответ

0 голосов
/ 07 мая 2019

Я задал этот вопрос на форуме Unity, и Hyblademin ответил на него:

В математике метод итеративного решения - это любой алгоритм, который приблизительно решает систему неизвестных значений, таких как [x1, x2, x3 ... xn], повторяя набор шагов (итерация).Часто представляющая интерес система представляет собой набор линейных уравнений, точно таких же, как те, которые встречаются в классе алгебры, но с чрезмерно большим числом неизвестных.

Начиная с предположения о решении для каждого неизвестного, которое может быть основано нааналогичная, известная система или может быть из общей отправной точки, как [1, 1, 1 ... 1], выполняется процедура, которая дает приблизительное решение, которое будет ближе к точным значениям.Только после одной итерации аппроксимация не будет очень хорошей, если исходное предположение уже было близко.Но процедуру можно повторить с первым приближением в качестве нового входа, что даст более близкое приближение.

После повторения еще несколько раз мы можем ожидать надежного приближения.Это все еще не точно, что мы могли бы подтвердить, просто вставив наши ответы в нашу исходную систему и увидев, что это не совсем правильно (после упрощения мы получим такие вещи, как 10 = 10,001 или что-то в этом роде),Тем не менее, если аппроксимация достаточно близка для нашего приложения, мы прекращаем итерацию и используем ее.

Эти примечания к лекции, любезно предоставленные курсом Нотр-Дам, дают хороший пример этого в действии с использованием известного метода Якоби.,Выполнение итерации итеративного метода выводит приближение, которое лучше, чем вход, потому что методы определены так, чтобы это происходило, и это свойство называется сходимостью.При взгляде на то, почему любой данный метод сходится, все довольно быстро абстрагируется.Я думаю, что это выходит за рамки вашего вопроса, тем более что я не знаю, какой метод (ы) Unity использует в любом случае.

Когда физика рассчитывается в Unity, мы в конечном итоге получаем множество систем уравнений,Мы могли бы нарисовать диаграмму свободного тела, чтобы показать силы и моменты во время столкновения для данного FixedUpdate во время выполнения Unity, чтобы показать это.Мы могли бы попытаться решить их «напрямую», что означает использование логических отношений для определения точных результатов значений (например, решение для x в классе алгебры), но даже если системы находятся на простой стороне, делая много из нихзамедлит выполнение до сканирования.К счастью, итерационные, «косвенные» методы могут быть использованы для получения довольно хорошего приближения за долю вычислительных затрат.

Увеличение количества итераций приведет к более точным приближенным решениям.Существует момент, когда увеличение количества итераций приводит к увеличению точности, что вовсе не стоит затрат на обработку при выполнении другой итерации.Но количество итераций для этого момента зависит от того, что вам нужно сделать для вашего проекта.Иногда заданное расположение физических объектов приводит к дрожанию с настройками по умолчанию, которые могут быть улучшены с помощью более решающих итераций, что упомянуто в ручном вводе.Не существует отличного способа определить, улучшит ли изменение счетчиков итераций решателя требуемое поведение или производительность, кроме как методом проб и ошибок (используйте Профилировщик для более объективной индикации влияния на производительность).

https://forum.unity.com/threads/what-does-default-solver-iteration-means.673912/#post-4512004

...