Поле відстані ( або перетворення відстані чи карта відстані ) - це сітчаста структура, де кожна комірка в сітці являє собою найкоротшу відстань від цієї комірки до комірки з деяким іншим властивістю. Найчастіше, що "інша властивість" - це межовий тип комірки, наприклад стіна, яку гравець не може пройти, або поверхня сітки.
Відстанні поля мають багато застосовних. Ви можете собі уявити, наприклад, як вони можуть використовуватися для здійснення наведення руху (шляхом створення відстаней до небезпечних або бажаних об'єктів і зважування ними рішень щодо руху).
Однак ви спеціально запитали про зіткнення. Використання дистанційних полів для виявлення зіткнення між двома рухомими об'єктами може швидко стати досить неефективним, оскільки відновлення полів відстані може ставати дуже повільним у міру зростання сфери дії (особливо в 3D, хоча методи покращення часу генерації - це область досліджень ).
Зіткнення поля на відстані використовується, головним чином, для виявлення зіткнення динамічного об'єкта зі статичним. Найчастіше я це бачив для виявлення зіткнення тканинних (або інших деформованих) предметів з іншими нерухомими предметами в сцені .
Грубо це досягається за допомогою підписаного поля відстані для статичного об'єкта, де один знак (часто негативний) являє собою комірку всередині сітки, а інший (очевидно, часто позитивний) являє собою клітинку поза сіткою. Частинки тканинної сітки можуть бути перетворені в локальний простір статичної сітки, а положення "до" і "після" частинки під час даного етапу моделювання полотна можна перевірити на відстані поля, щоб визначити, чи змінився знак (і таким чином сталося зіткнення). Це метод, про який йдеться у цій статті, наприклад, про моделювання тканини .
Зауважте, що я б не пропонував використовувати поля відстані як єдиний метод виявлення зіткнень. Вони можуть бути досить ефективними в тому, в чому вони хороші, але не в усьому хороші. Найкращий спосіб досягти ефективного виявлення зіткнень - це використання декількох методів, ієрархічно, із збільшенням точності, коли ви рухаєтесь за ієрархією.