Рис. 8.5. Добавление отраженных бликов Еще одним эффектом, увеличивающим реалистичность изображения, является добавление теней. На рис. 8.6 показана та же сцена, что и на рис. 8.5, однако на ней соответствующим образом визуализированы тени. (Один объект отбрасывает тень на соседний объект.) В разделе «Добавление теней объектов» мы изучим, как это делается.
8.1. Введение
Рис 8.6. Та же сцена, визуализированная с тенями Добавление к объекту текстуры представляет собой большой шаг на пути к реалистичности. На рис. 8.7 показана сцена с рис. 8.6, однако теперь все поверхности «раскрашены» различными текстурами. При применении этих текстур различные поверхности могут казаться сделанными из каких-нибудь материалов, например из дерева, мрамора или меди. Кроме того, изображение можно наносить на объект, как переводную картинку.
Существуют и другие технологии, усиливающие реалистичность. В главе 14 мы будем подробно изучать трассировку лучей. Этот подход является дорогостоящим с вычислительной точки зрения, однако трассировка лучей несложна для программирования и создает изображения с правильными тенями, зеркальными отражениями и прохождением света сквозь прозрачные объекты.
В этой главе мы изложим несколько методов визуализации сцен с еще большей реалистичностью. Вначале мы рассмотрим классические модели освещения, используемые в компьютерной графике, которые создают вид объекта, освещенного несколькими источниками. Мы увидим, как следует рисовать полигональную сетку, чтобы она выглядела как гладкая криволинейная поверхность. Затем мы будем изучать особый метод удаления невидимых поверхностей - технологию, используемую внутри OpenGL, - и увидим, как она встраивается в процесс визуализации. (В главе 13 исследуется ряд других методов удаления невидимых поверхностей.) Далее мы будем изучать технологии изображения теней, которые один объект отбрасывает на другой, наложения текстуры на поверхность, чтобы она выглядела сделанной из какого-нибудь определенного материала, или нанесения на нее какого-либо рисунка Кроме того, мы рассмотрим хромированное отображение (chrome mapping) и отображение окружающей среды (environment mapping) и увидим, как в результате их применения локальная сцена кажется вложенной в более общую сцену.