Grafik Grafik ve Animasyon ile İlgili Donanım Birimleri 11 GRAF İK ve AN İMASYON Alakoç 2. GRAF İK-AN İMASYON İLE İLG İL İ DONANIM B İR İMLER İ 2.1. Ekran Kartı Bilgisayarın görüntü özellikleri kullanılan ekran kartlarıyla sınırlıdır. Geçmi şten günümüze kadar çok de ği şik özellikte ekran kartları geli ştirilmi ştir. Ba şlangıçta ekrandaki piksellerin adreslenmesi için bir standart yoktu ve üreticilerle programcılar görüntü açısından sorun ya şıyorlardı. Ekran kartı üreticileri bir araya geldiler ve VESA (Video Electronics Standarts Association) adında video protokollerini standartlaştırdılar. Ekran kartları görüntü arayüzleri standartlarına göre a şa ğıda listelenmiştir. 2.1.1. Ekran Kartı Türleri MDA (Hercules) Ekran Kartı : Açılımı Monochrome Display Adapter dir. İlk IBM firması tarafından 1981 yılında üretilmi ştir. Gösterebilece ği yazı karakterlerinin boyutları önceden belirlenmi ştir. Grafik ve renk özelli ği yoktu ve sadece 80 kolona 25 satırlık bir ekranda düz metinleri görüntüleyebiliyordu. CGA Ekran Kartı : Açılımı Color Graphic Adapter (Renkli Grafik Adaptörü) dir. İlk grafik özellikli ekran kartıdır. 1980’li yıllarda üretilmi ştir. 320x240 çözünürlü ğündeki bir ekranda 16 renk üretilebiliyordu fakat aynı anda bunlardan sadece 4 tanesini kullanabiliyordu. 640x200`lük bir yüksek çözünürlük modunda sadece 2 renk gösterilebiliyordu. EGA Ekran Kartı : Açılımı Enhanced Graphics Adapter dir. 640x350 piksel çözünürlükte 64 renkten aynı anda 16 tanesi kullanılabiliyordu. VGA: 1987`de IBM tarafından üretilmi ştir ve VGA masaüstü için standart olmu ştur. VGA ile 262144 renklik bir paletten seçilen 256 renk aynı anda kullanılabiliyordu. 640x480`lik standart çözünürlükte aynı anda 16 renk gösterilebiliyordu. Ayrıca 64 renk gri tonlama ile siyah beyaz monitörlerde renk similasyonu yapabiliyordu. SVGA: Super VGA ilk kartlardan güncel kartlara kadar çok fazla kartı kapsayan geni ş bir standarttır. SVGA ile birlikte ekran kartları için aygıt sürücüsü kavramı ortaya çıkmı ş ve kartların yanında verilen sürücülerle kartların tüm özelliklerinin i şletim sistemi tarafından kullanılabilmesi sa ğlanmı ştır. Karta ve üreticiye ba ğlı olarak SVGA ile milyonlarca renk de ği şik çözünürlükleri desteklenmektedir. SVGA ile 800x600 çözünürlü ğe ula şılmı ş, SVGA'dan sonra IBM XGA ile 1024x768 çözünürlü ğe geçilmiş ve sonraki basamak olan 1280x1024`e de bir VESA standardı olan SXGA ile geçilmi ştir. En son olarak da UXGA ile de 1600x1200 çözünürlü ğe geçilmi ştir. BÖLÜM 2 12 GRAF İK ve AN İMASYON Alakoç Şekil 2.1.1.1. Ekran Kartı Çözünürlük Görüntüsü 2.1.2. Ekran Kartı Bile şenleri ve Özellikleri Şekil 2.1.2.1. En temel bile şenleriyle bir ekran kartı Ekran kartında bulunan çipset performansı, çözünürlü ğü, renk sayısını ve hız gibi özellikleri sa ğlar. Bellek ise do ğrudan ekran kartının sundu ğu renk sayısı ile ilgilidir. İlk VGA kartlar 16,32,64,128KB gibi belleklere sahipken, bugünkü kartlar 8,16,32,64,128MB olarak üretilmektedirler. Bir ekran kartında aranacak en önemli özellikler çözünürlü ğün ve belle ğin yüksek olmasıdır. Ekran kartlarının birer BIOS'ları vardır. Burada ekran kartının çalı şma parametreleri, temel sistem fontları kayıtlıdır. Ayrıca bu BIOS sistem açılırken ekran kartına ve onun belle ğine de küçük bir test yapar. 13 GRAF İK ve AN İMASYON Alakoç 2.2. 3D Ekran Kartları 3D üç boyutlu görüntü demektir. Bilgisayarda grafikleri olu şturup, ekrana yansıtmak ve bunu gerçek zamanlı olarak uygulayabilmek için büyük i şlemci gücüne sahip ekran kartlarına ihtiyaç vardır. Örne ğin bir bilgisayar oyununda saniyede 30 kare bellekten alınarak görüntülenecekse 3D kart belle ğin yükünü alarak görüntüleri sorunsuz i şleyecektir. 3B uygulamalar için kullanılan ekran kartları di ğerlerine göre daha pahalıdır. Bir 3B görüntüsü 3 temel adımda olu şturulur: 1. Sanal bir 3B ortam yaratılır 2. Ekranda bu ortamın hangi bölümünün gösterilece ğine karar verilir. 3. Görüntüyü mümkün oldu ğu kadar gerçe ğe yakın gösterebilmek için her pikselin nasıl görünece ği belirlenir. Sanal bir 3B ortamı sadece o ortamın bir resmini belirleyemez. Bir masanın üzerinde duran bir eli 3B ortamında tasarlayalım. Masanın sert oldu ğu el ile dokunuldu ğunda anla şılabilir. El ile masaya vuruldu ğunda da kırılmaz veya el masanın içinden geçemez. Bu ortamın ne kadar çok resmine bakılırsa bakılsın masanın sertli ği ve ele verece ği tepki sadece o resimlerle anla şılmaz. Sanal 3B ortamlar da böyledir. Bu ortamlardaki nesneler sentetiktir, bütün özellikleri onlara yazılım yoluyla verilir. Programcılar sanal bir 3B dünya tasarlarken büyük bir özenle bütün bu detaylara dikkat ederler ve bu i şler için özel araçlar kullanırlar. Belirli bir zamanda olu şturulan 3B görüntünün ancak belirli bir bölümü ekranda gösterilir. Ekrandaki görüntü nesnenin nasıl tanımlandı ğına, sizin nereye gitmek istedi ğinize ve nereye baktı ğınıza göre de ği şir. Hangi yöne hareket ederseniz edin etrafınızdaki sanal dünya o an bulundu ğunuz pozisyonu ve nereye baktı ğınızı de ğerlendirerek ekranda ne görmeniz gerekti ğine karar verir. Bu farklı sahneler de kendi içlerinde tutarlı olmalıdırlar. Örne ğin bir nesne ona baktı ğınız her açıdan ve uzaklıktan aynı yükseklikteymi ş hissi vermelidir. 3. adıma geçmeden önce sabit bir görüntünün nasıl olu şturuldu ğuna bakıp sonra da bir 3B görüntünün nasıl hareket kazandı ğına bakaca ğız. 2.2.1. 3D Şekiller 3B nesneler ilk ba şta wireframe denen bir yapı ile olu şturulurlar. Şeklin iskeleti de diyebilece ğimiz bu tel örgü en basit haliyle nesnenin şeklini belirler. Wireframe denen bu yapı için bir yüzey tanımlanması şarttır. 14 GRAF İK ve AN İMASYON Alakoç Bu el modeli 862 poligondan olu şuyor. Aynı model 3444 poligonla gerçe ğe çok daha yakın görüntü. Şekil 2.2.1.1. Çe şitli poligonlardan olu şan 3D şekiller 2.2.2. Yüzey Kaplamaları Sanal bir 3B ortamda nesneleri elleme şansımız olmadı ğından onların hakkında sadece onlara bakarak fikir edinebiliriz. Bu yüzden sanal 3B ortamlarda nesnelerin dı ş görünü şleri çok önemlidir. Dı ş görünü şü şunlar belirler: • Renk: Nesnenin rengi. • Kaplama: Tel örgünün üzerine yapılan kaplamayla nesnenin yüzeyi düz, çizgili veya girintili çıkıntılı görünebilir. • Yansıma: Nesneye etkiyen ı şı ğa ve etrafındaki di ğer nesnelere göre cismin üzerinde yansımalar olu şturulur. Bir nesneyi gerçek gibi göstermek için bu üç özellik de dengeli bir biçimde nesnenin de ği şik yüzeylerine uygulanmalıdır. Örne ğin bir 3B ortamda bir klavyeyle bir masa ı şı ğı aynı oranda yansıtmaz. Bu üç parametreyi de ği ştirerek nesnelere sert veya yumu şak hissi verilebilir. Tel örgü, kaplanınca gerçek bir ele benzedi. Şekil 2.2.2.1. Yüzey kaplanmı ş 3D görüntü 15 GRAF İK ve AN İMASYON Alakoç 2.2.3. Lighting (I şıklandırma) Karanlık bir odaya girdi ğimizde ı şı ğı açarız ve ı şık kayna ğından her yöne do ğru yayılan ı şık sayesinde odadaki bütün nesnelerin görüntüsü de ği şir. Bu ı şı ğın odaya nasıl yayıldı ğını dü şünmeyiz ama 3B grafiklerle u ğra şanlar bunu dü şünmek zorundalar. Tel örgüleri kaplayan kaplamalar (texturelar) bir yerden aydınlatılmalıdırlar. Ray tracing denilen bir yöntemle ı şık ı şınlarının alaca ğı yol çizilir ve bu ı şınlar çarptıkları nesnelerden farklı yo ğunluk ve açılarla yansır. Çoklu ı şık kaynaklarını dü şündü ğünüzde bu hesaplamar oldukça karı şık bir hal alabilir. I şıklandırma cisme a ğırlık ve katılık etkisi veririken en çok kullanılan iki efektte önemli rol oynar: Shading ve gölgeler. Shading, bir nesne üzerindeki parlayan ı şı ğın bir tarafında di ğer tarafından daha güçlü olmasıdır. Ancak shading sayesinde bir top yuvarlak veya buruşmu ş bir battaniye yumu şak görünebilir. Parlaklıktaki bu fark nesnelere derinlik, uzunluk ve geni şlik kazandırır. I şıklandırma, nesneye sadece derinlik katmakla kalmayıp onu üzerinde bulundu ğu yüzeye de ba ğlıyor. Şekil 2.2.3.1. I şıklandırılmı ş 3D görüntü Katı nesneler üzerlerinden ı şık parladı ğında gölgeler yaratırlar. Gözlerimiz gerçek nesneleri görmeye alı şık oldu ğundan ekranda gölge gördü ğümüz zaman matematiksel olarak üretilmi ş şekillere de ğil de bir pencereden gerçek bir dünyaya bakıyormu ş gibi hissederiz. 2.2.4. Perspektif Perspektif kula ğa biraz teknik gelebilir ama günlük ya şamımızda çok sık gördü ğümüz bir etkidir. Bir yolun kenarında durup ufuk çizgisine do ğru baktı ğınızda yolun iki kenarı da birle şiyormu ş gibi görünür. Yol kenarında a ğaçlar varsa da bu a ğaçlar birle şme noktasına yakla ştıkça da daha küçük görünür. Nesnelerin bir noktada birle şiyormu ş gibi görünmesini sa ğlayan bu efekt perspektiftir. De ği şik çe şitleri vardır fakat 3B çizimlerde genelde tek noktalı perspektif kullanılır. 16 GRAF İK ve AN İMASYON Alakoç Şekil 2.2.4.1. Perspektif uygulanmı ş 3D görüntü Şekildeki eller ayrı duruyor fakat ço ğu sahnede nesneler birbirlerinin önünde dururlar ve birbirlerini kısmen kapatırlar. Bu durumda bunların büyüklüklerinin hesaplanması dı şında hangisinin önde oldu ğu da bilinmelidir. Bunun için Z Buffering denilen teknik kullanılır. Z buffera her poligon için bir sayı atanır ve bu sayı o poligona sahip nesnenin sahnenin ön tarafına yakınlı ğını belirler. Öne ğin 16 bitlik bir Z bufferekrana en yakın poligon için -32768 ve en uzak poligon için de 32767 de ğerlerini atar. Gerçekte bir nesnenin arkasındaki di ğer nesneleri göremedi ğimiz için ne görüyor olmamız gerekti ğini dü şünmeyiz. Sanal 3B ortamlarda da bu sıkça olur ve çok düz bi mantıkla çözülür. Nesneler yaratıldıkça x ve y ekseninde aynı de ğere sahip olanlarının Z bufferdaki de ğerleri kar şıla ştırılır ve en dü şük Z de ğerine sahip nesne tamamen görüntülenir. Daha yüksek Z de ğerindekilerinse tamamı görüntülenen nesneyle kesi şen bölgeleri görüntülenmez. Nesneler tamamen olu şturulmadan önce Z de ğerleri belirlendi ği için görünmeyecek bölgeler tamamen hesaplanmaz ve bu da performansı arttırır. 2.2.5. Derinlik (Depth of Field) Yol ve a ğaçlar örne ğimizi hatırlayalım ve o örnekte olu şabilecek ba şka bir ilginç olayı dü şünelim. Yakınınızdaki bir a ğaca bakarsanız uzaktaki a ğaçların netliklerini kaybettiklerini görürsünüz. Filmlerde ve bilgisayar ortamında sık kullanılan bu efekt iki amaca hizmet eder. İlki sahnedeki derinlik hissini güçlendirmektir. İkincisi ise dikkatinizi bir nesneye çekmektir. 17 GRAF İK ve AN İMASYON Alakoç Şekil 2.2.5.1. Derinlik uygulanmı ş 3D görüntü 2.2.6. Anti-Aliasing Bu teknik de gözü aldatarak görüntünün do ğal görünmesini amaçlar. Dijital görüntü sistemleri a şa ğıya ve yukarıya do ğru düz çizgiler çizmekte son derece ba şarılıdırlar fakat i ş e ğrilere ve çapraz çizgileri çizmeye gelince basamak efekti olu şur ve çizgilerin kenarları yumu şak de ğil de daha çok bir merdiven gibi gözükür. İşte bu nokada devreye anti-aliasing girer ve çizginin kenarlarındaki piksellere onlara yakın gir tonlardaki renklerle shading uygulayarak kenarları biraz bulanıkla ştırır. Bu sayede basamak efekti ortadan kaybolmu ş gibi gözükür. Anti-aliasing de do ğru pikselleri için do ğru renkleri seçmek de ba şka bir karma şık i şlemdir ve sisteme oldukça yük bindirir. Sadece düz çizgilerdeki pikseller kullanıldı ğında basamak efekti olu şur. 18 GRAF İK ve AN İMASYON Alakoç Kenarlardaki piksellerin etrafındakiler de kullanılarak basamak efekti azaltılır. Şekil 2.2.6.1. Anti-Aliasing uygulanmı ş 3D görüntü 2.2.7. Görüntüleri Hareketlendirme Dura ğan 3B sahnelerini yarattıktan sonra bunları hareketlendirelim. Şu ana kadar anlattı ğımız i şlemlerin hiçbiri donanımı yaratılan bu dura ğan görüntülere hareket kazandırmaktan daha fazla zorlayamaz. Üçgenlerden ve poligonlardan olu şan tel örgülerimizi hareket ettirmek için ekrandaki her piksel saniyede belirli sayıda hesaplaması yapılmalıdır. Yüksek çözünürlük denince akla en az 1024x768 gelir. Bu çözünürlükte 786.432 adet piksel kullanılır, her piksel için 32 bit renk kullanıldı ğında 25.165.824 bit sadece dura ğan görüntü için gereklidir. Görüntünün 60 FPS hızda çalı şması için her saniye 1.509.949.440 bit veri aktarılmalıdır ve bu sadece görüntüyü ekrana yansıtmak için yeterlidir. Bunun yanında bilgisayar görüntü içeri ğini, renkleri, şekilleri, ı şıkları ve di ğer efektleri de hesaplamak zorundadır. Bütün bunlar görüntü i şlemcilerinin çok hızlı geli şmesine sebep oluyor çünkü CPU`nun alabilece ği her türlü yardıma ihtiyacı var. 2.2.8. Transform (Dönü şüm) İşlemleri Dura ğan görüntüler dönü şüm denen matematiksel bir i şlem sonucunda hareket kazanırlar. Bakı ş açımızı her de ği ştirdi ğimizde bir dönü şüm olur. Bir arabanın bize yakla ştıkça daha büyük görünmesi gibi, büyüklü ğün her de ği şiminde bir dönüşüm olur. Bir 3B oyunun her karesinde kullanılan dönü şüm i şlemine matematiksel olarak şu şekildedir: Dönü şümde ilk etapta sanal dünyamızı tanımlayan önemli de ği şkenler kullanılır: • X = 758 – baktı ğımız sanal dünyanın yüksekliği • Y = 1024 – bu sanal dünyanın geni şli ği • Z = 2 – bu da sanal dünyamızın derinli ği • Sx - sanal dünyaya baktı ğımız pencerenin yüksekli ği • Sy – pencerenin geni şli ği • Sz = hangi nesnelerin di ğerlerinin önünde göründü ğünü belirten derinlik de ği şkeni • D = .75 – gözümüzle sanal dünyamıza açılan pencere arasındaki uzaklık 19 GRAF İK ve AN İMASYON Alakoç Not : Transform i şlemleri ve a şa ğıda anlatılan formüller sadece bilgi amacıyla verilmi ş olup sınavda bu konu ile ilgili soru sorulmayacaktır. Öncelikle sanal 3B dünyamıza açılan pencerelerimizin genişli ği hesaplanır: Daha sonra perspektif dönü şümü yapılır, bu a şamada yeni de ği şkenler de i şin içine girer: Sonunda (X, Y, Z, 1.0) noktası a şa ğıdaki i şlemciler sonucunda (X', Y', Z', W') noktasına dönü şür: Görüntü ekrana yansıtılmadan önce son bir dönü şüm daha yapılmalıdır, bu kadarı bile bu i şlemin karma şıklı ğı hakkında size fikir vermi ştir. Üstelik bütün bu i şlemler tek bir vektör, yani basit bir çizgi için. Aynı i şlemlerin görüntüyü olu şturan bütün nesnelere saniyede 60 kere uygulandı ğını dü şünün...