3. Этапы визуализации сцены.
Все операции просчета конечного трехмерного изображения выполняются по многоступенчатому механизму, который назвали конвейером рендеринга (rendering-pipeline). Дело в том, что сам принцип конвейерной обработки 3D является технологическим стандартом, а не прихотью какой-то отдельной конторы. По конвейерному принципу работают все трехмерные программные интерфейсы и все графические ускорители. Мы рассмотрим наиболее распространненую схему, которая примерно аналогична прохождению информации по вычислительным блокам видеокарты.
{Возможно стоит показать схему конвейера рендеринга OpenGL или Direct3D. Или просто какой-либо конвейер, например конвейер автомобильной сборки}
На вход конвейера поступают данные, описывающие трехмерную сцену, а его выходом является двухмерная растровая картинка.
Триангуляция (Triangle setup) Первый этап конвейера называется триангуляцией, что означает разбиение на треугольники. Зачем же требуется разбивать объекты на треугольники? С треугольниками проще работать. Почему? А потому что: 1) треугольник является простейшим полигоном, вершины которого однозначно задают плоскость; 2) любую область можно гарантировано разбить на треугольники; (показать фрагмент вывода теоремы об этом) 3) вычислительная сложность алгоритмов разбиения на треугольники существенно меньше, чем при использовании других полигонов; 4) для треугольника легко определить три его ближайших соседа, имеющих с ним общие грани. Триангуляция бывает двух видов, в зависимости от обрабатываемых объектов. Если это многогранник (например, пирамида, призма, куб, или октаэдр, икосаэдр), то они уже состоят из многоугольников, поэтому нужно лишь разделить их грани на треугольники. Если же это криволинейная поверхность, которая задается по точкам, то здесь уже применяются более сложные алгоритмы (например, метод Делоне). {показыватся крупный скриншот справа(есть в архиве картинок), можно показать полигональную модель из раздела ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ}{Взрыв сферы на треугольники}
Операция триангуляции производится программно, т.е. силами центрального процессора. Трансформация объектов (Modeling transformation)
{Показать фотографию GPU G80 } Во время трансформации преобразуются координаты объектов. По-научному, к ним применяются матрицы преобразований. Говоря проще, каждый объект отсылают, куда надо, поворачивают как надо и масштабируют. {Показать матрицы, формулы. Взять хотябы из книжки по RT, или прямо закэпчерить прокрутку майкрософтовской страницы http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/The_Direct3D_Transformation_Pipeline.asp хотя желательно найти чего-нить пострашнее}{Так же можно взять в максе объект, покрутить его, переставить, увеличить\уменьшить (всё закэпчурить фрапсом)}
Обработка вертексов (Vertex processing). На данном этапе возможно реализовывать по-вертексное освещение, когда каждый вертекс получает значение освещенности, а затем они интерполируются по поверхности полигона. Также на этом этапе вступают в силу вертексные шейдеры, которые позволяют деформировать или искривлять объекты при
изменении координат вертексов.
Трансформация вида (Viewing transformation) Трансформация вида заключается в том, что координаты объектов, занимавших места в системе координат сцены транслируются в координаты, привязанные к виртуальной камере, это делается для упрощения следующего шага конвейера – трансформации проекции.
Проекция сцены (Projection transformation) На этом шаге происходит проекция трехмерных объектов сцены на двухмерную плоскость. То, что видно на этой плоскости, как бы результат съемки виртуальной камеры.
|