1 Прорисовка начинается с заднего плана, если последующий объект не может заслоняться предыдущим
Вид материала | Лекция |
СодержаниеДля полутоновых изображений так же можно использовать этот алгоритм, но |
- Модель пациента, 66.53kb.
- Петербурга Если «театр начинается с вешалки», 48.22kb.
- Правовые вопросы информационного менеджмента, 69.69kb.
- Бизнес-план начинается с титульного листа, на котором указывают: наименование проекта,, 20.14kb.
- Система, структура, субстанция, 480.18kb.
- Конспект лекций по курсу «Теория организации», 949.63kb.
- Еврипид. Ипполит, 910.37kb.
- Составители: Благова Л. А.(учитель английского языка моу сош №3), 38.49kb.
- Любовь и воля перевели О. О. Чистяков и А. П. Хомик, 5379.94kb.
- Знаковые системы и информатика, 226.36kb.
Лекция 6
Рисование 3D сцен и рельефа
Алгоритм художника
![](images/372124-nomer-m53f56f4.gif)
1) Прорисовка начинается с заднего плана, если последующий объект не может заслоняться предыдущим. (рис 1)
![](images/372124-nomer-m2bb2cdab.gif)
- 2) Делим поле рельефа на сектора. В каждом секторе применяем первый алгоритм. (рис. 2)
Алгоритм с использованием буфера глубины.
Синтез изображения в общем случае: алгоритм с использованием буфера глубины.
![](images/372124-nomer-2d08dee9.gif)
Суть метода: кроме плоскости изображения резервируем память, точно соответствующую объему изображения, а в буфер глубины записываем величину (g) равную удаленности точки объекта от наблюдателя. При обработки любой точки сравниваем удаленность точки с величиной, хранимой в буфере. В буфер глубины можно записывать Евклидово расстояние.
![](images/372124-nomer-m6515f203.gif)
![](images/372124-nomer-m7a21a9e0.gif)
Если в буфер глубины записываем Евклидово расстояние, то получится:
![](images/372124-nomer-m7da28eeb.gif)
В результате интерполяции Евклидово расстояние это середина отрезка. В буфер G записывать величину R при линейной интерполяции нельзя. Глубину (S) тоже нельзя записывать в буфер глубины, т. к. ее нельзя будет линейно интерполировать. Но в буфер глубины можно записать параметр глубины (h),т. к. h может быть линейно интерполирована в плоскости изображения.
![](images/372124-nomer-648c6f39.gif)
Для величины h вводим буфер глубины H. H-буфер – это некоторая область памяти. Она имеет разрядность. Размер этой области равен размеру изображения.
![](images/372124-nomer-m70510565.gif)
![](images/372124-nomer-2e1051f9.gif)
![](images/372124-nomer-m39572283.gif)
![](images/372124-nomer-m308aa369.gif)
![](images/372124-nomer-28b67e89.gif)
![](images/372124-nomer-61c3d0b.gif)
Все что находится за Smax и перед Smin отсекается. Пирамида видимости – это пространственная пирамида (все что находится в ней попадает в поле видимости). Если объект находится за пределами пирамиды видимости, то он не изображается.
h обладает рядом достоинств:
1) соответствие, т. е. Smin соответствует hmax, Smax соответствует hmin
удаленные элементы имеют меньшее значение h, приближенные элементы – большее значение h.
2) яркость можно связать с h. Что ближе более яркое, что дальше, то более темное.
Обработка h при непосредственном синтезе изображения.
![](images/372124-nomer-1114d862.gif)
1. Инициализируем поля V, H = 0. Очищаем поле V (например, делаем его черным). В H записываем минимальное значение, т. е. заполняем его нулями. Минимальные значения соответствуют максимальной удаленности.
![](images/372124-nomer-m5e4be2a3.gif)
2. Для пространственного многоугольника определяем точки с координатами (X,Y,Z,S). Для плоскости изображения используются координаты (x,y,h,v), где v – это яркость в точке.
3. Используем алгоритм построчного сканирования.
![](images/372124-nomer-m37553207.gif)
h и v – линейно интерполируем
![](images/372124-nomer-136f9d1b.gif)
а) точка вдали
![](images/372124-nomer-m5e67d7b9.gif)
![](images/372124-nomer-mfff35df.gif)
![](images/372124-nomer-m35eb2bc2.gif)
![](images/372124-nomer-55a2d93d.gif)
![](images/372124-nomer-5839c934.gif)
б) точка в близи
![](images/372124-nomer-m14cdbee1.gif)
![](images/372124-nomer-m28236d1c.gif)
![](images/372124-nomer-594e4801.gif)
![](images/372124-nomer-m7bdb73f8.gif)
Пример:
Пусть,
![](images/372124-nomer-m705b334b.gif)
![](images/372124-nomer-m49c62c3c.gif)
![](images/372124-nomer-1213c1db.gif)
а) точка в дали
![](images/372124-nomer-1aac122f.gif)
б) точка вблизи
![](images/372124-nomer-m1bbc018a.gif)
При малоразрядном буфере отношение Smin и Smax уменьшается.
Значение h – нелинейно зависимое разрешение по глубине от дальности.
Если записывать в G значение S, то нельзя линейно интерполировать.
![](images/372124-nomer-601f8d75.gif)
![](images/372124-nomer-232aced9.gif)
![](images/372124-nomer-dd7241c.gif)
![](images/372124-nomer-1ffb5892.gif)
Формула нелинейной интерполяции величины S:
![](images/372124-nomer-17ccad69.gif)
Недостатки:
- - Большие вычислительные затраты на каждую текущую точку;
- - S имеет равномерную (т. е. постоянную) разрешающую способность по глубине;
- - Вместо линейной - нелинейная интерполяция.
![](images/372124-nomer-54734faf.gif)
![](images/372124-nomer-76e6787.gif)
Синтез изображения с помощью Y-буфера.
Рассмотрим частный случай:
Синтез каркасных изображений с удалением невидимых элементов этого
![](images/372124-nomer-m2894b8db.gif)
изображения.
И
![](images/372124-nomer-mb681939.gif)
зображать элементы надо начиная с ближнего плана.
З
![](images/372124-nomer-38728ef5.gif)
апоминаются y координаты изображения и записываются в используемый Y-буфер (одномерный массив = ширине изображения).
В Y-буфере будет отслеживаться y максимальное.
При записи второго сечения Y-буфер обнуляется и информация в нём обновляется.
Существует проблема видимости ненужных частей рельефа.
Д
![](images/372124-nomer-m61442e76.gif)
ля решения этой проблемы используется анализ текущей точки:
Используемый принцип:
От ближнего плана к дальнему.
Примечание:
Для полутоновых изображений так же можно использовать этот алгоритм, но
с закраской вертикальными линиями с учётом линейной интерполяции области
между двумя соседними сечениями.
![](images/372124-nomer-m1f51dceb.gif)
Алгоритм отсечения по пирамиде видимости.
Необходимость в этой процедуре возникает, когда, в конце концов, оказывается, что надо нарисовать грань, у которой часть вершин лежит перед камерой, а часть – за камерой. То есть грань, пересекающуюся с экраном. Сама по себе она правильно не нарисуется.
Поскольку камера видит только то, что перед ней находится, все те точки, для которых Smin > z > Smax, рисовать не надо. То есть, каждую грань надо обрезать плоскостями z = Smin и z = Smax.
![](images/372124-nomer-51db486d.gif)
В плоскость изображения попадают только те точки, которые находятся внутри ПВ.
Алгоритм:
Пусть имеется пространственный многоугольник с вершинами i = 1…n. Для каждой вершины вычисляем значения Si, X¢i и Y¢i, которые будут исходными данными
![](images/372124-nomer-m1cd8590a.gif)
![](images/372124-nomer-12b8b3ff.gif)
Конец формы