Bilgisayar Grafiğine Giriş – 1 • "Bilgisayar grafikleri" terimi, animasyonlu görüntüler de dahil olmak üzere bilgisayarda görüntülerin oluşturulmasına veya değiştirilmesine dahil olan her şeyi ifade eder. • Çok geniş bir alandır ve değişikliklerin ve ilerlemelerin baş döndürücü bir hızda olduğu görülmektedir. • Yeni başlayanlar için nereden başlayacağını bilmek zor olabilir. Bununla birlikte, bilgisayar grafiklerinin çoğu uygulamasının temelinin bir parçası olan temel fikirlerin bir çekirdeği vardır. • Bu ders, bu temel fikirleri veya en azından bir dönemlik üniversite düzeyinde bir derse uyacak kadar çok sayıda kapsama girmeye çalışmaktadır. Tüm sahayı ilk kursta (hatta büyük bir bölümünü) kapsamak mümkün olmasa da, burası başlamak için iyi bir yer olmalıdır. • 1. Ünite, dersin geri kalanında ele alınacak malzemeye çok fazla ayrıntıya girmeden genel bir bakış ve tanıtım sağlar. Ünite 1'in İçeriği: Bölüm 1: Boyama ve Çizim Bölüm 2: 3B Grafik Elemanları Bölüm 3: Donanım ve Yazılım Bölüm 1.1:Boyama ve çizim Bu kitabın ana odağı, çalışmanın çoğunun bir sahnenin 3D modelini üretmeye başladığı üç boyutlu (3D) grafiklerdir. Ama sonuçta, neredeyse tüm durumlarda, bir bilgisayar grafik projesinin sonucu iki boyutlu bir görüntüdür. Ve elbette, 2D görüntülerin doğrudan üretimi ve manipülasyonu kendi başına önemli bir konudur. Dahası, birçok fikir iki boyuttan üçe taşır. Bu nedenle, 2D grafiklerle başlamak mantıklı. Bilgisayar ekranında sunulan görüntü piksellerden oluşur . Ekran, satırlar ve sütunlar halinde düzenlenmiş dikdörtgen bir piksel ızgarasından oluşur. Pikseller ayrı ayrı görülemeyecek kadar küçük. Aslında, birçok çok yüksek çözünürlüklü ekran için, aslında görünmez olurlar. Belirli bir zamanda, her piksel yalnızca bir renk gösterebilir. Günümüzde çoğu ekran 24 bit renk kullanır, burada renk üç 8 bit sayı ile belirtilebilir ve renkte kırmızı, yeşil ve mavi seviyeleri verir. Ekranda gösterilebilecek herhangi bir renk, bu üç "birincil" rengin bir kombinasyonundan oluşur. Gri tonlama gibi başka formatlar da mümkündürburada her piksel bir miktar gri gölgedir ve piksel rengi siyah-beyaz ölçeğinde gri düzeyini belirten bir sayı ile verilir. Tipik olarak 256 gri tonu kullanılır. İlk bilgisayar ekranlarında , genellikle 16 veya 256 olmak üzere yalnızca küçük bir renk kümesinin görüntülenebileceği dizinli renk kullanılmıştır . İndekslenmiş renkli ekran için, olası renklerin numaralı bir listesi vardır ve bir pikselin rengi, listedeki rengin konumunu veren bir tamsayı ile belirtilir. Her durumda, ekrandaki tüm piksellerin renk değerleri, çerçeve arabelleği olarak bilinen büyük bir bellek bloğunda saklanır . Ekrandaki görüntünün değiştirilmesi, çerçeve arabelleğinde saklanan renk değerlerinin değiştirilmesini gerektirir. Ekran saniyede birçok kez yeniden çizilir, böylece çerçeve arabelleğindeki renk değerleri değiştikten hemen sonra, ekrandaki piksellerin renkleri eşleşecek ve görüntülenen görüntü değişecektir. Bu şekilde kullanılan bir bilgisayar ekranı raster grafiklerin temel modelidir . "Raster" terimi teknik olarak eski vakum tüplü bilgisayar monitörlerinde kullanılan mekanizmayı ifade eder: Bir elektron ışını, piksel sıraları boyunca hareket ederek onları parlatır. Işın elektronların yolunu saptıracak güçlü mıknatıslarla ekran boyunca hareket ettirildi. Işın ne kadar güçlü olursa, pikselin parıltısı o kadar parlak olur, böylece piksellerin parlaklığı elektron ışınının yoğunluğu değiştirilerek kontrol edilebilir. Çerçeve tamponunda saklanan renk değerleri, elektron ışınının yoğunluğunu belirlemek için kullanıldı. (Renkli bir ekran için her pikselde, ışın tarafından ayrı olarak aydınlatılan kırmızı bir nokta, yeşil bir nokta ve mavi bir nokta vardı.) Modern düz ekran bilgisayar monitörü aynı anlamda bir raster değildir. Hareketli elektron ışını yoktur. Piksellerin renklerini kontrol eden mekanizma, farklı ekran türleri için farklıdır. Ancak ekran yine de piksellerden oluşur ve tüm piksellerin renk değerleri hala bir çerçeve arabelleğinde saklanır. Her piksel için sayısal renk değerlerine sahip bir piksel ızgarasından oluşan bir görüntü fikri raster grafiklerini tanımlar. Bilgisayar ekranındaki görüntüler piksel kullanılarak temsil edilse de, tek tek piksel renklerini belirtmek her zaman görüntü oluşturmanın en iyi yolu değildir. Başka bir yol, içerdiği temel geometrik nesneleri, çizgiler, daireler, üçgenler ve dikdörtgenler gibi şekilleri belirtmektir. Vektör grafikleri tanımlayan fikir budur : Görüntüyü, içerdiği geometrik şekillerin bir listesi olarak temsil eder. İşleri daha ilginç hale getirmek için şekillerin nitelikleri olabilirörneğin bir çizginin kalınlığı veya bir dikdörtgeni dolduran renk gibi. Elbette, her görüntü basit geometrik şekillerden oluşamaz. Bu yaklaşım kesinlikle güzel bir gün batımının resmi için (veya diğer birçok fotoğraf görüntüsü için) işe yaramaz. Bununla birlikte, mimari planlar ve bilimsel çizimler gibi birçok görüntü türü için iyi çalışır. Aslında, bilgisayar tarihinin başlarında, vektör grafikleri doğrudan bilgisayar ekranlarında bile kullanıldı. İlk grafik bilgisayar ekranları geliştirildiğinde, tarama ekranları pratik olamayacak kadar yavaş ve pahalıdır. Neyse ki, vakum tüpü teknolojisini başka bir şekilde kullanmak mümkün oldu: Elektron ışını, doğrudan bu ışını o çizgi boyunca süpürerek doğrudan bir çizgi çizmek için yapılabilir. Bir vektör grafik ekranı bir görüntüleme listesini saklarEkranda görünmesi gereken satırlar. Ekrandaki bir nokta, elektron ışını tarafından aydınlatıldıktan çok kısa bir süre sonra parlayacağından, grafik ekran, listedeki tüm satırları sürekli olarak yeniden çizerek ekran listesinden tekrar tekrar geçecektir. Görüntüyü değiştirmek için yalnızca görüntüleme listesinin içeriğini değiştirmek gerekir. Tabii ki, görüntüleme listesi çok uzun hale gelirse, görüntü titremeye başlar çünkü bir çizgi bir sonraki dönüşünün yeniden çizilmesinden önce gözle görülür bir şekilde solma şansına sahip olacaktır. Ancak asıl nokta: Makul bir sayıdaki geometrik şekil olarak belirtilebilen bir görüntü için, görüntüyü temsil etmek için gereken bilgi miktarı, bir vektör temsili kullanılarak bir raster temsili kullanmaktan çok daha azdır. Bin satır segmentinden oluşan bir görüntü düşünün. Görüntünün vektör temsili için, sadece iki bin noktanın koordinatlarını, çizgilerin uç noktalarını depolamanız gerekir. Bu sadece birkaç kilobayt bellek gerektirir. Bir raster görüntü için görüntüyü bir çerçeve arabelleğinde saklamak çok daha fazla bellek gerektirir. Benzer şekilde, bir vektör görüntüsü, ekrandaki çizgileri, bir raster görüntüsünün aynı görüntüyü çerçeve arabelleğinden ekrana kopyalayabileceğinden daha hızlı çizebilir. (Raster görüntüler hızlı ve ucuz hale gelir gelmez, Raster grafikler ve vektör grafikleri arasındaki ayrım, bilgisayar grafiklerinin çeşitli alanlarında devam eder. Örneğin, resim oluşturmak için kullanılabilecek iki program kategorisi arasındaki bir bölümde görülebilir: boyama programları ve çizim programları. Bir boyama programında, görüntü bir piksel ızgarası olarak temsil edilir ve kullanıcı piksellere renkler atayarak bir görüntü oluşturur. Bu, ressamın fırçası gibi davranan bir "çizim aracı" veya hatta çizgiler veya dikdörtgenler gibi geometrik şekiller çizen araçlar kullanılarak yapılabilir. Ancak, bir boyama programındaki nokta, tek tek pikselleri renklendirmektir ve yalnızca kaydedilen piksel renkleridir. Bunu daha açık hale getirmek için, bir ev çizmek için bir boyama programı kullandığınızı, ardından evin önüne bir ağaç çizdiğinizi varsayalım. Daha sonra ağacı silerseniz, bir evi değil, yalnızca boş bir arka plan ortaya çıkarırsınız. Aslında, görüntü hiçbir zaman gerçekten bir "ev" içermiyordu - yalnızca izleyicinin bir evin resmini oluştururken algılayabileceği tek tek renkli pikseller. Bir çizim programında, kullanıcı geometrik şekiller ekleyerek bir görüntü oluşturur ve görüntü bu şekillerin bir listesi olarak gösterilir. Görüntüye bir ev şekli (veya bir evi oluşturan şekiller koleksiyonu) yerleştirirseniz ve ardından evin üzerine bir ağaç şekli yerleştirirseniz, ev hala oradadır, çünkü görüntü içerir. Ağacı silerseniz, ev, tıpkı ağacı eklemeden önceki gibi hala görüntüde olacaktır. Ayrıca, resimdeki şekillerden birini seçip taşıyabilmeli veya boyutunu değiştirebilmelisiniz, böylece çizim programları boyama programlarında mümkün olmayan zengin bir düzenleme işlemleri seti sunar. (Ancak bunun tersi de doğrudur.) Görüntü oluşturma ve düzenleme için pratik bir program, resim veya çizim öğelerini birleştirebilir, ancak biri veya diğeri genellikle baskındır. Örneğin, bir çizim programı kullanıcının raster türü bir görüntü eklemesine izin verebilir ve bu görüntüyü tek bir şekil olarak ele alabilir. Bir boyama programı, kullanıcının son görüntüyü oluşturmak için üst üste yerleştirilebilen ayrı görüntüler olan "katmanlar" oluşturmasına izin verebilir. Katmanlar daha sonra bir çizim programındaki şekiller gibi manipüle edilebilir (böylece evin görüntüsünde ağacın arkasında olsa bile, hem evinizi hem de ağacınızı ayrı katmanlarda tutabilirsiniz). İyi bilinen iki grafik programı Adobe Photoshop ve Adobe Illustrator'dur . Photoshop boyama programları kategorisindeyken, Illustrator daha çok bir çizim programıdır. Özgür yazılım dünyasında, GNU görüntü işleme programı Gimp , Photoshop'a iyi bir alternatifken , Inkscape oldukça yetenekli bir serbest çizim programıdır. Gimp ve Inkscape ile ilgili kısa tanıtımlar Ek C'de bulunabilir . Raster ve vektör grafikleri arasındaki ayrım, grafik dosyası formatları alanında da görünür. Görüntüyü bir dosyada depolanan veriler olarak göstermenin birçok yolu vardır. Orijinal görüntü, dosyada saklanan bitlerden kurtarılacaksa, gösterimin bilinen bazı spesifikasyonlara uyması gerekir. Böyle bir spesifikasyona grafik dosyası formatı denir. Bazı popüler grafik dosya biçimleri GIF, PNG, JPEG ve SVG'dir. Web'de kullanılan görüntülerin çoğu GIF, PNG veya JPEG'dir. Modern web tarayıcılarının SVG görüntüleri için de desteği vardır. GIF, PNG ve JPEG temel olarak raster grafik formatlarıdır; bir görüntü, her piksel için bir renk değeri saklanarak belirtilir. GIF, büyük ölçüde PNG'nin yerini alan daha eski bir dosya biçimidir, ancak yine de GIF görüntülerini web'de bulabilirsiniz. (GIF formatı animasyonlu görüntüleri destekler, bu nedenle GIF'ler genellikle Web sayfalarındaki basit animasyonlar için kullanılır.) GIF, maksimum 256 renk içeren dizine alınmış bir renk modeli kullanır. PNG, dizinlenmiş veya tam 24 bit renk kullanabilirken, JPEG tam renkli görüntüler içindir. Raster görüntüyü temsil etmek için gerekli veri miktarı oldukça büyük olabilir. Ancak, veriler genellikle çok fazla yedeklilik içerir ve veriler boyutunu azaltmak için "sıkıştırılabilir". GIF ve PNG kayıpsız veri sıkıştırması kullanır , bu da orijinal görüntünün sıkıştırılmış verilerden mükemmel şekilde kurtarılabileceği anlamına gelir. JPEG kayıplı bir veri sıkıştırması kullanıralgoritma; bu, bir JPEG dosyasından kurtarılan görüntünün orijinal görüntüyle tam olarak aynı olmadığı anlamına gelir; bazı bilgiler kayboldu. Bu iyi bir fikir gibi gelmeyebilir, ancak aslında fark genellikle çok fark edilmez ve kayıplı sıkıştırma kullanmak genellikle sıkıştırılmış verilerin boyutunda daha büyük bir azalmaya izin verir. JPEG genellikle fotoğrafik görüntüler için iyi çalışır, ancak farklı renkler arasında keskin kenarları olan görüntüler için de iyi değildir. Özellikle metin içeren çizgi çizimleri ve resimler için kötüdür; PNG, bu tür görüntüler için tercih edilen biçimdir. Öte yandan SVG, temelde bir vektör grafik formatıdır (SVG görüntüleri raster görüntüler içerebilir). SVG aslında iki boyutlu vektör grafik görüntülerini tanımlamak için XML tabanlı bir dildir. "SVG", "Ölçeklenebilir Vektör Grafikleri" anlamına gelir ve "ölçeklenebilir" terimi, vektör grafiklerinin avantajlarından birini belirtir: Görüntünün boyutu artırıldığında kalite kaybı olmaz. İki nokta arasındaki bir çizgi herhangi bir ölçekte temsil edilebilir ve hala aynı mükemmel geometrik çizgidir. Raster görüntünün boyutunu büyük ölçüde artırmaya çalışırsanız, diğer yandan, yeni görüntüdeki tüm pikseller için yeterli renk değerine sahip olmadığınızı göreceksiniz; orijinal görüntüdeki her piksel, ölçeklendirilmiş görüntüdeki piksellerden oluşan bir dikdörtgeni kapsayacak şekilde genişletilir, ve aynı renkte çok pikselli bloklar elde edersiniz. SVG görüntülerinin ölçeklenebilir yapısı, onları web tarayıcıları ve bilgisayarınızın masaüstündeki grafik öğeleri için iyi bir seçim haline getirir. Ve aslında, bazı masaüstü ortamları artık masaüstü simgeleri için SVG görüntüleri kullanıyor. Dijital görüntü, biçimi ne olursa olsun, bir koordinat sistemi kullanılarak belirtilir . Bir koordinat sistemi, sayılar ve geometrik noktalar arasında bir yazışma oluşturur. İki boyutta, her noktaya noktanın koordinatları olarak adlandırılan bir çift sayı atanır. Bir noktanın iki koordinatına genellikle x- koordinatı ve y- koordinatı denir , ancak "x" ve "y" adları isteğe bağlıdır. Raster görüntü, satırlar ve sütunlar halinde düzenlenmiş iki boyutlu bir piksel ızgarasıdır. Bu nedenle, her pikselin, satırın sayısını ve pikseli içeren sütunun numarasını veren bir çift tamsayıya karşılık geldiği doğal bir koordinat sistemine sahiptir. (Bu basit durumda bile, satırların yukarıdan aşağıya mı yoksa aşağıdan yukarıya mı numaralandırılması gerektiği konusunda bazı anlaşmazlıklar vardır.) Bir vektör görüntüsü için gerçek sayı koordinatları kullanmak doğaldır. Bir görüntünün koordinat sistemi bir dereceye kadar isteğe bağlıdır; yani, aynı görüntü farklı koordinat sistemleri kullanılarak belirtilebilir. Burada koordinat sistemleri hakkında çok fazla şey söylemek istemiyorum, ancak bunlar kitabın büyük bir kısmının ana odağı olacak ve üç boyutlu grafiklerde iki boyuttan daha önemli.