3. Visible-Surface Detection Methods
Tek bir mükemmel çözüm yoktur.
Algoritmalarının birbirlerine göre avantaj ve
dezavantaj ölçümleri
Hız
Bellek ihtiyacı
Yöntemin geliştirme zorlukları
Sadece belirli nesneler üzerinde
uygulanabilirliklerine göre değişmektedir
4. Visible-Surface Detection Methods
Kullanılan algoritmalarda başlıca iki yaklaşım vardır:
1) Nesne Uzayı Yöntemleri (object-space methods) :
Nesnelerin görünürlüğünü, yüzeyleri, diğer nesne ve
yüzeylerle karşılaştırarak tanımlandıkları uzayda belirler.
Az sayıda nesnenin olduğu ekranlarda etkilidir.
implementasyonu zordur.
N tane obje olan bir uzayda N*N tane karşılaştırma
gerekir
5. Visible-Surface Detection Methods
2) Görüntü Uzayı Yöntemleri (image-space methods) :
Görüntü uzayı algoritmaları, nesnelerin ve yüzeylerin
görünürlüğünü piksel piksel izdüşüm düzleminde
belirler.
Algoritmanın çalışma zamanı nesnelerdeki pixel
sayısına bağlıdır.
Algoritmaların çoğu görüntü uzayı yöntemlerini
kullanır.
7. Back-Face Detection (Arka Yüz Tespiti )
Arka yüz tespiti, poligon tabanlı grafik uygulama
algoritmasıdır.
Görüntülenmesi gereken poligon sayısını yarıya
indiren basit ve hızlı bir yöntemdir
8. Back-Face Detection (Arka Yüz Tespiti )
Arka yüz tespitinin düzgün sonuçlar verebilmesi için
bazı şartların sağlaması gereklidir:
Nesneler kapalı olmalıdır. Bir başka deyişle,
nesneler içi görülebilen boşluklar içermemelidir.
Nesneler şeffaf ya da yarı geçirgen olmamalıdır.
Nesneyi oluşturan yüzeylere ait normal vektörleri
dışarıya doğru tanımlanmış olmalıdır.
9. Back-Face Detection (Arka Yüz Tespiti )
Yüzey Denklemi : Ax + By + Cz + D = 0
Yüzey Normali : N = (A,B,C)
10. Back-Face Detection (Arka Yüz Tespiti )
Eğer Vview⋅N>0 ise poligon yüzeyi arka yüzdedir.
( 0,0,−1)⋅N<0 ya da if C<0
11. Back-Face Detection (Arka Yüz Tespiti )
Arka yüz tespiti tek başına kullanıldığı zaman görünür
yüzey tespit yöntemi olarak yeterli değildir.
Başka bir görünür yüzey yöntemi ile desteklenmelidir.
Ancak basitliği ve hızı nedeniyle, diğer görünür yüzey
tespit yöntemlerinin uygulanmasından önce bir ön
algoritma olarak işleme konulur.
12. Depth-Buffer Method
(Derinlik Arabelleği Yöntemi)
En çok kullanılan yöntemlerdendir.
Z-buffer metodu olarak da bilinir.
Bir Image-Space yöntemidir.
Birçok grafik uygulaması ve grafik hızlandırıcı donanım görünür
yüzey tespit algoritması olarak Z-tamponu veya Z-tamponuna
benzeyen yöntemler kullanır.
13. Depth-Buffer Method
(Derinlik Arabelleği Yöntemi)
Depth-Buffer algoritmasının arkasında yatan temel fikir
ekranda gösterilecek olan piksellerden bakış
noktasına en yakın olanları (en küçük z koordinatına
sahip olanları) bulmaktır.
14. Depth-Buffer Method
İşlem Adımları:
Ekrandaki tüm pikseller için iki adet iki boyutlu dizi
kullanılır. (Refresh Buffer ve Depth Buffer )
İlk dizi noktaların rengini, ikincisi ise noktaların derinliğini
tutar.
Renk dizisi arka plan rengiyle, derinlik dizisi de mümkün
olan en büyük değer ile doldurulur.
Ekranda görüntülenecek tüm pikseller için pikselin z
koordinatı hesaplanır.
15. Depth-Buffer Method
İşlem Adımları :
Hesaplanan z değeri derinlik dizisinde aynı piksele
karşılık gelen değerden daha küçükse (bir başka deyişle,
piksel daha yakındaysa), derinlik dizisindeki pikselin eski z
değeri, hesaplanan yeni z değerine eşitlenir.
Derinlikdeğerleri genellikle [0,1] arasına normalize
edilerek tutulur.
Renk dizisindeki pikselin değeri de görüntülenecek
pikselin rengine eşitlenir.
16. Depth-Buffer Method - Algoritma
Depth buffer ve refresh buffer tanımlanır.
depth(x, y) = 0, refresh(x, y) = Ibackgnd
Poligondaki Her bir (x, y) pozisyonu için derinlik hesaplanır
Ax By D
z
C
Eğer z > depth(x, y),
depth(x, y) = z, refresh(x, y) = Isurf(x, y)
18. A-Buffer Method
Depth-buffer algoritmasının devamı olan bir
metoddur.
Bufferdaki her bir pozisyonun iki alanı vardır
• Derinlik alanı
Pozitif ya da negatif bir derinlik değeri saklar
• Yoğunluk alanı
Yüzey yoğunluk bilgisini ya da bir pointer değerini tutar.
19. A-Buffer Method - Algoritma
Bufferdaki her bir pozisyon bir linked listte referans
tutar.
• Her bir piksel pozisyonu için bir çok yoğunluk değeri
olabilir.
d>0 I d<0 Surf1 Surf2
Depth Intensity Depth Intensity
field (a) field field (b) field
<Organization of an A-buffer pixel position : (a) single-surface overlap (b) multiple-surface overlap>
20. A-Buffer Method - Algoritma
Derinlik alanı pozitifse
• Derinlik alanı derinliği tutar
• Yoğunluk alanı RGP değerini tutar
Derinlik alanı negatifse
• İlgili pixeli birden fazla yüzey paylaşmaktadır.
• Yoğunluk alanı yüzeylerin linked listlerine ait bir pointer
içerir.
• Tüm yüzeylere ait veriler linked listtedir.
21. A-Buffer Method
A-Buffer metodunun dezavantajları:
Sadece şeffaf olmayan yüzeyler ile ilgilenir.
Daha fazla belleğe ihityaç duyar.
22. Scan-Line Method
Bir image-space algoritmasıdır.
Edge Table
Ekrandaki doğruların koordinatlarını tutar.
Polygon Table
Doğrular arasında kalan yüzeyleri tutar.
Algoritma soldan sağa işletilir.
23. Scan-Line Method - Örnek
Aktif Liste Scan line 1 B
E
yv
Edge table F
Scan line 1
A
AB, BC, EH, ve FG S1 S2
Scan line 2
AB ve BC arasında , sadece S1 H
Scan line 3
C
Yüzeyi olduğu için D
G
Derinlik hesaplamasına gerek yoktur xv
S1 is refresh buffer’a girilir.
EH ve FG içinde durum benzerdir , sadece S2 yüzeyini
kapsar.
24. Scan-Line Method - Örnek
Scan line 2, 3
Edge table B
E
yv
AD, EH, BC, ve FG F
Scan line 1
A
AD ve BC arasında , sadece S1 S1 S2
Scan line 2
EH ve BC her iki yüzeyide H
Scan line 3
C
Kapsadığından derinlik D
G
hesaplaması yapılır ve S1 ‘in xv
derinliği daha küçük hesaplandığından refresh buffera
yüklenir.
26. Depth-Sorting Method
(Derinlik Sıralaması)
Görüntü ve Nesne Uzayı yöntemlerinin her ikisini de kullanır.
Painter’s algorithm (ressamın algoritması) olarak da geçer.
Yüzeyler derinliklerine göre sıralanır.
En derinden başlanarak ekrana basılır.
27. Depth-Sorting Method
(Derinlik Sıralaması)
Bu yöntem bir bakıma ressamın resim yapmasına benzer. Nasıl bir
ressam sıra ile önce en arkadaki dağları, ovaları, sonra gerideki
ağaçları, evleri, en sonra da en önde oynayan çocukları
boyarsa, bu yöntemde de en arkadaki yüzeyden başlayarak
yüzeyler sırayla çizilir
30. Depth-Sorting Method - Örtüşme Testleri
Örtüşen Yüzeyler için Örtüşme Testleri uygulanır:
S ile örtüşen tüm yüzeyler test edilir.
xy düzleminde örtüşmeyen
xv
zv
30
31. Depth-Sorting Method - Örtüşme Testleri
Bakış açısına göre Yüzey S’nin tamamen örtüşen
yüzeyin arkasında kalması durumu
S
S’
xv
zv
32. Depth-Sorting Method - Örtüşme Testleri
Bakış açısına göre Yüzey S’nin tamamen örtüşen
önünde kalması durumu
S
S’
xv
zv
33. Depth-Sorting Method - Örtüşme Testleri
İki alanın görüntüsünün örtüşmediği durumlar
S
S’
xv
zv
34. Depth-Sorting Method - Örtüşme Testleri
Tüm yüzeyler bu testlerden herhangi birini geçti ise hiç biri
S’in arkasında değildir
Tekrar sıralamaya gerek yoktur.
Eğer 4 testin tamamıda S için başarısız olmuş ise:
⁻ Sıralı listede S ve S’ alanları yerdeğiştirilir.
⁻ Listede tekrar sıralanan her bir alan için testler tekrar edilir.
S’’
S
S’ S S’
xv xv
<S S’> <S S’’, then S’’ S’>
zv zv
35. Depth-Sorting Method - Dezavantaj
İki veya daha fazla yüzey değişimli olarak birbirinin
üzerinde ise
— Sonsuz bir döngü oluşur
36. BSP-Tree Method
Nesneleri ekranda arkadan öne doğru çizdirir.
Painter algoritması ile benzerlik gösterir.
Aşağıdaki durumlarda faydalıdır:
- Bakış açısı değişken olduğunda
- Ekrandaki nesneler sabit olduğunda
37. BSP-Tree Method - Algoritma
Alanlar belirlenir
‘inside’ ve ‘outside’ ayrımı yapılır.
P2 P1 P1
C front back
D
A P2 P2
front back front back
B
front back A C B D
44. Area-Subdivision Method
Tüm alanı küçük parçalara bölerek ele alır.
Bölünen her bir küçük alanda tek bir yüzey parçası
görünene dek bölme işlemine devam edilir.
Küçük alanların tek bir yüzeyi içerdiğine dair testler
yapmak gerekir.
Parçalamaları genellikle dörtlü alanlar şeklinde
yapar (quadtree).
45. Area-Subdivision Method
Tüm alandan başla
Alan üzerinde tanıma testlerini uygula
Alan komplex bir alan ise, alanı küçük alanlara böl
Yeni oluşan alanlara tanıma testlerini uygula
Tek bir alanı içeren parçalar elde edene kadar
işlemi tekrar et.
46. Tanımlama Testleri
4 olası ilişki olabilir:
Surrounding surface
Tamamen alanı kapsayabilir
Overlapping surface Surrounding Overlapping
Alanın bir bölümü içerde ya da dışarda kalabilir. Surface Surface
Inside surface
Tamamen içerde kalabilir
Outside surface Inside Outside
Tamamen dışarda kalabilir. Surface Surface
Ekteki şartlardan herhangi biri sağlandı ise bölünmeye devam
etmeye gerek yoktur:
Tüm yüzeyler beklenen alanın dışında kaldı ise.
Alan içerisinde sadece bir içerde, overlapping, ya da surrounding
yüzey varsa
Bir surrounding yüzey alan içinde diğer tüm yüzeyleri kapsıyorsa
46
47. Octree Method
Area-subdivision methodun geliştirilmiştir.
Görüntülenen alanda Octree düğümleri oluşturur.
Front-to-back order Depth-first traversal
0’ a komşu diğer 4 parça ziyaret edilir.
Framebufferda ki ön yüzde ziyaret edilen ilgili pixele daha
önce bulunan renk atanmamış ise yüklenir. 6
Sadece öndeki renkler yüklenir 5
4
1
0
7 2 47
3
48. Bir Octree’nin Gösterimi
Görünür alanların dörtlü ağaç
(quadtree) üzerinde octree haritası
Recursive bir prosedürle octree nodeları önden arkaya
doğru sıralanır
Görünen tüm yüzeyler için dörtlü ağaç (quadtree)6
gösterimi framebuffer ’a yüklenir. 5
4
1
0
7 2
48
3
Octants in Space
49. Ray-Casting Metod
Işık ışınlarının yollarını izler
Bakış açısından her piksele ışın gönderilir.
Bu ışın ile hangi nesnelerin kesiştiğini tespit eder.
Kesişim noktası en yakın olan görünür yüzeyler belirlenir.
Etkili görünürlük algılama yöntemidir
Eğrilik içeren sahneler için etkindir
49
52. Curved Surfaces - Abstract
Eğri alanlarda etkin metodlar
Ray-casting
Octree metodu
Eğri Yüzeyler genellikle bir düzlem ve poligon
yüzeyleri setinden oluşur
Diğer herhangi bir visible-surface metodu uygulanır.
Daha etkili bir sonuç için daha sonra ray casting ve
curved-surface metodları da uygulanır.
52
53. Wireframe Metod
Wireframe Gösteriminde
Yüzey kenarlarına görünürlük testleri uygulanır.
Görünür kenar alanları gösterilir.
Gizli kenar alanları saklanır ya da görünür kenar
Kenarların görünürlük belirlemesi procedürü
Visible-line detection, Hidden-line detection metodları
kullanılabilir.
53
54. Wireframe Visibility Methods
Her bir doğruyu her bir yüzey ile karşılaştır.
Görünür doğruları tanımlamak için direk kullanılan bir
uygulamadır.
Derinlik değerleri yüzeylerinki ile karşılaştırılır.
Coherence metodu (Scan Line) kullanılır.
Depth-sorting(Derinlik sıralaması) ile
İç kısımdakiler arka plan rengindedir.
Sınırlar ön plan rengindedir.
Yüzeyler arkadan öne doğru işlenir.
Saklı alanlar yakın yüzeylerden silinir.
54
57. Özet(1 / 2)
Back-face detection metod
İlk tarama olarak etkin ve hızlı
Ancak tüm gizli alanların tepitini yapamaz.
Depth-buffer(z-buffer) metod
Hızlı ve basittir
İki Buffer kullanır:
1. Refresh buffer pixel yoğunlukları için
2. Depth buffer görünen yüzeyin derinlikleri için
57
58. Özet(2 / 2)
A-buffer metodu
Depth-buffer uygulamasının gelişmiş halidir.
Şeffaf yüzeylerde de etkilidir.
Diğer visible-surface detection metodları
Scan-line metodu
Depth-sorting metodu (painter’s algorithm)
BSP-tree metodu
Area subdivision metodu
Octree metodu
Ray casting metodu
58