Но как обнаруживать столкновения на фигурах из маленьких треугольников?
Не делая этого.
Обнаружение столкновений с произвольным набором треугольников (или, что еще хуже, между двумя наборами произвольных треугольников) непомерно дорого.
Вместо этого мы обычно выполняем обнаружение коллекции иерархическим образом, начиная сначала с чрезвычайно грубых, простых фигур (таких как прямоугольники или сферы), которые (плохо) аппроксимируют базовый объект.
Это позволяет нам быстро отклонить большинство потенциальных столкновений как «не происходящие», что является обычным случаем. В случае, когда такая грубая проверка проходит, это указывает на потенциальное фактическое столкновение, и мы приступаем к выполнению проверки по более подробному приближению базовой формы (например, из нескольких плотно подогнанных капсул или множества выровненные ограничительные рамки).
По сути, обнаружение столкновений начинается с грубых тестов и, по мере прохождения этих тестов, переходит к все более подробному представлению. Это изображение, предоставленное Широ в комментарии к ответу Александра , иллюстрирует, как сложная модель (человек) может быть представлена серией более простых форм:
В редких случаях нам действительно нужно выполнять столкновение на уровне отдельного треугольника, и когда мы это делаем, мы обычно используем более грубые методы, чтобы детализировать очень маленький набор потенциальных треугольников для проверки. В этот момент для выполнения тестов используются определенные алгоритмы, как если бы вы проверяли, перекрываются ли два прямоугольника. Например, вы можете определить, где и где луч попадает в треугольник .