Üç Boyutlu Grafikler İçin Temel İşlemler Ve Tanımlamalar
İnsanlar ilk çağlardan bu yana çevresinde bulunan cisimleri, meydana gelmekte olan olayları diğerlerine anlatabilmek için resim,heykel ve yazı gibi vasıtaları kullana gelmiştir. İnsanlık, ilerleyen zaman içerisinde, teknolojinin de gelişmesinin etkisiyle, cisimlerin temsili yapılırken ne kadar çok gerçekçi olunursa, o kadar etkili bir temsil ortaya çıkacağını anlamış ve bu yönde çalışmalarını ilerletme yolunu seçmiştir.
Günümüze geldiğimizde ise insanların hayatında, bir iletişim aygıtı olan bilgisayar, bir çok alanda yer almıştır. Bilgisayarın bir çok alanda kullanılmaya başlanmasıyla , cisimlerin, olayların kısacası bilgisayar ekranından insanlara ulaştırılmak istenilen her şeyin günlük hayattaki gibi gerçek olması yani üçboyutlu olarak görüntülenmek istenilmesi kaçınılmaz hale gelmiştir. İnsan çevresinde bulunan her türlü nesneyi üç boyutlu olarak görüp algılamaktadır. Göz, yapısında bulunan katmanlar yardımıyla cisimlerden yansıyan ışıkları algılayarak beyne iletmekte ve böylelikle bizler çevremizdeki cisimlerin renk,şekil ve derinlilerinialgılayabilmekteyiz. Cisimlerin renk ve şekillerine ek olarak derinlikleri de işin içine girince üçüncü boyut denilenolay ortaya çıkmaktadır. Öyleyse diyebiliriz ki insanın direkt olarak nesneleri algılamasında herhangi bir sorun söz konusu değildir. Fakat insan bir monitör aracılığıyla bu işi yapmak istediğinde ise nesnelerin derinliği yani üçüncü boyutu ile ilgili bir sorun ortaya çıkmaktadır. Bu sorun görüntülemek istediğimiz nesnelerin üç boyutlu olmasına rağmen kullandığımız monitörlerin ise iki boyutlu cihazlar olmasıdır. Bu durum, bilgisayar grafiklerinde ekrandaki geometrik modellerin görüntülerinin insan beyninde üç boyutlu gerçek görüntü hissini vermesi veya insanını onu gerçek sanmasını amaçlayan Sanal Gerçeklik(Virtual Reality) konusunun ortaya çıkmasına gerekçe olmuştur.
Bilgisayar ekranında bir bilgisayar modeli oluşturduğumuzu düşünelim bu modelin her bir koordinatını bilmemiz gerekir. Ancak bu koordinat, cismin kendi koordinat sisteminde doğru olması gerekmektedir. Kendi koordinat sisteminde tanımlanan cisim daha sonra ekran koordinat sistemine, kamera koordinat sistemine veya dünya koordinat sistemine aktarılarak görüntü oluşturulur.
Derinlik oluşturma ise z ekseninde gerçekleşen hareketlerde cismin diğer iki koordinatının etki alıp yeni konum belirlenmesi sonucu oluşur. Yapılan bu işlemler neticesinde ekranda bulunan cisme üçüncü bir boyut yani z ekseni eklenilerek cisme üç boyutlu bir görünüm kazandırılmış olur.
BÖLÜM 2
2.Üç Boyutlu Grafikler İçin Temel İşlemler Ve Tanımlamalar
2.0 Giriş
Bilgisayarda bir nesne görüntüsünün çizilebilmesi ve bu görüntü üzerinde çeşitli matematiksel dönüşümlerin uygulanabilmesi için nesnenin tanımlanması , seçilen uygun bir koordinat sistemine göre noktalar ve bunları birleştiren doğrularla yapılır. Nesne üzerinde herhangi bir dönüşümün gerçekleştirilebilmesi bu doğrunun bu noktalar kullanılarak yapılır. Örneğin nesnenin büyüklüğünün değiştirilmesi , bir yerden başka bir yere taşınması , nesnenin döndürülmesi ve perspektifinin oluşturulması gibi nesneyi tanımlayan noktaların her birine bu dönüşüm işlemlerinin ayrı ayrı uygulanması ile yapılır. Bu dönüşümler bilgisayarda grafik düzenlemelerin temelini oluşturur. Borland grafik paketi , programcıya sadece çizimlerde kullanılan temel ve yardımcı komutları verir. Nesne üzerinde dönüşümleri gerçekleştirmek için kullanılabilecek herhangi bir komut içermez.
Dönüşümler iki üç boyutlu nesneler için uygulanabilir matematiksel formüllerdir. Bilgisayarın ekranı iki boyutlu olarak çalışmak zorundadır. Üç boyutlu nesnelerin ekranda görüntülenmesi , nesnenin boyutunun bir azaltılmasıyla gerçekleştirilir. Boyutun azaltılması ise nesne görüntüsünün ekran düzlemi üzerine iz düşürülmesiyle yapılır. (Erdun 1993)
Bilgisayar yardımıyla bir resmin tasarlanması için ekran üzerindeki noktalar kullanılır. Bazı dönüşüm işlemleri yardımıyla yüzeylerin oluşturulması için bir araya toplanmış noktalar kullanılır ve canlı resimler elde etmek içinde bu yüzeylerden faydalanılır .
2.1 Geometrik Tanımlamalar
2.2 . 1 Nokta tanımlaması
Uzayda bir yeri belirten sıfır boyutlu nesnelere nokta denir. Noktalar kullanarak doğrular ve doğrular kullanarak da çeşitli nesnelerin çizimi yapılabilir. Noktalar iki ve üç boyutlu olarak koordinat sisteminde gösterilebilir(Şekil 2.1)
Matematiksel olarak ise nokta bir matris şeklinde gösterilebilir . Noktaların matris şeklinde tanımlanması dönüşüm işlemlerinin daha iyi anlaşılmasını ve yazımını sağlar . Üç boyutlu koordinat sisteminde nokta, matris formunda iki şekilde gösterilebilir.
P=[x y z] veya P =
Burada gösterilen P matrisleri çoğunlukla vektör olarak isimlendirilirler.
Y y
p(x,y,z) p(x,y)
0 x 0 x
z (a) (b)
Şekil 2.1 Noktanın gösterilmesi (a)üç boyutlu (b) iki boyutlu
2.1.2 Doğru parçası tanımı
Bir doğru tanımlayabilmek için en az iki nokta kullanılmaktadır. Bir doğru parçası tanımlayabilmek için doğru parçasının başlangıç ve bitiş noktalarının belirlenmesi gereklidir. (Şekil 2.2)
Bir doğru parçası bir vektör olarak da gösterilebilir. Koordinat sisteminde , nesneyi oluşturan vektörleri belirleyen noktalar serisi , bir matris olarak bilgisayarda ifade edilebilir. Bu matris bir nesneyi tanımlayan noktaların tümünü içerir. Bir nesneye dönüşüm işlemi uygulanması bu matris değerlerinin her birine ilgili dönüşüm işlemlerinin uygulanması ile sağlanır.
y
P2(x2,y2)
P1(x1,y1)
0 x
Şekil 2.2 Bir doğru parçası
2.1.3 Yüzey tanımlanması
Bilgisayar ekranında nesnelerin geometrik modelleri oluşturulurken yüzey tanımlamaları yapılır. Bir nesnenin kaç yüzeyden oluştuğu ve bu yüzeylerin biçimi, yüzeyi oluşturan noktalar tarafından belirlenir. Bir küpün alt yüzeyi vardır ve her bir yüzey dört köşe ile tanımlanır. Nesneleri dışardan göründüğü şekliyle her bir yüzeyinin etrafında dizilen noktaları saat ibresinin ters yönünde tanımlamak önemlidir.
2.1.3.1 Üç boyutlu yüzey
Üç boyutlu koordinat sisteminde bir yüzey iki şekilde gösterilebilir. Bunlar:
Z = f ( x, y ) veya g (x, y, z) = 0
Birincisinde x ve y koordinat değerleri kullanılarak z değeri ile yüzey oluştururlar. Diğerinde ise bir değişkenin verilen sabit değerleri için diğer değişken değerlerinin değiştirilmesiyle elde edilen eğri gruplarından yüzeyler oluşturulur.
y
x
z
Şekil 2.3 Üç boyutlu koordinat sisteminde yüzey gösterimi
Bilgisayar grafiklerinde bir düzlem denklemi aşağıdaki gibidir.
ax+by+cz+d=0
Burada , eğer d sıfırdan farklı ise denklemin d ye bölünmesi ile düzlemde bir değişiklik olmaz. Bu nedenle denklemde sadece üç nokta bir düzlemi belirler. d orijinden düzleme olan uzaklık değerini gösterir ve aynı a,b,c katsayılarına sahip denklemlerden elde edilen bütün düzlemler birbirine paraleldir. d=0 ise düzlem orijinden geçer.
aX + bY + cZ = 0
y
P(x,y,z)
d
x
0
z
Şekil 2.4 Üç boyutlu koordinat sisteminde düzlem
P(x,y,z) noktası düzlem üzerinde olan keyfi bir noktadır ve P matrisi şeklinde gösterilebilir .Orijinden P(x,y,z) yönünde olan doğru veya vektör düzlem içinden geçer. Aynı zamanda n(a,b,c) üç boyutlu bir nokta olarak ele alınabilir ve aşağıdaki gibi yazılabilir.
n = , p =
İki vektörün skaler çarpımını kullanarak orijinden geçen düzlemin denklemi yazılabilir.
p * n = *
n,düzlemindeki tüm vektörler diktirler. Bu nedenle üç boyutlu uzayda düzlemin doğrultusunu kontrol eder. Sadece düzlemin orijinden olan uzaklığına etki eder ve n(a,b,c) her zaman
ax + by + cz + d = 0
düzlemine dik bir vektörü belirtir.
BÖLÜM 3
3.GEOMETRİK DÖNÜŞÜM İŞLEMLERİ
3.0 Giriş
Burada temel iki boyutlu dönüşümlerin anlatımından yola çıkarak üç boyutlu dönüşüm ve nesnelerin modellenmesi anlatılacaktır.
3.1 Temel Dönüşüm İlkeleri
Bilgisayar grafiklerinde dönüşüm işlemi olarak adlandırılan üç temel işlem vardır. Bunlar:
1-Konum Değiştirme (Translation)
• X ekseninde konum değiştirme
• Y ekseninde konum değiştirme
• Z ekseninde konum değiştirme(X ve Y yönünde konum değiştirme)
2- Ölçeklendirme (Scaling)
• Büyültme
• Küçültme
3-Döndürme (Rotating)
• X ekseninde döndürme
• Y ekseninde döndürme
• Z ekseninde döndürme
Bu üç temel işlem ya ayrı ayrı veya arka arkaya kullanılarak tüm dönüşümler gerçekleştirilir.
Bunun için matematiksel hesaplamalara ihtiyaç duyulur. Bilgisayar grafiklerinde nesne uzayı terimi bizim anladığımız gerçek dünyada nesnelerin gerçek koordinatlarını tanımlamak için kullanılır. Aynı nesnenin bilgisayar ekranında tanımlanması içinde ekran uzayı terimi kullanılır . Nesneler dönüşüm işlemlerinin bir arada kullanılmasıyla nesne uzayından iki boyutlu ekran uzayına tanımlanırlar. Yine geometrik hesaplamalar kullanılarak üç boyutlu resimlerin animasyonu iki boyutlu ekran üzerinde gerçekleştirilir.
Bir çok bilgisayar grafik uygulamalarında dönüşüm işlemleri yaygın olarak kullanılır. Robotların simülasyonu, eklemli figürlerin animasyonu gibi, homojen koordinatlar matrisi olarak isimlendirilen matematiksel gösterim matris çarpımları gibi bütün dönüşüm işlemlerinin yapılmasına olanak tanır. Bu metotla üç boyutlu döndürme işlemini anlatmak için 3*3 matrise 4. Kolon ve satır eklenir. Aynı matrisle konum değiştirme de yapılabilir. Bir noktanın koordinatlarının gösterilmesinde p(x,y,z,w) veya iki boyutluda p(x,y,w) kullanılır. Bazı nedenlerle w “Y” olarak alınır ve matris çarpımının bir sonucu olarak dönüşüm işlemleri üzerinde etkili olmaz.
3.2 İki Boyutlu Dönüşüm İşlemleri
3.2.1 Konum değiştirme
İki boyutlu konum değiştirme P(x,y) noktasının koordinat değerlerine Tx,Ty konum değiştirme değerleri eklenerek gerçekleştirilir. Tx x ekseni yönünde , Ty y ekseni yönünde P noktasının hareketini belirtir. Şekil (3.1)
Bu işlem:
Px’ =Px +Tx
Py’ =Py+Ty
Aynı işlemler homojen koordinatlar matrisi şeklinde aşağıdaki gibi gösterilir.
P’(x,y,1 ) =P(x,y,1) *
T konum değiştirme matrisini gösterirse :
P’=P * T
y y
P’(x,y)
P(x,y) P(x,y)
0 x 0 x
Şekil 3.1 İki boyutlu konum değiştirme
3.2.2 İki boyutlu ölçeklendirme
Bir resim x,y koordinat ekseninde boyutlarının ölçeklendirilmesi için resmi oluşturan bütün noktalar aynı ölçeklendirme katsayıları Sx,Sy ile sırasıyla çarpılmalıdır. Şekil 3.2’de görüldüğü gibi bütün noktalar (P1..P4) ölçeklendirme katsayısı 2 ile (Sx,Sy için ) çarpılmıştır. Eğer örnek olarak p1 noktası ele alınırsa ölçeklendirme işlemi aşağıdaki şekilde yapılmış olur.
Pıx’ P1x’=p1x*Sx
Pıy’=P1y*Sy
matris formunda yazarsak:
Pı’(x,y,1)=Pı(x,y,1)*
Kısa formda yazmak istersek:
P’=P*S
S ölçeklendirme matrisini göstermektedir.
P’4 p P’3
P4 P3
P1 P2 P’1 P’2
Şekil 3 . 2 . İki boyutlu Ölçeklendirme
3.2.3 İki Boyutlu Döndürme
Orijindeki bir noktanın iki boyutlu döndürme işlemleri, dönme açılarının sinüs ve kosinüs değerlerinin kullanılmasıyla yapılır. Eğer bir P ( x, y ) noktası orijinden saat yönünün tersi yönde 0 açısı ile döndürülürse aşağıdaki eşitlikler yazılabilir. Bu durum şekil 3 . 3 de gösterilmiştir.
PX’ = PX * Cosy – PY * Siny
PY’ = PX * Siny – PY * Cosy
Veya matris şeklinde yazarsak :
P’ ( x, y, 1 ) = P ( x, y, 1 ) *
R döndürme matrisi ise :
P’ = P * R
Şeklinde bir ifade yazılabilir.
y
P’
0 x
P
Şekil 3.3 İki boyutlu döndürme
3.2.4 Herhangi bir noktanın iki boyutlu döndürülmesi
Orijinde olmayan bir noktanın döndürülmesi işlemini yapmak robot teknolojisinde ve robot ilişkili bilgisayar grafiklerinin uygulamalarında sıkça kullanılır. Bu döndürme işlemi şekil 3 . 4 de gösterildiği gibi üç adımda yapılabilir.
Şekildeki P ( x, y ) noktasını B ( x, y ) noktası üzerinde a açısı kadar çevirmek istersek ilk iş olarak B noktasını orijine taşırız. Bu nedenle P ( x, y ) noktası – BX ve – BY
değerleri kadar taşınmış olur. Bu durum matris formunda aşağıdaki gibi gösterilebilir.
T1 =
Daha sonra döndürme işlemi bu taşınmış vektör çevirme matrisi R ile çarpılarak elde edilir.
R =
Sonuç olarak döndürülmüş nokta eski yerine taşınır. Bu T1-1 ile tersine taşınma işlemi gerçekleştirilir.
T1 =
Yukarıda verilen üç dönüşüm matrisi şekil 3 . 4 deki dönüşüm işlemlerini yapmak içindir. Burada bu dönüşümlerle ilgili önemli bir faktör, bu dönüşüm işlemlerinin yukarıda anlatıldığı şekliyle ve sırasıyla olması gerekliliğidir. Aksi halde dönüşüm işlemi gerçekleşmeyecektir.
Şekil 3.4 İki boyutlu herhangi bir noktanın döndürülmesi
3.3 Üç Boyutlu Geometri
Geçerli iki boyutlu tanıma bir üçüncü boyutun eklenmesiyle üç boyutlu koordinat sistemi elde edilir. Bu yeni boyut, derinliği verir veya Z ekseni olarak isimlendirilir. Üç boyutlu grafikler de birçok yönden iki boyutlu grafiklerin uzantısıdır. Üç boyutlu grafiklerin bilgisayar ekranında görüntülenmesi iki boyutlu hale dönüştürülerek yapılır. Bu da üç boyutlu nesne görüntüsünün projeksiyon yöntemi ile bilgisayar ekranına iz düşürülmesi ile olur. Üç boyutlu bilgisayar grafiklerinde sol-el ve sağ-el koordinat sistemi olmak üzere iki çeşit koordinat sistemi kullanılır. Genellikle, nesnenin tanımlanmasında sağ-el, görüntülenmesinde ise pozitif z nokta değerlerinin içerde kaldığı sol-el koordinat sistemi tercih edilir. ( şekil 3 . 5 )
y y
z
o x o x
(a) Sol el
z (b) Sağ el
Şekil 3 . 5 Koordinat sistemleri
Üçboyutlu homojen koordinat sisteminde bir noktanın gösterimi için kullanılan P vektörü :
P =
şeklindedir. İkinci boyutta bir nokta, üç boyutlu homojen koordinatlarda kullanılacağı zaman w daima 1 olarak alınır. Üç boyutlu nesnelerin ekranda görüntülenmesi durumunda w için farklı değerler kullanılabilir. Üç boyutlu homojen dönüşüm matrisinin iki boyutlu homojen dönüşüm matrisinden tek farkı sadece üçüncü boyut hesaplamalar için bir satır ve sütun eklenmiş olmasıdır.
3.3.1 Üç Boyutlu Konum Değiştirme İşlemi
Bir nesnenin konum değiştirmesi için nesneyi oluşturan bütün noktaların x, y, z koordinat değerlerine sırayla TX, TY, TZ öteleme miktarlarının eklenmesiyle yapılır. Üç boyutlu konum değiştirme denklemleri :
PX’ = PX + TX
PY’ = PY +TY
PZ’ = PZ+ TZ
şeklindedir.
Konum değiştirme işleminin homojen koordinat matrisi şeklinde gösterimi aşağıdaki gibidir.
T =
Bir P ( x, y, z ) noktası için konum değiştirme işleminin gösterimi ise :
P’ ( x, y, z, 1 ) = P ( x, y, z, 1 ) *
Şeklindedir. TZ ‘nin önceki değerine göre konum değiştirme işlemi z ekseni üzerindedir.
3.3.2 Üç Boyutlu Ölçeklendirme İşlemi
Diğer işlemlerde olduğu gibi ölçeklendirme işlemi iki boyutludaki gibidir. Tek fark yeni ölçeklendirme katsayısı SZ dir. Bu durum matris formunda aşağıdaki gibi gösterilir.
S =
Bir P ( x, y, z ) noktası için ölçeklendirme işleminin gösterimi ise,
P’ ( x, y, z, 1 ) = P ( x, y, z, 1 ) *
Şeklindedir. Ölçeklendirme işleminde katsayılardan birinin 1 den küçük olması durumunda nesnenin boyu ilgili yönde küçülür. 1 den büyük olması durumunda nesnenin boyu ilgili yönde büyür. Nesnenin boyutunun her yönde eşit oranlarda büyütülmesi veya küçültülmesi, her üç ölçeklendirme katsayısının birbirine eşit olarak alınmasıyla sağlanır.
3.3.3 Üç Boyutlu Döndürme İşlemi
Üç boyutluda da iki boyutlu döndürme işlemi geçerli olur. Bu nedenle eğer bir nesne üç boyutlu sistemde döndürülmek istenirse dönüş ekseni mutlaka belirtilmelidir. Ayrıca pozitif dönüş yönünün ne olacağı önemlidir. Bir eksen etrafında pozitif dönüş,döndürme ekseninin pozitif tarafından orijine doğru bakıldığında saat ibresinin dönüş yönünün tersi olarak belirlenir.
Üç eksen etrafında birbirinden bağımsız dönüşler yapılabilir. Bir eksen etrafında döndürme işlemi yapılırken nesnenin koordinatlarından, döndürmenin yapıldığı eksene ait koordinat değeri sabit tutularak diğer koordinat değerleri dönüşüm işlemine tabi tutulur. Bu nedenle bir z düzleminde döndürme işlemi iki boyutludur. Saat tersi yönündeki x, y, z eksenleri üzerindeki dönüşler aşağıda gösterilmiştir.
y z
o x
Şekil 3 . 6 Saat yönünün tersi yönde üç boyutlu döndürme
X ekseni etrafındaki dönüşte nesne noktalarının x değerleri sabit tutulur.
RX =
Y ekseni etrafındaki dönüşte nesne noktalarının y değerleri sabit tutulur.
RY =
Z ekseni etrafındaki dönüşte nesne noktalarının z değerleri sabit tutulur
.
RZ =
bX, bY, bZ açılarına bağlı olarak bir nesnenin her üç eksene göre döndürülmesini sağlayan dönüşüm matrisi, her eksen için ayrı olarak yazılan döndürme matrislerinin çarpımı ile elde edilir.
R =
BÖLÜM 4
4. ÜÇ BOYUTLU GÖRÜNTÜ OLUŞTURMA
4.0 Giriş
Üç boyutlu nesne bilgisayar ekranında görüntülenene kadar birçok değişik aşamalardan geçmek zorundadır. Burada bu aşamaları kısaca gözden geçireceğiz.
3B Görüntü İçin Dönüşümler ( 3D Viewing Transformations ) : 3B’lu bilgisayar terimlerinden “ dünya koordinatları uzayı “ içinde yaşadığımız dünyayı tanımlar. Eğer biz bu uzayda bulunan bir nesneyi bilgisayar ekranında görüntülemek istersek aşağıdakileri tanımlamamız gerekir.
• Nesneye bakarken bulunduğumuz noktayı
• Bakış eğimi açısını
• Nesnede kesin olarak baktığımız noktayı ( interest point )
Bir de özel bir bakış noktasından görüntülenebilir kısmın belirlenmesi gerekir. Bütün tanımlamalar yapıldıktan sonra görüntülenecek resmin bilgileri doğrultusunda nesnenin bilgisayar ekranına aktarılma işlemine geçilir. Bu bilgiler ışığında 3B’lu dönüşümün ilk adımı tam bir dönüşüm için nesneler, nesne uzayından ekran uzayına aktarılırlar.
Kesit Alma İşlemi ( Clipping ) : Gözün doğal özelliklerinden dolayı bakış alanının boyutları sınırlıdır. Çünkü arkamızda ne var göremeyiz. Bu sınırlama bilgisayar ekranında kesme işlemiyle gerçekleştirilir. Nesnelerin üzerinde bakış alanı sınırları dışında kalan hatlara kesme işlemi uygulanır.
Görünüşün Ölçeklendirilmesi ( Perspektive Scatting ) : Nesnelerin doğal görünüşünü elde etmek, başka bir deyişle cismin ekrana uzaktaki görüntüsü küçük, yakındaki görüntüsü geniş görünüşlü olması için görünüşün ölçeklendirilmesi gerekir. Aksi halde nesnenin görüntüsü aslından farklı olur.
Görünmeyen Yüzeyin Kaldırılması ( Hidden Surface Removal ) : Nesnenin görünmeyen parçalarının işlemlerinin tamamlanması sırasında bunların görüntülenmesine gerek yoktur. Bu işleme “ görünmeyen yüzeyin kaldırılması işlemi “ denilir.
Resim İşleme ( Rendering ) : Bir diğer işlem de benzer işleyişleri gerektiren “ resim işleme “ dir. Görüntülenemez hatlar veya yüzey kaldırılması yerine görüntüyü oluşturan her bir piksel görüntülenebilir yüzey üzerinde olup olmadığı ayrı ayrı test edilir. bir de daha kaliteli resim için gölgeler ve diğer ışık ilişkili özellikler aynı tip işlemle sağlanır.
Görüntü Sistemi ( Display System ) : Sonuçta grafiklerin bilgileri bu değişik aşamalarda işlenip, çizim, ekranda tutan display kontrolörü ve frame buffer içeren display sistemine gönderilebilir olmalıdır.
4.1 Sanal Kamera ( Virtual Camera )
Burada kullanılan kavramlar ( Öğütmen,1998) dan özetlenerek aktarılmıştır. Animasyon programcılarının başlıca problemlerinden birisi bilgisayar ekranında, üzerinde güzel görüntü efektlerinin yapılabildiği bir görüntü penceresi yapacak piksel dizinin nasıl tanımlanması gerektiğine karar vermektir. Kaliteli resimlerin hazırlanması problemini, kullanıcı, gerçek kameranın simülasyonu ve özel efektlerin yardımıyla çözebilmektedir. Dijital kamera, sanal kamera, sentetik kamera terimleri aynı şeyi ifade ederler ve gerçek hayatta film çekimleri için kullanılan kameranın simülasyonunu veren, aynı düşüncenin sonuçlarıdır. Sanal kamera terimi üç boyutlu bilgisayar grafiklerinde sıkça kullanılır ve üç boyutlu dünya koordinat sistemi içindeki bir nesnenin bilgisayar ekranı üzerindeki iki boyutlu izdüşümünü alan dönüşüm işlemlerinin tümünü içeren bir program parçasının sonucudur. (Levy,1995)
Bir sanal kamera üç boyutlu dünya koordinatlarında tanımlanmış göz noktası ve bakılan nokta olarak isimlendirilmiş iki nokta ile tanımlanabilir. Sanal kameranın tanımı için kullanılan bazı yaygın bilgisayar terimleri aşağıda açıklanmıştır.
• Dünya Koordinat Sistemi (World Coodinate System , WCS ) : Bazen nesne uzayı olarak kullanılsa da nesnelerin temel koordinat sistemidir.
• Bakış Düzlemi ( View Plane , VP ) : Üç boyutlu resmin izdüşümünün yapıldığı düzlem. Genellikle bilgisayar ekranı olarak alınır.
• Bakış Düzlemi Koordinatları (View Plane Coordinates , VPC ) : Bilgisayar ekranı koordinat sistemidir. VP ile ilgilidir.
• İlgilenilen Nokta ( Point of Interest , POI ) : Bakılan görüntü üzerindeki ilgilenilen merkez nokta. Bazen bakış pozisyonu olarak da tanımlanabilir. Eğer bu nokta değişirse ekrandaki görüntü direk olarak etkilenir.
• Bakış Düzleminin Normali (View Plane Distance , VPN ) : Bakış düzleminden ilgilenilen noktaya yönlendirilmiş bir vektördür ve bakış düzlemine diktir.
• Bakış Düzleminin Mesafesi (View Plane Distance , VPD ) : Bakış VPN boyunca POI ve VP arasındaki uzaklığa, bakış düzleminin mesafesi denir.
• Bakış Noktası ( View Point , VPT ) : Göz noktası olarak da bilinir. WCS ile ilişkili olarak kamera pozisyonu veya bakış pozisyonunun üç boyutlu koordinat değerleri ile tanımlandığı noktadır.
Şekil 4.1 de üç boyutlu kamera dünya koordinatlarında ( WCS ) yerleştirilmiştir. Bulunulan noktadan xy, yz, xz yüzeylerine dik olan mesafeler kamera pozisyonunu verir. Z ekseni yukarı bakış yönünü ve POIx, POIy, POIz değerleri dünya koordinat sistemi ( WCS ) ile ilişkili verilmiştir. Bakış noktası normali ( VPN ) kamera objektifi ile ilgilenilen noktayı ( POI ) i birbirine bağlar ve bilgisayar ekranına diktir. Kamera yönü POI ya doğrudur. Bilgisayar ekranı üzerinde sol alt köşe orijin olarak ve XS noktaları sağa doğru, YS noktaları yukarı doğru alınmıştır. Bu dönüşümler kullanıldığında görüntü koordinatları, bilgisayar ekranı koordinat sistemine ( VPC ) dönüştürülmüş olur. Bu işlemler birkaç adımda gerçekleştirilir. İlk olarak orijin ilgi noktasına kaydırılır. Daha sonra P (XC, YC, ZC ) değerleri alınarak bakış noktasına çevrilir. XC ekseni üzerinde YC ekseni ZWCS yi kesene kadar koordinat sistemi çevrilir ve eksen sistemi de XC ekseni etrafında ZC ekseni ilgilenilen noktayı gösterene kadar döndürülür. Sonuçta koordinat sistemini sol-el koordinat sistemine dönüştürmek için XC ekseninin yönü ters çevrilir. Bu beş dönüşüm işlemi aşağıda görüldüğü gibi dört matris işlemi olarak ifade edilmiştir. Bunlar :
T1 =
T2=
T3=
T4=
Dönüşüm matrisleri içinde P ( XC, YC, ZC ) dünya koordinat sistemiyle ilişkilendirilmiş üç boyutlu kamera koordinatları tanımına uygun gelir. POI ile kamera koordinatlarını birleştiren D doğrusu aşağıdaki gibi ifade edilebilir :
D=
D’nin x-y düzlemindeki yansıması olan L değeri ise :
L =
Şeklinde yazılır ve P ( X’, Y’, Z’ ) nün değerleri de aşağıdaki gibi hesaplanır.
X’ = ( XC – XPOI )
Y’ = ( YC – YPOI )
Z’ = ( ZC – ZPOI )
Böylece dünya koordinatlarında verilen bir P ( XW, YW, ZW ) noktası aşağıdaki formül ile kamera koordinatlarına dönüştürülebilir.
P ( XC, YC, ZC ) = P ( XC, YC, ZC ) * T
Yukarıda verilen dönüşüm işlemlerinin tümünü bir seri şeklinde gösteren dönüşüm matrisleridir.
P ( XC, YC, ZC ) = P ( XW, YW, ZW ) * ( T1 ,T2, T3, T4 )
Verilmiş bir noktanın yukarıdaki gibi kamera koordinatlarının bulunmasından sonra ekran koordinat değerleri de hesaplanabilir. Bizim görüntümüzü oluşturan noktaların bütün koordinat değerleri yukarıda tanımlandığı şekliyle hesaplanır. Kullanıcı, kamera hareketlerini tanımladığı gibi bakış noktasını ve ilgilenilen noktayı da değiştirmekte serbesttir. Bu durum değişken bakış şartlarının ortaya çıkmasını sağlar. Her bir çerçevenin hesaplanması sırasında program gerekli dönüşüm parametrelerini kontrol eder ve eğer onlar değişirse bir sonraki çerçeve yeni tanımlanan parametrelere göre hesaplanır.
4.2 Boyutlu Kesit Alma İşlemi ( Clipping )
Bir animasyon sistemi içerisinde üç boyutlu kesit alma işlemi görüntüleme, işlemlerinin temel parçasıdır. Kesit alma işlemleri ile görüntü oluşturmanın genliğini sınırlarken bazı istenmeyen etkiler olabilir. Örneğin negatif noktaların yansıması gibi veya kesit alma sınırları dışında kalan noktaların neden olduğu grafik ekran sınır değerleri ihlalleri, resimleri bozabilir.
Şekil 4.2 de görüldüğü gibi görüntü oluşturma genliği sağ, sol, üst ve alt kesme yüzeylerinden oluşur. Görüntü oluşturma algoritması, görüntünün görüntülenebilir bölgelerini sınırlayan bu yüzeylerle nesnelerin mevcut hatlarını keser. Uzak noktalar için böyle bir sınırlama olmamasından dolayı bu görüntü oluşturma genliğiyle, sonsuz bir görüş elde edilebilir. Görüntüyü daha gerçekçi yapmak için ön ve araka kesme yüzeyleri adı ile iki yeni kesme yüzeyi daha mevcut dört yüzeye eklenmiştir. Ön kesme yüzeyinin amacı, görüntü yüzeyinin veya göz noktasının arkasında bulunan noktaların görüntülenmesini sağlamaktır. Arka kesme yüzeyi ise uzak görüntü genliğinde gerçeğe aykırı olarak görüntülenmiş olan noktaları kesmek için kullanılmıştır. Bu iki yüzey ile kesilmiş görüntü genliğine “ sınırlı görüntü genliği “ adı verilir.
3B’lu grafikte kesme işlemi genellikle 3B’lu göz koordinat sistemi içinde yapılır. Göz koordinatları içindeki kesme, kesme işleminden sonra görünür olmayan noktaların dönüşüm işlemlerini gerektirebilir. Fakat 3B’lu nesne uzayındaki kesme işlemlerinin zorlukları yanında bu durum önemsenmeyebilir. (Levy ,1995 )
4.3 Ekran Üzerinde Görüntü Oluşturma
Değişik görsel efektler elde etmek için değişik projeksiyon teknikleri kullanılabilir. Üç boyutlu bilgisayar grafiklerinde 3B’lu bir nesnenin projeksiyonu “ planar geometric projections “ olarak isimlendirilen bir dizi dönüşümle 2B’lu bilgisayar ekranı üzerindeki noktaların izdüşümleri alınarak yapılır. Yani nesnenin z koordinatı atılır.
Projeksiyon teknikleri kullanım açısından paralel ve perspektif projeksiyon olarak iki gruba ayrılabilir. Projeksiyonda önemli olan, projeksiyon çizgilerinin projeksiyon düzlemi ile yaptığı açı, projeksiyon yönü (nesneye hangi yönden bakıldığı) ve projeksiyon merkezinin nesneye olan uzaklığıdır. Paralel projeksiyonda, projeksiyon merkezinin uzaklığı sonsuz olarak kabul edilir. Bu yüzden projeksiyon çizgileri birbirine paraleldir. Perspektif projeksiyonda ise projeksiyon çizgileri paralel değildir. Paralel projeksiyon da kendi aralarında gruplara ayrılmaktadır. Paralel projeksiyon mimarlar, desinatörler, mühendisler ve diğer çizim işiyle uğraşanlar tarafından tercih edilir. ( Leung,1989 )
4.3.1 Perspektif Projeksiyon
Gerçek dünyada nesneler üç boyut içinde algılanır fakat bilgisayar ekranında sadece iki boyut vardır ( x, y ) . Bu nedenle üç boyutlu dünya koordinatlarındaki bir nesnenin iki boyutlu ekran veya görüntü koordinatlarına dönüştürmenin bir yolunu bulmaya gerek vardır. Nesnelerin uzaktaki görünüşlerinin gerçekçi olarak görüntülenmesi için küçük ve dar, ekrana yakın olan görünüşleri büyük ve geniş olmalıdır. Bu perspektif projeksiyonla yapılır. Perspektif projeksiyon bize daha gerçekçi bir görünüş sunmakla birlikte bu işlem uygulandığı zaman nesnelerin tam boyutları kaybolmaktadır. Bu nedenle yaygın olarak tanıtım, reklam, animasyon veya diğer benzer grafik uygulamalarında kullanılır.
Perspektif projeksiyonlarda, projeksiyon doğruları birbirine paralel değildir. Bunlar projeksiyon merkezi olarak adlandırılan bir noktadan çıkarılır. Projeksiyon merkezi tek ise bu projeksiyona tek noktalı, iki tane ise iki noktalı, üç tane ise üç noktalı perspektif projeksiyon denir. Burada sadece tek noktalı projeksiyon tipi ele alınacaktır.
Eğer dünya koordinatlarında tanımlanmış bir P (XW, YW,,ZW ) noktasının perspektif projeksiyonunu bulmak istersek, bir D mesafesinden noktanın bulunduğu yere bakılmış olsun. Bu projeksiyonun ekran üzerindeki oluşumu aşağıdaki şekilde gösterilmiştir.
Yekran
Şekil 4.3 Noktanın perspektif projeksiyonu
Daha önce gösterildiği gibi bir üç boyutlu noktanın kamera koordinatları önceki bölümde tanımlanan matrisler kullanılarak bulunabilir. Noktanın kamera koordinat değerleri hesaplandıktan sonra noktanın PXZ, PYZ iki boyutlu ekran koordinatları bulunabilir. Uzaktaki nesneleri küçük görünüşlü yakın nesneleri geniş görünüşlü yapmak ve istenen görüntüyü elde etmek için XEYE ve YEYE değerleri ZEYE ile bölünür.
Böylece :
XSCN =
YSCN =
XSCN ve YSCN noktanın iki boyutlu ekran değerlerini gösterir. D perspektif mesafesi, S yarım ekran ölçüsüdür. Bu iki değerin birbirine oranı ölçeklendirme faktörü olarak yukarıdaki eşitliklerde kullanılmıştır. Bu oran perspektif ölçülerini değiştirmeden resmin ölçülerini değiştirir. (Leung,1989)
4.4 Görünmeyen Yüzeyin Kaldırılması
Poligon yüzeylerle ifade edilen katı modellerin görüntülenmesindeki problemlerden biri belirlenmiş kamera pozisyonundan görüntülenmeyecek gizli yüzeylerin kaldırılma gerekliliğidir. Görünmeyen yüzeylerin kaldırılması ile katı cisimlerin görüntülenmesi için birçok algoritma geliştirilmiştir.
İki farklı yaklaşım nesnelerin görünmeyen parçaları kaldırılabilir. Birinci grup algoritmalar “ görüntü uzayı “ algoritmalarıdır ve ekran uzayında çalışırlar. Kısaca görüntüyü oluşturan çerçevenin her pikseline onun yoğunluğu göz önünde bulundurularak karar verilir. Diğer bir deyişle bu pikselde birden fazla yüzey çalışması varsa hangi yüzeyin görüntüleneceğini bulmak için kullanılır. Z buffer algoritması bu yaklaşıma örnek olarak verilebilir. “ Nesne uzayı “ algoritmaları nesne uzayında bulunan nesnelerin görüntülenebilirliğine karar verir. Bu algoritmalar başlangıçta nesne uzayında kullanılır fakat son görüntü, görüntü uzayında yer alır. Katı cisimlerin görünmeyen yüzeylerini kaldırarak görüntülenmesini sağlayan birçok algoritma kullanılmaktadır. Animasyonda bir görüntü üç değişik formda görüntülenebilir.
• Kafes-görüntü formu ( Wire-frame form ) : Arka yüzeyler haricinde kalan bütün yüzeyler görüntülenebilir.
• Görünmeyen yüzeylerin kaldırıldığı form ( Hidden surfaces removed form ) : Görünmeyen çizgiler kaldırılır.
• Pürüzsüz şekillendirme formu ( Smoothly rendered form ) : Gölgelendirme ve diğer yüzey bilgilerinin bulunabildiği formdur.
Wire-frame resimleri seri hareketlerin hızlı incelenmesi için kullanışlıdır. Nesnenin görünmeyen parçalarını bulmayı içeren fazladan hesaplama olmadığı için görüntüleme çok hızlı olabilir. Görüntüleme süresi özel grafik yetenekleri bulunmayan sıradan çalışma merkezlerinin hızına yakındır.
Görünmeyen yüzeylerin kaldırıldığı görünüşler, görüntüye daha güzel bir bakış sağlayabilir. Animatör, animasyonu yapılmış nesnenin durumunu ekran dışına taşıp taşmadığını test edebilir.
En son görüntülenen form rendered-formdur. Animatörün yansımalar, gölgeler ve yazılarıyla nesnelerin görüntülenebildiği son formdur. Sonuç görüntüleri bu formda üretilir. Animatörün net bir görüntü için en azından nesnenin görünmeyen yüzeylerinin kaldırılmasına ihtiyaç vardır.
4.5 Sıralı Dizilerle Görünmeyen Yüzeylerin Kaldırılması
Dizilerin kullanılmasında dizilerle görüntü uzayının bir şekli çizilir. Bu şeklin çizilmesinde diziler x,y,z koordinatlarına göre sıralanır. Daha sonra bu sıralan dizi, görünen yüzeylerin hesaplanması zaten rotate işlemlerinde bulunmuştu, bulunan görünen yüzeylere göre ekrana çizilir. Belirtilen noktalara göre çizilen yüzeyin içi boyanır ve render işlemi tamamlanmış olur. Kısaca açıklanan bu render işlemi bir animasyonun en zor kısmını oluşturmaktadır. Animasyon daha sonra aynı işlemleri sayfa yapılarının tamamına uygular ve böylece art arda ekrana yansıyan bu modeller nesnenin ekranda hareket etmekte olduğunu hissini verir. Saniyede 14 ile 17 frame arasında görülen görüntü gerçek zamanlı hareket sağlar.
BÖLÜM 5
5. PROGRAM HAZIRLAMA
5.1 Giriş
Basit anlamda program yapılırken şu bölümlerden oluşur;
• Değişkenlerin tanımlanması
• Üç boyutlu dönüşümlerin procedür ve function’ları
• Renderle ilgili soring procedür’leri ve fonksiyonları
• Grafik procedür’leri
• Animasyon procedür veya fonksiyonları
• Ana program bloğu
5.2 Program ve Fonksiyon Guruplarının Açıklamaları
5.2.1 Değişkenlerim tanımlanması
Değişkenlerde sırası ile minimum bulunması gerekenler şunlardır
• Nesne sayısına göre node tanımlaması yapılmalıdır. Bu tanımlamalar yapılırken exe program yapısı nedeni ile mümkün olduğunca sabit değişken tanımlanmayıp programı şişirmemek için pointer kullanılmalıdır. Pointer kullanırken pointer en az bir bağ ve x, y, z değişkenleri içeren nokta tanımlamaları kullanılmalıdır.
• Her nesne için bir başlangıç içeren pointer kullanılmalıdır ki bu pointer sayesinde nesneye ait başlangıcın neresi olduğunu kolaylıkla bulabiliriz diğer türlü başlangıç pointer’i kullanılmak istenmezse her pointer’e başlangıcı gösteren ek bir bağ kullanılır. Fakat bu sıralı bağlı dizilere uymadığı için tercih edilmez.
• World koordinat sistemi tanımlanır. Bu tanımlanan koordinat sistemi x, y, z tanımlamalarını içermelidir.
• Kamera ve ışık noktalarını gösteren pointer veya sabit değişkenler tanımlanır. Bu tanımlarda kamera için yapılan tanımda x,y,z ve world koordinat sistemine göre yapılan açılar tanımlanır.
• Dönüşümler için gerekli olan temporary nesne pointer’leri tanımlanır. Bu pointer’ler yine nesne tipinde olmalıdır.
Bu tanımlar yapıldıktan sonra yine bu tanı