В общем случае это не просто соображение эффективности. Нормали являются частью модели и не могут быть выброшены и повторно сформированы из вершинных позиций.
Изображение типичный случай, когда вы строите форму в программе моделирования. Внутренние данные, описывающие форму в программном обеспечении, скорее всего, состоят из аналитических поверхностей, например. шлицевые поверхности. Когда вы экспортируете форму в формат на основе вершины, аналитическая поверхность аппроксимируется треугольной сеткой. Вершины сетки будут выписаны как позиции вершин, а также информация о связности, определяющая, как вершины образуют сетку. Нормали аналитической поверхности в точке вершины будут вычислены для каждой вершины и выписаны вместе с положениями вершин.
Если у вас есть сетка из вершин без нормалей (например, поскольку вы никогда не экспортировали нормали или не отбрасывали их), вы все равно можете вычислить нормали поверхности. Обычно это делается путем усреднения нормалей лица всех грани, примыкающих к каждой вершине, возможно, как взвешенное среднее значение, учитывающее площадь или угол лица. Но независимо от того, как этот расчет выполнен, результатом является приближение нормалей исходной аналитической поверхности.
Разница между использованием точных нормалей исходной аналитической поверхности и использованием аппроксимированных нормалей, восстановленных из треугольной сетки, может быть очень заметна при рендеринге. Это будет в значительной степени зависеть от того, насколько тонка тесселяция, и от какой модели освещения используется. Но в большинстве случаев восстановленные нормали не так хороши, как нормали от исходной модели, а поверхность с нанесенным покрытием будет выглядеть намного более гладкой/более чистой, если используются исходные нормали.
Значит, стандарт MOST имеет нормали во внешнем файле? – Robomoo
@Robomoo вместе с другими данными, связанными с моделью, да. Хотя текстуры (изображения) являются внешними. –