Мне на самом деле было любопытно, и у меня была программа, которая явно генерировала большое количество пользовательских сеток, поэтому я решил протестировать несколько вещей.
Первое, что я хотел подтвердить, было то, что границы были установлены автоматически. Элементарная проверка показала, что это действительно так: в частности, границы сетки автоматически пересчитываются каждый раз, когда вы устанавливаете свойство mesh.vertices. Это, вероятно, объясняет, почему свойство является массивом фиксированной длины, а не списком. (забавное примечание: если вы попытаетесь присвоить сетке вторичные свойства, такие как ультрафиолетовые координаты или нормали, перед назначением позиций вершин, то единица мягко изводит вас из-за несоответствующей длины массива перед быстрым взрывом. Так что не делайте этого.)
Что касается того, что это на самом деле влияет, у меня было предчувствие: я установил границы моих сеток равными 0. Сразу же, меши в углу моего окна просмотра заявили, что визуально отбракованы. Это говорит нам о нескольких вещах:
- Установка границ явно имеет эффект.
- Unity действительно использует пользовательские данные границ.
- Unity использует границы сетки для выполнения отбраковки усеченного конуса.
Согласно руководству Unity, в трех случаях используется класс Bounds: Mesh.bounds, Renderer.bounds и Collider.bounds. Mesh.bounds - единственное свойство из этих трех, которое доступно не только для чтения.
Что касается вопроса, почему кто-то хочет, чтобы явно устанавливал границы меша, не исключено, что вы могли бы выполнить некоторую умную оптимизацию отбраковки, например, посмотреть сложную сетку через окно или что-то подобное, но если Я должен был догадаться, кто бы ни писал этот код, он не доверял Unity точную или явную установку границ сетки.