Синтез трехмерного изображения методом обратного трассирования лучей
Под обратным трассированием лучей понимается отслеживание хода воображаемых лучей, направленных из центров рецепторов в сторону трёхмерной сцены.
Образование центральной проекции Образование ортогональной проекции F







![]()
![]()
![]()
![]()
![]()

![]()
![]()
![]()
![]()

![]()
![]()
![]()

![]()
![]()
![]()





Такие лучи могут быть направлены параллельно друг другу. В этом случае изображение, получаемое в результате трассирования, будет соответствовать ортогональной проекции. Если лучи проходят через некоторую точку (фокус F), отстоящую от плоскости на некоторое расстояние, то образуется центральная проекция, дающая эффект перспективы.
![]() |
В любом случае, требуется выполнить однотипный перечень шагов для каждого из рецепторов (пикселов изображения).
Определить уравнение луча, проходящего через заданный пиксель. Прямая задаётся точкой отсчёта и направляющим вектором. В ортогональном варианте направляющий вектор соответствует нормальному вектору плоскости, а точку отсчёта следует выбирать согласно индексам пиксела в матрице, с учётом подбираемых вручную масштабных коэффициентов. Найти ближайшую к рецептору видимую точку на одном из объектов сцены и определить нормаль к поверхности в этой точке, цвет и отражающие свойства поверхности. В случае нахождения объединения объектов, подойдёт ближайшая точка на любом из объектов сцены. Если же требуется найти пересечение или вычитание, алгоритм нахождения точки оказывается более сложным. По очереди протрассировать лучи, ведущие от источников света к найденной точке. Если источник света не загорожен другими объектами, то он вносит свой вклад в освещенность точки. Определить интенсивность точки со стороны наблюдателя, с поправкой на отражающие свойства материала и поместить в матрицу пиксель этого цвета.Трассирование луча для группы примитивов
Общие условия:
Пусть параметрическое выражение L(t)=P+l×t задаёт трассируемый луч.
Пусть точки пересечения с некоторым объектом G имеют параметры tG1 и tG2, tG1 < tG2.
В большинстве случаев, луч пересекает объект два раза при «входе» внутрь него и на «выходе» из него.
Имеется несколько поверхностей, образующих геометрическую сцену по определённой булевской закономерности.
Требуется найти параметр t0 ближайшей к наблюдателю видимой точки сцены.
1. Случай объединения.
Пусть требуется найти объединение поверхностей A и B (AÈB). t0=min(tA1,tB1).
![]() |
2. Случай пересечения.
Пусть требуется найти пересечение поверхностей A и B (AÇB). При условии, что
(tA1 < tB2 )&(tB1 < tA2) – (условие пересечения отрезков) , t0=max(tA1, tB1).
![]() |
3. Случай вычитания.
Пусть требуется найти вычитание поверхности B из поверхности A. (A\B).
при tB1>tA1, t0=tA1. В противном случае выберем t0’=max(tA1, tB2). Если при этом t0’< tA2, то отверстие не является сквозным и тогда t0=t0’.
![]() |
4. Комбинированный случай.
Пусть требуется найти вычитание поверхности B из объединения поверхностей A и C. ((AÈC)\B).
Кажущийся сложным на первый взгляд случай следует раскрывать, сведя к бинарным отношениям. Действительно, t0=min(t(A\B), t(C\B)), где следует учитывать только непустые значения аргументов функции минимума.
![]() |
Наложение источников света.
Пусть на одну точку направлено несколько источников света. Цвет каждого источника определяется тройкой значений {Ri, Gi, Bi}. Косинус угла падения для i-го источника равен gi. Общая освещённость точки равна {max Ri×gi, max Gi×gi, max Bi×gi}. Косинус угла удобно рассчитывать как скалярное произведение – (l*,n). Здесь l* является направляющим вектором луча от источника света на точку, а n есть нормаль к поверхности в заданной точке.
После этого учитываются отражающие способности поверхности. Допустим, суммарный отражённый свет задан тройкой {Rc, Gc, Bc}. Поверхность отражает свет по маске
{Ro, Go, Bo}. Результирующий цвет выражается компонентами
{min(Ro, Rc), min(Go, Gc), min(Bo, Bc)}.
Виды отражения
В зависимости от свойств материала возможно несколько вариантов отражения луча и.
Ортотропными называются поверхности, которые не изменяют своей освещённости при перемещении источника света. К таким материалам относятся асфальт, бетон, пластик, ткань.
Зеркальными называют поверхности, отражающие преимущественно по законам геометрической оптики (угол падения равен углу отражения).
![]() |
Световозвращающими называют поверхности, отражающие в направлении источника света.
![]() |
В двух последних случаях удобно представлять функцию освещённости в зависимости от векторов наблюдения и отражения как степень косинуса угла между этими векторами.
Поиск точек пересечения с поверхностями
Для определения пересечения некоторой прямой с поверхностями (напр, поверхностями второго порядка), необходимо подставить выражение L(t)=P+l×t в уравнение поверхности.
В приведённой ниже таблице перечислены уравнения поверхностей второго порядка и квадратные уравнения для поиска точек пересечения
Поверхность | Уравнение |
Сфера |
|
Цилиндр вращения |
|
Конус вращения |
|
Параболоид вращения |
|
Одноп. гиперб. вращ. |
|
Двуп. гиперб. вращ. |
|
3.2.6.1. Способы представления поверхностей. (из диссертации).
С точки векторно-параметрической формы вычислений, положенной в основу математической модели проектируемой системы, Точки S поверхности с эллиптическим сечением могут быть представлены в форме (3.2.35) (рис. 3.9).
. (3.2.35)
Здесь тройка ортов p, q, h образует правый ортонормированный базис. Первые два вектора задают ориентацию плоскости поперечного эллиптического сечения, третий – направление оси.
Функции fr(t) и fh(t) параметризуют образующую поверхности без поправочного коэффициента (a или b). Первая функция задаёт размер по ширине, вторая – по высоте. Диапазон параметра t задает область определения этих функций. Наибольший диапазон изменения углового параметра j есть полуинтервал (-p, p]. В этом случае имеет место задание поверхности с полным поперечным сечением. При меньшем интервале будет задан лишь сектор поверхности. Формулой (3.2.35) может быть описан весь класс поверхностей, используемых в графическом редакторе проектируемой системы. В некоторых случаях возможны заметные некоторые упрощения формулы (3.2.35), связанные с конкретизацией функций и скалярных параметров.
Например, если образующая поверхности вращения представима в виде функции радиуса от высоты, получим:
. (3.2.36)
В некоторых случаях возникает необходимость работы с наклонными поверхностями. Различие между наклонной и прямой поверхностями заключается в том, что третий вектор базиса не ортогонален первым двум. В этом случае вектор носит название l, а уравнение поверхности выглядит:
. (3.2.37)
Нарушение ортогональности базиса приводит к усложнению математических моделей.
При нахождении решений задач относительно наклонных поверхностей, под вектором h понимается векторное произведение [p, q].
3.2.6.11. Построение ортогональной проекции отсека на плоскость
Пусть задана поверхность в форме (3.2.35). Известны пределы изменения параметров t и j. Требуется построить проекции отсека поверхности на плоскость с нормальным вектором n. В состав проекции входят рёбра поверхности и её очерк (тень). Рёбра образованы множеством точек, в которых отсутствует касательная плоскость к поверхности. На базовых поверхностях к таким точкам относятся сопряжения гладкой части поверхности с плоскостями, ограничивающими отсек поверхности. Очерк поверхности образован проекциями точек, в которых нормали к плоскости проекций (проецирующие прямые) касаются поверхности. При изображении проекции отсека поверхности наиболее трудной задачей является как раз построение очерка поверхности.
Точки касания проецирующих прямых есть точки поверхности, в которых нормаль к поверхности перпендикулярна вектору n. Для вычисления вектора нормали к поверхности в некоторой её точке, необходимо найти векторное произведение касательных векторов к поверхности.
В общем виде нормаль к поверхности может быть вычислена по формуле:
(3.2.100)
Если согласно общей формуле для прямых поверхностей (3.2.35) вычислить значения частных производных, указанных в формуле (3.2.100), получится:

Выражение (3.2.101) можно упростить преобразованием векторных произведений и исключением общего множителя fr(t), не влияющего на ориентацию нормали. Нормаль после исключения общего множителя обозначим h(t, j). Так как вектора p, q, h образуют правый ортонормированный базис, справедливо:
(3.2.102)
Аналогично, для наклонных поверхностей, формула (3.2.37) примет вид:
(3.2.103)
Уравнение точек, относящихся к очерку, примет вид:
. (3.2.104)
Для прямых поверхностей:
(3.2.105)
Для наклонных поверхностей:
(3.2.106)
Выражения (3.2.105) и (3.2.106) являются обобщенными уравнениями очерков проекций отсеков поверхностей, задаваемых с помощью формул (3.2.35) и (3.2.37) соответственно.
С точки зрения алгебры, это уравнение – неявное задание функций j1(t) и j2(t), определяющих, какие параметры j точек поверхности, проецирующихся в очерк, соответствуют заданному параметру t.
Для некоторых поверхностей вращения (a = b = 1) корни уравнения (3.2.105) могут быть вычислены в явном виде. Процесс решения этого уравнения в случае параллельности оси поверхности нормальному вектору плоскости должен быть проведён по особому алгоритму.
При выполнении условия
(3.2.107)
осевые векторы p и q ортогональны нормальному вектору плоскости проекций, в результате чего уравнение (3.2.105) вырождается в:
. (3.2.108)
Проекция очерка в данном случае распадается на окружности – сечения поверхности вращения, получающиеся при фиксировании параметра t на корнях уравнения (3.2.108), принадлежащих отрезку [tmin, tmax].
Если условие (3.2.107) не выполнено, для решения уравнения (3.2.105) необходимо пронормировать коэффициенты при тригонометрических функциях.
. (3.2.109)
С учётом того, что
, (3.2.110)
уравнение (3.2.109) принимает вид:
(3.2.111)
Корни уравнения (3.2.111) рассчитываются по формуле:
(3.2.112)
Действительные корни уравнения (3.2.112) существуют, если
. (3.2.113)
Условие (3.2.113) для различных поверхностей вращения превращается в неравенства, указанные в таблице 3.10.
Таблица. Условия существования линии очерка проекции
Поверхность | Условие существования линии очерка проекции |
Сфера |
|
Цилиндр вращения |
|
Конус вращения |
|
Параболоид вращения |
|
Однополостный гиперболоид вращения |
|
Двуполостный гиперболоид вращения |
|
Тор |
|
Особенностью уравнений (3.2.105) и (3.2.106) является возможность приближенного построения линии очерка без решения их в радикалах, что бывает полезно в случае сложных поверхностей. Поскольку построение любой кривой линии представляет собой лишь кусочно-линейную аппроксимацию, нет необходимости знать характер всей кривой j(t), а достаточно лишь вычислять отдельные значения её в точках – узлах аппроксимации.
Для любого фиксированного значения t0 получается тригонометрическое уравнение относительно параметра j :
. (3.2.114)
Решением тригонометрического уравнения вида
, (3.2.115)
являются значения синуса и косинуса требуемых углов. При таком подходе становится возможным отказаться от вычисления тригонометрических и обратных тригонометрических функций, получив выигрыш во времени вычисления.
Вычисления корней уравнения (3.2.115) производится по формулам:
(3.2.116)
Таким же способом проводится построение очерковых образующих конусов и цилиндров (в том числе и наклонных). У цилиндров и конусов значение угла j при любом значении параметра t остаётся неизменным.
Проведя последовательные вычисления точек, можно построить кривую, образующую очерк поверхности. После построения очерка необходимо также достроить основания отсека поверхности и граничные меридианы секторов (если поперечное сечение является неполным), используя уравнение поверхности (3.2.35).
3.2.4. Многогранники.
Полная пирамида в памяти компьютера представлена списком k вершин основания {Li}i=1,k и вершиной пирамиды S. Представлением усечённой пирамиды или призмы являются два списка – вершин нижнего {Li}i=1,k и верхнего {Hi}i=1,k оснований.
![]() |
![]() |
Некоторые алгоритмы проверки геометрических отношений и вычисления характеристик многогранников используют внешние нормали граней. Внешняя нормаль грани – единичный вектор, перпендикулярный грани и направленный наружу.
Необходимость использования в расчётах внешних нормалей граней делает целесообразным их хранение в отдельном списке {nl, nh, {ni}i=1,k}, где k – число вершин основания пирамиды или призмы.
Внешние нормали боковых граней вычисляются как векторные произведения:
– для призмы или усечённой пирамиды; (3.2.17)
– для полной пирамиды. (3.2.18)
Знак внешней нормали выбирается из следующего условия:
(3.2.19)
Внешние нормали верхнего nh и нижнего nl оснований коллинеарны и разнонаправлены. Их значение можно вычислить по следующим формулам:
(3.2.20)
Выбор знака внешней нормали нижнего основания следует выбирать из следующего условия:
– для призмы или усечённой пирамиды; (3.2.21)
– для полной пирамиды. (3.2.22)
Для удобства записи формул поверхность многогранника можно представить как набор плоскостей {пл.(Сj, hj)}, j=1, k+2, где:
(3.2.23)
(3.2.24)
Для полной пирамиды 1 £ j £ k+1, для остальных многогранников 1 £ j £ k+2.
Проверка точки на принадлежность поверхности многогранника
Точка X принадлежит поверхности Y многогранника, если выполняется условие:
(3.2.25)
Первое условие формулы (3.2.25) означает, что точка X находится в области пространства, ограниченной плоскостями граней многогранника. Второе – что точка X лежит хотя бы в одной из этих плоскостей.
Определение точки позиционирования курсора при трассировке плоскости
Пусть задана плоскость (C; m). Задана плоскость проекций с нормальным вектором n и точка X. На заданной плоскости требуется найти точку P, принадлежащую плоскости и проецирующуюся на плоскость проекций в ту же точку, что и X. Фактически, точка P является пересечением плоскости с проецирующей прямой, проходящей через указанную точку X перпендикулярно плоскости проекций, т. е. пр.(X; n). Если векторы m и n ортогональны, то есть их скалярное произведение равно нулю, то решение задачи неоднозначно и вычислить положение точки P невозможно. В этом случае изменение положения курсора не происходит.
В противном случае, точку P можно вычислить по формуле:
. (3.2.13)











.




