- •9. Создание реалистических изображений
- •9.1. Пространственные модели
- •9.2. Геометрическое моделирование объектов сложной формы
- •9. 3. Текстуры
- •9. 4. Основные операции при построении реалистических изображений
- •9.5. Моделирование источников освещения и расчёт освещённости малых участков поверхности объектов
- •9.6. Моделирование отражающих свойств поверхностей
- •9.7. Моделирование отражения от поверхности (затенение)
- •1. Плоское затенение (Flat). Освещенность грани принимают постоянной и равной освещенности одной из вершин II (1£ I £ k), либо среднему значению по всем вершинам
- •9. 8. Удаление невидимых граней. Расчёт теней
- •9.9. Создание стереоскопического эффекта
- •9. 10. Анимация
9. 8. Удаление невидимых граней. Расчёт теней
Рассмотрим последовательность действий, которая обыч-но применяется при удалении невидимых граней. Допустим, уже сформировано множество треугольных граней t t1 ,..., tn и все они непрозрачны.
I. Удаление граней, расположенных на невидимых сторонах объектов.
Для каждой грани рассматривается ее внешняя нормаль N, а также радиус-вектор r, соединяющий точку на грани с точкой наблюдения.
Рис 9.6
Если грань находится с видимой стороны объекта, то для угла y между векторами N иr выполняется условие y < 90 o , если с невидимой, то y 90 o (Рис.9.6). Данное условие проверяется для всего массива треугольников t. Из него удаляются все, у которых
yi 90 o.
Обозначим множество оставшихся треугольников через t t1 ,...tm, m<n.
I. Удаление граней, полностью закрывающихся другими, и определение видимых частей граней, закрывающихся час-тично.
198
Организуется последовательный просмотр множества и для каждого треугольника tJ выполняются следующие опера-ции:
1.Рассматривается списокt, в который входят треугольники tk с номерами k = j+1, ... , m - т.е. все последующие за tJ треугольники из t. Из списка t удаляются заведомо непересекающиеся с tJ треугольники. Допустим , tk t. Обозначим координаты вершин с номерами 1, 2, 3 в треуголь-никах tJ и tk в виде:
tJ = ( (хJ 1 , уJ 1 ), ( хJ 2 , уJ 2 ), ( хJ 3 , уJ 3 ) ) ,
tk = ( (хk 1 , уk 1 ), ( хk 2 , уk 2 ), ( хk 3 , уk 3 ) ) .
Условия пересечения tJ , tk по оси х формулируются в виде двух неравенств:
( Рис.9.7)
(Рис.9.8)
Первое неравенства означает, что все вершины tJ лежат левее по оси х всех вершин tk, второе неравенство - обратное условие.
Условия непересечения tJ и tk по оси y формулируются аналогично. При непересечении tJ c tk хотя бы по одной из осей x, y треугольник tk исключается из списка t. В итоге после исключения заведомо непересекающихся с tJ треугольников из списка t получается сокращённый список t треугольников, которые имеют пересечения с tJ по обеим координатам. Если список t пуст, то треугольник tJ сохра-няется в списке t и рассматривается треугольник из этого списка с последующим номером (переход к пункту 1).
Eсли список t не пуст, то это означает, что есть тре-угольники, пересекающиеся с tJ одновременно по обеим координатам. Эта ситуация встречается наиболее часто.
199
Рис. 9.7 Рис. 9.8
Здесь используется более углубленный анализ относи-тельного положения граней.
Поочередное сравнение треугольника tJ с треугольниками из t. Возможны следующие случаи относительного расположения tJ и треугольников tst:
а) треугольники не пересекаются (Рис.9.9), поэтому никаких действий производить не требуется.
Рис. 9.9 Рис. 9.10
б) tJ попадает внутрь ts (Рис. 9.10). Дополнительно анали-зируется их близость к наблюдателю. Если ts ближе, то tJ ис-
200
ключается из списка видимых граней и его анализ закан-чивается. Если tJ ближе, то видимая часть ts делится на новые треугольные грани, которые включают в список t вместо ts .
в) ts попадает внутрь tJ (Рис. 9.11). Обработка аналогична.
Рис. 9.11 Рис. 9.12
г) треугольники tJ и ts пересекаются (Рис. 9.12). Исходя из близости граней к наблюдателю невидимые части граней исключаются, оставшиеся части при необходимости разбивают на новые треугольники и рассматривают вместо исходной грани.
Алгоритмы нанесения теней идентичны алгоритмам удаления скрытых граней с той разницей, что во втором случае определяются поверхности, видимые наблюдателем, а в первом – поверхности, видимые из источника освещения (осве-щаемые). Эти поверхности воспринимают свет от источника в отличие от не воспринимающих невидимых (затенённых) поверхностей. Поскольку на сцене, как правило, всегда присутствует несколько источников (в том числе – и рассеян-
201
ный свет, то затенённые относительно одного источника по-верхности освещаются другими.
Если объекты и источники освещения неподвижны, а изменяется только положение наблюдателя (он рассматривает неподвижную сцену), то положение теней не изменяется и они рассчитываются только один раз.