Методы визуализации в компьютерной графики
Как только сцена была смоделирована в трех измерениях и преобразована в двухмерный вид, она готова к визуализации. Этот заключительный шаг создания изображения, которое будет выведено на ваш экран, называется визуализацией или рендерингом (rendering или shading). Существует несколько различных методов визуализации, и сейчас мы коротко рассмотрим наиболее часто применяемые.
Каркасный метод
Каркасный метод визуализации (wireframe rendering) не предназначен для создания реалистичных изображений и не требует выполнения всех тех действий, которые мы обсуждали до этого. В каркасных моделях выводятся только края граней объектов сцены, изображаемые прямыми линиями. На рис. 2.22 изображена сетка, выведенная в каркасном режиме.
Рис. 2.22. Каркасный метод визуализации
Неосвещенный метод
Неосвещенный метод визуализации (unlit rendering) получил свое название из-за того, что при его применении наличие источников света игнорируется. Грани рисуются с использованием назначенных им цветов и текстур без учета значений освещенности или ориентации грани. Сцены с применением неосвещенного метода создаются быстро, но объекты в этих сценах оказываются похожими на силуэты. Рис. 2.23 показывает результат использования данного метода визуализации.
Рис. 2.23. Неосвещенный метод визуализации
Равномерная закраска
Равномерная закраска (flat shading) позволяет получить более реалистичное изображение, чем каркасный или неосвещенный методы визуализации. При равномерной закраске учитывается освещенность грани. Для каждой грани вычисляется нормаль, которая применяется для вычисления параметров освещенности всей грани. Равномерная закраска требует большего объема вычислений, чем каркасный и неосвещенный методы. Рис. 2.24 показывает сцену, визуализированную с применением равномерной закраски. Обратите внимание, как выделяется каждая грань.
Рис. 2.24. Изображение, полученное методом равномерной закраски
Метод Гуро
Закраска методом Гуро (Gouraud shading) подобна равномерной закраске, за исключением того, что нормали рассчитываются для каждой вершины вместо того, чтобы рассчитывать их для каждой грани. Грань закрашивается с использованием интерполяции значений освещенности в вершинах. Это приводит к сглаживанию изображения сеток, и отдельные грани становятся неразличимыми. Закраска методом Гуро позволяет получить реалистичные изображения, но может сделать объекты неотчетливыми и смутными. Поскольку используются нормали к вершинам и усредненные значения для грани, метод Гуро требует большего объема вычислений, чем равномерная закраска. Закраска по методу Гуро использовалась для рис. 2.25.
Рис. 2.25. Закраска по методу Гуро
Метод Фонга
Закраска по методу Фонга (Phong shading) является усовершенствованием метода Гуро. Подобно методу Гуро, в методе Фонга используются нормали вершин, однако, вместо интерполяции вычисленных для вершин значений, производится вычисление нормалей для каждой точки грани. Эта дополнительная работа обеспечивает более точный результат. Как вы можете догадаться, закраска по методу Фонга медленнее, чем закраска по методу Гуро. Иллюстрация для этого метода не приводится, поскольку на момент написания книги Direct3D не поддерживал закраску по методу Фонга.
Трассировка лучей
Трассировка лучей (ray-tracing) позволяет получить наиболее реалистичное изображение по сравнению с любым другим методом визуализации. Действительно, трассировка лучей известна как способ получения фотореалистичных и даже гиперреалистичных изображений. Трассировка лучей использует метод полностью отличный от методов, которые мы обсудили ранее. Алгоритм трассировки лучей автоматически вычисляет тени, отражения и преломления (другие методы визуализации не выполняют эти вычисления).
К сожалению, трассировка лучей очень медленна. Для получения одного изображения могут потребоваться часы и даже дни. Разумеется, трассировка лучей не подходит для графики в реальном масштабе времени и не поддерживается Direct3D. На рис. 2.26 приведено изображение, полученное методом трассировки лучей (с помощью программы POV-Ray).
Рис. 2.26. Сцена, полученная методом трассировки лучей