Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CG_lk.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

4.5.2. Удаление скрытых линий и поверхностей

Сложность задачи удаления скрытых линий и поверхностей (СКЛиП) привела к появлению большого числа различных способов ее решения. Следует отметить, что наилучшего способа решения общей задачи не существует. Для моделирования процессов в реальном времени, например, для авиатренажеров, необходимы быстрые алгоритмы, способные порождать результаты с частотой 24-30 кадров/с.

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

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

Таким образом, эффективность любого алгоритма удаления СКЛиП с большой мере зависит от эффективности процесса сортировки.

Алгоритмы удаления СКЛиП можно разбить на два класса: алгоритмы работающие в объектном пространстве (мировые координаты), и алгоритмы, работающие в пространстве изображения. Первые дают очень точные результаты, ограниченные только точностью вычислений. Полученные результаты можно масштабировать. Второй класс алгоритмов имеет дело с физической системой координат устройства, поэтому точность вычислений ограничивается разрешающей способностью устройства.

Алгоритмы, работающие в объектном пространстве и сравнивающие каждый объект сцены с остальными, имеют объем вычислений, который теоретически растет как квадрат числа объектов ( ) . Объем вычислений алгоритма, работающего в пространстве изображения и сравнивающего каждый объект сцены с позициями всех пикселов в системе координат экрана, теоретически растет как nN ( N - число пикселов, n - число объектов сцены). Таким образом, теоретически трудоемкость алгоритмов, работающих в объектном пространстве, меньше (n < N ), чем трудоемкость алгоритмов в пространстве изображения.

На практике этот вывод ,как правило, не подтверждается.

К алгоритмам, работающим в объектном пространстве, относятся алгоритмы Робертса, Вейлера-Азертона [2], к алгоритмам, работающим в пространстве изображения, относятся алгоритм плавающего горизонта, алгоритм Варнока, алгоритм, использующий Z-буфер, алгоритмы построчного сканирования [1]. Мы ограничимся рассмотрением алгоритма, использующего Z-буфер.

Идея Z-буфера является простым обобщением идеи о буфере кадра. Буфер кадра используется для запоминания атрибутов (интенсивности) каждого пикселя в пространстве изображения, а Z-буфер - отдельный буфер глубины, используемый для запоминания координаты Z или глубины каждого пикселя в пространстве изображения. В процессе работы значение каждого нового пикселя, который нужно занести в буфер кадра, сравнивается с глубиной того пикселя, который уже занесен в Z-буфер. Если новый пиксель расположен впереди предыдущего, он заносится в буфер кадра и в Z-буфер, если нет - его значение отбрасывается. По сути данный алгоритм - это поиск наименьшего значения z(x,y).

Главное преимущество алгоритма - его простота. Кроме того, он решает задачу удаления невидимых поверхностей для сцен любой сложности. Оценка вычислительных затрат - линейна (N). Поскольку элементы сцены могут заноситься в буфер кадра в любом порядке, их не нужно предварительно сортировать по глубине. Основной недостаток большой объем требуемой памяти. Информацию о глубине необходимо обрабатывать с большой точностью, поэтому используется не менее 20 разрядов.

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