Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kompyuternaya_grafika.doc
Скачиваний:
16
Добавлен:
07.09.2019
Размер:
674.3 Кб
Скачать

Моделирование текстуры

Для придания более естественного вида сцене желательно иметь возможность менять параметры поверхности (в простейшем случае цвет) в зависимости от положения точки на ней. Ниже будут рассмотрены различные способы достижения этого.

Существуют разные способы моделирования текстуры, но практически все они подразделяются на два основных класс:

  • проективные текстуры;

  • процедурные (сплошные – solid) текстуры.

Представим себе, что необходимо задать определенную текстуру (например, мрамор) какому-либо объекту.

Возможны два пути:

      1. Взять изображение реальной мраморной поверхности и отобразить (спроектировать) его каким-либо образом на поверхность объекта. Т.е. перевести исходные трехмерные координаты точки в двумерные и использовать последние для индексации в изображение.

      2. Построить некоторую функцию C(x, y, z), определяющую для каждой точки пространства (x, y, z) цвет т.о., чтобы объект, цвет которого задается этой функцией, имел вид объекта, сделанного из мрамора.

Первый путь соответствует проективным текстурам. Он наиболее прост, однако имеет целый ряд существенных недостатков: требует большого объема памяти для хранения используемых изображений, обладает сравнительно небольшой гибкостью и к тому же сопряжен с большими сложностями в подборе способа проектирования для объектов сложной формы.

Поэтому в практических задачах, как правило, используется лишь небольшое количество стандартных вариантов проектирования: плоское (параллельное проектирование вдоль заданного направления), цилиндрическое и сферическое. Для параметрически заданных поверхностей часто в качестве проекции точки (x(u, v), y(u, v), z(u, v)) выступают значения параметров (u, v).

Второй путь не требует больших затрат памяти и одинаково хорошо работает с объектами любой (сколь угодно сложной) формы. Поскольку подобная функция обычно зависит от большого количества параметров, то, изменяя их, можно легко изменять параметры текстуры. Основными недостатками этого подхода являются сложность подбора соответствующей функции и отсутствие поддержки этого метода в на уровне железа (в 3D – ускорителях).

Лекция 8. Алгоритмы удаления невидимых линий и поверхностей о тсечение нелицевых граней

Рассмотрим многогранник, для каждой грани которого задан единичный вектор нормали (рис.). Несложно заметить, что если вектор нормали грани n составляет с вектором 1, задающим направление проектирования, тупой угол, то эта грань заведомо не может быть видна. Такие грани называются нелицевыми. В случае, когда соответствующий угол является острым, грань называется лицевой.

В случае параллельного проектирования условия на угол можно записать в виде:

(n, 1) <= 0,

поскольку направление проектирования 1 от грани не зависит.

При центральном проектировании с центром в точке c вектор проектирования для точки p будет равен

1 = c – p.

Для определения того, является заданная грань лицевой или нет, достаточно взять произвольную точку p этой грани и проверить выполнение условия

(n, 1) <=0.

Знак этого скалярного произведения не зависит от выбора точки грани, а определяется тем, в каком полупространстве относительно плоскости, содержащей данную грань, лежит центр проектирования.

В случае, когда сцена представляет собой один выпуклый многогранник, удаление нелицевых граней полностью решает задачу удаления невидимых граней. В общем случае предложенный подход хотя и не решает задачу полностью, но позволяет примерно вдвое сократить количество рассматриваемых граней.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]