![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Z-Buffer [Delphi, Windows]
Tugrik © (2002-09-24 11:54:00)Люди, обьясните, что такое Z-Buffer, а то часто слышу, а не знаю что это!
Digitman (2002-09-25 10:19:00) [1]>Tugrik
Иными словами - Z-буфер есть массив, хранящий значения Z-координат точек в пространстве 3D-сцены, перспективная 2D-проекция которой строится и визуализируется на экране.
На огурцах :
пусть есть точка A(X,Y,Z) в 3D-пространстве, которая в рез-те визуализации сцены должна стать точкой A"(X", Y") на плоскости визуализации - видеопамяти, хранящей цветовые значения точек растра размером, скажем, 320 х 200
координаты точек A" расчитываются исходя из координат точек A по законам перспективной проекции :
A"(X", Y") = A"(X/Z, Y/Z)
при этом для всех точек А, лежащих, скажем, на оси Z (пусть это будет ось взгляда, где глаз наблюдателя находится в точке (0,0,0) и направлен в сторону положительных значений оси Z)соответствующие точки A" будут иметь одни и те же координаты - A(0, 0), но, возможно, разные цвета.
но ведь рисовать на экране следует лишь ту точку A", которая соответствует точке А, находящейся ближе к наблюдателю, ибо все прочие точки на этой же оси взгляда попросту невидны наблюдателю - они "загорожены" самой ближней точкой.
сразу возникает вопрос : а как определить, следует ли рисовать очередную расчитанную точку A", если буфер растра не содержит никаких сведений об удаленности данной точки ?
ответ на этот вопрос и содержит Z-буфер :
при принятии такого решения для соответствующих точек A и A" из буфера выбирается соотв.значение Z-координаты B(Z) и
- если B(Z) из буфера меньше чем A(Z), то точка не рисуется
- если иначе, то B(Z)=A(Z) и точка рисуется
Sapersky_ (2002-09-24 21:57:00) [2]Z-буфер применяется для удаления невидимой геометрии. При рисовании треугольника для каждой точки заносится её Z-значение, и при рисовании последующих треугольников для их точек проверяется, дальше ли они находится или ближе; если ближе, точка рисуется и в Z-буфер заносится новое значение; иначе отбрасывается.
Таким образом обычно рисуются 3D-модели (персонажи); для рисования окр. среды существуют специальные методы отсечения.
AL2002 (2002-09-24 13:33:00) [3]Может, в геймстроительстве и по другому, но я знаю, что это глубина (Depth).
XYZ — говорит что-то?