Нормали в вершинах и нормали к поверхностям Оказывается, выгоднее связывать нормальный вектор с каждой вершиной грани, чем задавать одну нормаль для целой грани. Как мы увидим, подобная практика упрощает процесс отсечения и процесс закрашивания для гладких криволинейных форм. Для плоских поверхностей, вроде стенки сарая, каждая из вершин V,, У2, У3, У4, определяющих боковые стенки сарая, будет ассоциирована с одной и той же нормалью п,, которая является нормальным вектором для всей стенки (рис. 6.3, а). Однако вершины передней стенки, такие как У5, будут использовать нормаль п2. (Отметим, что вершины У, и У5 расположены в одной и той же точке пространства, но используют разные нормали.)

Нормальное направление к грани определяет ее яркость

Рис. 6.2. Нормальное направление к грани определяет ее яркость

а Рис. 6.3. Связывание нормалей с каждой вершиной каждой грани

6.2. Введение в трехмерное моделирование полигональными сетками Для гладких криволинейных поверхностей, таких как цилиндр на рис. 6.3, б, используется другой подход, делающий возможным закрашивание, которое придает поверхности гладкий вид. Обе вершины - У, с грани F, и V2 с грани F2 - используют одну и ту же нормаль п, являющуюся вектором, перпендикулярным к будущей гладкой поверхности. В разделе «Нахождение нормальных векторов» мы увидим, как удобнее вычислять этот вектор.

6.2.1. Определение полигональной сетки Полигональная сетка - это совокупность полигонов вместе с нормальными векторами, связанными с каждой вершиной этих полигонов. Начнем с примера.

Пример 6.2.1. «Базовый сарай» На рис. 6.4 показана простая форма, которую мы называем «базовым сараем» («basic barn»). Он имеет семь полигональных граней и 10 вершин (каждая из которых одновременно принадлежит трем граням). Пусть для удобства сарай имеет квадратный пол с единичной стороной (перед помещением на сцену этот сарай можно как угодно масштабировать и ориентировать). Поскольку стены сарая плоские, имеется всего семь различных нормальных векторов"opengl1_385.html">⇐ Предыдущая| |Следующая ⇒