Модель глобального освещения с трассировкой лучей. Сфера, призма, параллелепипед. Алгоритм трассировки лучей, страница 3

Сокращая среднюю длину дерева или размер стека, можно уменьшить объем вычислений. Для этого можно, например, записать в стек только те лучи, которые значительно влияют на интенсивность света, попадающего в глаз наблюдателя. В стек лучей заносятся следующие данные о каждом луче:    - Номер луча, определяющий луч    - Тип луча: - луч, исходящий из глаза наблюдателя и проходящий через пиксель, - отраженный луч, - преломленный луч)   - Номер исходного луча, породившего данный луч   - Тип исходного луча ( , или )   - Флаг пересечения (1 – у данного луча есть пересечение, 0 – нет)   - Координаты пересечение x, y и z        

- Направляющие косинусы (определяющие направление луча) -      d - расстояние от пересечения исходного луча до пересечения данного - интенсивность пропущенного света в направлении данного луча

-         - интенсивность зеркально отраженного света в направлении данного луча.

Когда луч впервые заносится в стек, значения: , , и флаг устанавливаются в 0. Движение по дереву трассировки лучи начинается с построения правой ветви преломления от корневого узла и до окончания ветви.

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

Направление стрелки движения вниз соответствует образованию луча (занесение луча в стек), вверх – расчет интенсивностей (извлечение из стека). После того как вклад луча в интенсивность вершины определен, луч отбрасывается. Когда остается только корень дерева, вычисление интенсивности пикселя завершается, и луч посылается на экран.

  • Моделирование трехмерных сцен
  • Методы создания трехмерных объектов
  • Непосредственное создание трехмерных объектов с использованием трехмерных примитивов (сферы, параллелепипеды, пирамиды и т.д.).
  • Получение сложных трехмерных объектов, используя булевские операции объединения, вычитания, пересечения элементарных трехмерных объектов.
  • Использование сеток, моделирующих сложные трехмерные поверхности. Узлы сеток управляют кривизной этих поверхностей.

  1. Получение трехмерных объектов из двумерных кривых путем вращения, перемещения этих форм в пространстве.
  2. Трансформация объектов, полученных предыдущим способом.

1. Непосредственное создание трехмерных объектов с использованием трехмерных примитивов. Mesh – простейшее представление объектов в виде аппроксимирующих их поверхность многоугольников. Edge - ребра Face – грани (многоугольники) Vertex - вершины

2. Получение сложных трехмерных объектов, используя булевские операции объединения, вычитания, пересечения элементарных трехмерных объектов.   3.   Использование сеток, моделирующих сложные трехмерные поверхности. Узлы сеток управляют кривизной этих поверхностей.  11)      Patch – решетка узлов

2) Поверхности на основе Nurbs – Non Uniform Rational B-Splain (Неоднородные Рациональные (т.е. описываются математически) B-Сплайны). Это гладкая кривая, определенная в трехмерном пространстве, нормаль к которой может иметь любое направление.

Возможен переход из одного представления в другое (например из Mesh в Patch и наоборот. Но при любом представлении объекта его визуализация проводится при помощи аппроксимирующих поверхность объекта плоских многоугольников и нормалей.

4.  Получение трехмерных объектов из двумерных форм (кривых, сплайнов) путем вращения, перемещения этих форм в пространстве.

Двумерные формы (shapes) – сплайны. Один из распространенных сплайнов это Безье-сплайн. Эти сплайны описываются полиномами параметрически. Используются полиномы 2, 3, 4 порядка. Чаще всего используют кубические полиномы (3-го порядка).

0 t  1

Для управления такой кривой вводится 4 точки P1, P2, P3, P4.

Точка P1 ограничивает кривую, которая проходит через эту точку. Точка P4 также ограничивает эту кривую с другим значением параметра. Точки P2 и P3 определяют направление касательной в точках P1 и P4. Вектор Т1 определяет направление кривой в точке P1, Т2 – в точке P4. Более длинный вектор Т действует на кривую сильнее, чем короткий.

То же самое для y.

  • Каждый сплайн имеет несколько вершин и одна из них первая.
    1. Получение трехмерных объектов из двумерных форм
      1. Вращение двумерной формы в пространстве (Lathe).
      2. Выдавливание двумерной (замкнутой) формы (Extrude).
      3. Перемещение двумерной (замкнутой) формы по заранее определенному пути (Lofting).
    2. Трансформация трехмерных объектов, например, полученных с помощью Loft, используя трансформации Scale, Fit и пр.