135 градусов можно объяснить визуально вектором нормали каждой вершины, направленной наружу, и он должен иметь одинаковый угол с каждым ребром, частью которого является вершина. Так как внутренний угол составляет 90 градусов, 270 градусов находятся за пределами этого угла. Поэтому 270 градусов / 2 = 135 градусов.
Нормальные векторы каждой вершины используются для вычисления нормального вектора треугольника. Для вашей 3d-модели, представляющей собой набор плоских треугольников, наличие только одной нормали для расчета освещения по ней приведет к плоскому затенению (вы будете физически корректны, если объект действительно будет таким резким). Использование нормалей вершин для интерполяции «нормалей» для каждой точки треугольника дает плавное освещение, собирая гладкую поверхность.
Проблема этого подхода заключается в использовании только одной нормальной нормали на вершину, в результате куб получает затенение, похожее на сферу, в то же время оставаясь кубом.
Это в основном причина того, почему нужно определить куб с 24 (= 6x4) вершинами, а не 6. Таким образом, можно иметь куб со всеми гранями (и, следовательно, каждым из двух его треугольников), чтобы они были правильными (плоскими ) нормальные.
Имея 24 вершины и, следовательно, 24 нормали, можно определить только нормали, обращенные вперед, для каждого треугольника / грани, чтобы нормали всегда указывали под углом 90 градусов от грани / грани и, следовательно, обеспечивали плоскую штриховку для каждого треугольника. / грань, которая более правильна для куба, поскольку его поверхности действительно плоские.
Обычно никто не хочет плавно затенять крутой угол, например 90 (270) градусов. Обычная интерполяция используется только для имитации «органических» / «гладких» поверхностей. Поскольку эти органические / гладкие поверхности являются нормой (подумайте о чайнике или трехмерной фигуре), было принято решение сохранить нормали вершин с координатами положения и ультрафиолета, поскольку это норма для большинства «непрерывных» трехмерных поверхностей. , Обычно вы добавляете больше треугольников для представления гладкой топологии в модели. Поэтому наличие нормалей вершин является компромиссом для минимизации объема информации для средней модели.
Модель куба со всеми плоскими треугольниками, следовательно, является наихудшим случаем. Вот почему каждому углу куба нужны три нормали вершин, по одной для каждой грани, у которых это вершина.
PS: сегодня эти «гладкие» поверхности дополнительно определяются с помощью карт нормалей, выпекаемых из модели более высокого разрешения. Используя карты нормалей, каждая точка на грани получает свой собственный вектор нормалей (или вектор нормалей каждой точки можно интерполировать из выборок векторов нормалей, предоставленных сопоставленной картой нормалей).