Рис. 10.110. Визуализация характеристик шероховатой поверхности с использованием отображения шероховатости {перепечатано с разрешения: а) Питера Ширли (Peter Shirley), факультет информатики. Университет штата Юта; б) SOFTIMAGE, Inc.)
На рис. 10.110 приведены примеры поверхностей, визуализированных с помощью отображения шероховатости. Пример комбинированных методов визуализации поверхности приведен на рис. 10.111. Броня витражного рыцаря йз фильма Молодой Шерлок Холмс (“Young Sherlock Holmes”) была визуализирована с объединением отображения шероховатости, среды и наложения текстуры. Карта окружающей среды объединялась с картой шероховатости, чтобы создать эффект отражения фонового освещения и шероховатости поверхности. Затем для создания общего эффекта, показанного на изображении, вводились дополнительные цвета и освещение поверхности, неровности, пятна грязи и пятна на швах и заклепках.
Рис. 10.111. Витражный рыцарь из фильма Молодой Шерлок Холмс. Комбинация отображений шероховатости, среды и текстуры использовалась для визуализации поверхности брони (перепечатано с разрешения Industrial Light & Magic. © 1985, Paramount Pictures/Amblin)
Рис. 10.112. Локальная система координат в точке поверхности
ОТОБРАЖЕНИЕ КАДРА
Данный метод добавления деталей к поверхности является расширением отображения шероховатости. При отображении кадра возмущается и вектор нормали к поверхности N. и локальная система координат (рис. 10.112), привязанная к N. Локальные координаты определяются касательным вектором поверхности Т и вектором бинормали В = Т х N.
Отображение кадра используется для моделирования анизотропных поверхностей. Сориентируем Т по “волокну” поверхности и применим направленные возмущения в дополнение к возмущениям шероховатости в направлении вектора N. Таким образом можно смоделировать узор волокна дерева, спиральные узоры в одежде и прожилки в мраморе или подобных материалах. Шероховатость и направленные возмущения можно сгенерировать с использованием таблицы соответствий.
ПЛЕТЯ ФУНКЦИИ ОСВЕЩЕНИЯ И ВИЗУАЛИЗАЦИИ OpenGL
В OpenGL реализовано множество процедур установки точечных источников света, подбора коэффициентов отражения поверхности и выбора значений других параметров в стандартной модели освещения. Кроме того, можно смоделировать прозрачность, а объекты можно отображать с использованием либо плоской визуализации, либо визуализации по Гуро.
ФУНКЦИИ OpenGL ДЛЯ ЗАДАНИЯ ТОЧЕЧНЫХ ИСТОЧНИКОВ СВЕТА
В описание сцены в OpenGL можно включить несколько источников света, причем с каждым источником можно соотнести такие различные свойства, как положение, тип, цвет, затухание и эффекты направленного освещения. Для задания свойств источника света используется такая функция:
glLight* (lightName, lightProperty, propertyValue); К имени функции добавляется код суффикса i или f, в зависимости от типа данных соответствующего значения. Для векторных данных также добавляется код суффикса v, а параметр propertyValue является указателем на массив. Каждый источник света снабжается идентификатором, и параметру lightName присваивается значение одной из символьных констант OpenGL GL_LIGHT0, GL_LIGHT1, …, GL_LIGHT7, хотя в некоторых реализациях OpenGL разрешено больше восьми источников света. Таким образом, параметру lightProperty должно присваиваться значение одной из десяти символьных констант свойства OpenGL. После того как для источника света будут заданы все свойства, свет включается командой