Üç Boyutlu Görüntüleme Dr. Aybars UĞUR 2006
Üç Boyutlu Görüntüleme Üç boyutlu bir sahnenin bilgisayarda görüntülenmesi için izlenen adımlar, fotoğraf çekme sırasındaki işlemlere benzer : Nesne ölçeklendirme ve döndürme Nesnenin yerini değiştirme Bakış noktasının orijine taşınması Bakış yönünün z eksenine alınması İzdüşüm alınması Görünen Yüzeylerin Belirlenmesi Gerçek koordinatlardan araç koordinatlarına dönüşüm Nesnelerin ekranda görüntülenmesi
Screen/Window coordinates 3D Graphics Pipeline WORLD SCENE/OBJECT Modelling coordinates: - world coordinate system, - object coordinate system 3D MODELLING VIEWING 3D CLIPPING Camera coordinates PROJECTION Screen/Window coordinates RASTERIZATION Device coordinates 2D PIXELMAP DISPLAY
Nesne Modelleme B-Representation Sweep Representation CSG Blobby Objects Octree Representation Voxels Parametric Surface (x=sin4θ, y=cos2θ) Implicit Surface …
Modelleme Dönüşümleri Taşıma, Ölçeklendirme, Döndürme, … Kamera Dönüşümleri ve 3D Kırpma (Clipping) Kameranın görüntüleme alanı dışındaki nesneler kırpılır.
İzdüşüm (Projection) Uzayda boyut azaltma işlemidir. (Bilgisayar grafiklerinde 3D->2D). İki ana bölümde incelenir : Paralel İzdüşüm Perspektif İzdüşüm
İzdüşüm çeşitleri Paralel İzdüşüm : Görüntü düzlemindeki koordinat noktaları, görüntü düzlemine paralel doğrular çizilerek belirlenir. p2 p2’ p1’ p1 Görüntü Düzlemi Perspektif İzdüşüm : Doğrular, izdüşüm merkezi (bakış noktası) adı verilen noktaya yakınsar. p2 p2’ p1’ Bakış Noktası p1 Görüntü Düzlemi
Paralel İzdüşümler Orthographic Parallel Projection İzdüşüm, görüntü düzlemine dik alınır. Oblique Parallel Projection İzdüşüm, görüntü düzlemine dik değildir.
Paralel İzdüşüm : Örnek y Genelde z=a (xy düzlemi veya paralelleri) üzerine alınır. P1(10,10,10) P2(20,20,20) P1’(10,10) P2’(20,20) p2 p2’ x p1’ p1 z Görüntü Düzlemi
Perspektif İzdüşümler Consider a perspective projection with the viewpoint at the origin and a viewing direction oriented along the positive -z axis and the view-plane located at z = -d a similar construction for xp d y yp -z divide by homogenous ordinate to map back to 3D space
Windows and Viewports (wxmax,wymax) (vxmax,vymax) (vx,vy) (wx,wy) (vxmin,vymin) (wxmin,wymin)
Window to Viewport Mapping Yatay oranların korunumu : wx - wxmin vx - vxmin wxmax - wxmin vxmax - vxmin = So, solving for vx: vx = (wx - wx min) * vxmax - vxmin + vxmin wxmax - wxmin vy can be solved for similarly.
Say we want to map this to a 640x480 viewport 0.4 0.3 -0.4 -0.2 Say we want to map this to a 640x480 viewport 480 640
Wx=-.2 Vxmax=640 Wy=.3 Vxmin=-0 Wxmax=0 Vymax=0 Wxmin=-0.4 Vymin=480 Wymax=0.4 Wymin=0 Vx= (-.2-(-0.4))*(640-0) + 0 = 320 0-(-0.4) Vy= (.3-0)*(0-480) + 480 = 120 Vxmax=640 Vxmin=-0 Vymax=0 Vymin=480 320 120
Rasterization: Her pikselin rengi ne? Rasterization: Geometrik şekillerden, piksel değerlerinin elde edilmesi adımlarının tümü: Hidden Surface Removal, Projection, Window to Viewport Transformation, Shading, Polygon Filling… Rasterization: Her pikselin rengi ne?
Transformations and OpenGL® Vertex Geometry Pipeline MODELVIEW matrix PROJECTION matrix perspective division viewport transformation original vertex final window coordinates normalized device coordinates (foreshortened) 2d projection of vertex onto viewing plane vertex in the eye coordinate space
Görünen Yüzeylerin Belirlenmesi Görünen Yüzeylerin Belirlenmesi (Visible-Surface Detection Methods) veya Görünmeyen Yüzeylerin Elenmesi. Görünen yüzeyleri belirlemek için 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. 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. Algoritmaların çoğu görüntü uzayı yöntemlerini kullanır.
1) Arka Yüzeylerin Belirlenmesi Yüzey Normalinin z bileşeni negatif olan arka yüzeydir. Yüzey Denklemi : Ax + By + Cz + D = 0 Yüzey Normali : N = (A,B,C) C<=0 , Arka yüzeydir. N = (0,0,1) y y x x z
2) Derinlik Arabelleği Yöntemi Depth-Buffer Method En çok kullanılan yöntemlerdendir. Bir Image-Space yöntemidir. Çokgen yüzeyindeki her (x,y,z) konumu, nesne tanımlamalarından izdüşüm koordinatlarına çevrildiğinde, görüntü düzleminde (x,y) olur. S1, görüntü düzlemine en yakın nokta olduğu için, o yüzeyin (ilgili bölümünün) rengi ve yoğunluk değerleri kaydedilir. x,y noktasında yüzey derinliği, formülü ile hesaplanır. y (x,y) x z
2) Depth-Buffer Method The Z-buffer Algorithm x y z2 z1 B A initialize all depth(x,y) to 0 and refresh(x,y) to background for each pixel compare evaluated depth value z to current depth(x,y) if z > depth(x,y) then depth(x,y)=z refresh(x,y) = Isurface(x,y)
Diğer Bazı Yöntemler A-Buffer Method : Depth-Buffer geliştirilerek oluşturulmuştur. Lucasfilm tarafından geliştirilmiştir. Geçirgen yüzeylere uygulanabilmektedir. Scan-Line (Tarama Hattı) Method : Bkz. Ders kitabı. Depth-Sorting (Derinlik Sıralaması) Method : 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 çizdirilir. BSP-tree (binary space-partitioning) Method : Bkz. Ders kitabı. Area-Subdivision (Alan Bölümleme) Method : Bkz. Ders kitabı. Octree (8’li Ağaç) Methods : Bkz. Ders kitabı. Ray-Casting (Işın gönderme) Method : Bkz. Ders kitabı.
Aydınlatma Modelleri ve Yüzey Kaplama Yöntemleri (Illumination Models and Surface Rendering Methods) Dr. Aybars UĞUR 2006
Aydınlatma Modelleri ve Yüzey Kaplama Yöntemleri Gerçekçi görüntüler, nesnelerin perspektif izdüşümleri alınarak ve görünen yüzeylerine doğal aydınlatma etkileri uygulanarak elde edilirler. Aydınlatma Modeli : Bir nesnenin bir noktasında ışık yoğunluğunu hesaplamak için kullanılan bir modeldir. Yüzey Kaplama : Sahnedeki tüm yüzey izdüşüm konumlarının piksel yoğunluklarını aydınlatma modelini kullanarak hesaplayan prosedüre, yüzey kaplama adı verilir.
Aydınlatma Modelleri illumination model is used to calculate the intensity of light that we see at a given point on the surface of an object surface rendering algorithm uses intensity calculations to determine light intensity for all projected pixel positions for the various surfaces in the scene. Either… performed at every point interpolated across key points
Işık Kaynakları - I Saydam olmayan ve ışık saçmayan bir nesneye bakıldığında, nesnenin yüzeylerinden yansıyan ışık görülür. Toplam yansıyan ışık, tüm ışık kaynaklarının ve ortamdaki diğer yansıtıcı yüzeylerin katılımının toplamına eşittir. Bir ışık kaynağından, doğrudan ışık almayan nesneler de görülebilir. Parlak Nesne ışığın çoğunu yansıtır. Donuk Nesne emer. Saydam Nesne, kısmen geçirir.
Işık Kaynakları – II ve Yansıma Nokta Işık Kaynağı – Dağıtık Işık Kaynağı Ambient Light - Background Light (Ortam - arka plan ışığı) : Tüm nesneler için tüm yönlerde sabittir. Diffuse Reflection (yayılmış yansıma) : Bakış yönünden bağımsız olarak tüm nesneler için sabittir. Specular Reflection (aynaya özgü yansıma) : Elmadaki parlak noktalar gibi etkileri vermek için kullanılır. Bazı nesnelere belirli yönlerden bakıldığında belli bölümler parlar. Refraction (Kırılma) Shadows (Gölgeler)
Reflection characteristics of surfaces Ambient reflection I = Ia Ka Ia = Intensity of ambient light Ka= Fraction reflected, 0<= Ka<=1 Diffuse (Lambertian) reflection Typical of dull matte surfaces Independent of viewer position Dependant of light source position (in this case a point source again a non-physical abstraction)
Diffuse reflection Lamberts Cosine Law I Sin (θ) ‾N I Cos (θ) θ ‾L Lamberts Cosine Law I = Ipkd cos θ I = Ip kd (‾N . ‾L ) Ip = intensity of the point light source kd = diffuse reflection coefficient; specifies fraction of Ip reflected Add an ambient term I = Ia Ka + Ip kd (‾N . ‾L )
Diffuse Light Örneği
Mirror (Specular) Reflection Lighting highlights for shiny surfaces. The result of (near) total reflection of the incident light in a concentrated region around the specular-reflection angle We see reflected light only when V and R concide Non-ideal Reflectors
Specular Light Örneği
Ambient, Diffuse, Specular I = KaIa + Kd L ( L . N ) + Ks L ( R . V )n V light source N L R eye surface
Kırılma (Refraction)
Çokgen Kaplama Yöntemleri Constant Intensity Shading Gouraud Shading (Intensity Interpolation) Phong Shading (Vector Interpolation)
Flat Shading
Gouraud Shading
Phong Shading
Diğer Işın İzleme Yöntemleri Yüzey Ayrıntıları Texture Mapping Environment Mapping Bump Mapping Both bump mapping and environment mapping concepts are due to Jim Blinn
Marble Texture
Bump Mapping Kabartı Kaplama Basic Idea: Simulate small but macroscopic bumps on the surface Perturb the surface normal
How Does It Work? Looking at it in 1D: original surface P(u) bump map b(u) add b(u) to P(u) in surface normal direction, N(u) new surface normal N’(u) for reflection model
Environment Mapping
Renk Modelleri RGB HSV HLS CMY …. Birbirlerine dönüştürülebilirler.
Animasyon Canlandırma, hareketli resim Storyboard (resimli senaryo) Object dfn.s Key-frame specifications In-between frames Key Frame (Anahtar çerçeve) : Hareketin uç noktalarında seçilen animasyon karesi. In-betweens : Anahtar çerçeveler arasındaki kareler. Morphing : Biçim değiştirme.
Hareket Tanımlamaları Kinematik Tanımlama : Hareket parametreleri (konum, hız ve ivme) verilerek yapılan animasyondur. Inverse Kınematics : Belirlenen zamanlarda nesnenin ilk ve son konumları verilir. Hareket parametreleri sistem tarafından hesaplanır. Dynamic Descriptions : Hıza ve ivmeye neden olan kuvvetleri belirtir. F=ma, elektromanyetik, çekim, sürtünme, …
Ders Değerlendirmesi İki ve Üç Boyutlu Grafikler İçeren Yazılım Geliştirme Etkileşim, Animasyon İki Boyutlu Arayüzler (C# GDI +, Java 2D) Üç Boyutlu Arayüzler (OpenGL) Gerçekçi Görüntü Oluşturma (~Photorealistic Rendering): POV RAY Matematiksel Konular (Dönüşümler, Eğriler, …) Algoritmik Konular ve Veri Yapıları Seminerler
Düşünülen Final Sınavı İçeriği 50 Puan Klasik, 30 Puan Çoktan Seçmeli Test, Ders Notları, Tahtaya Yazılanlar, Anlatılanlar + Sunumlar (seminerlerden test sorusu) Ağırlıklı Konular Tanımlar, Bilgi, Genel Kültür Bir konunun Anlatımı, Karşılaştırma Ders kitabından ilgili konular okunmalı OpenGL programı yazmak, Dönüşümler ve Nesne Oluşturma Ağırlıklı Olmayanlar : C# GDI+ / Java2D / POVRAY programı yazmak Main içindeki ilk OpenGL ayarlamaları Spline Formüllerinin ezberlenmesine gerek yok, Formül olarak Bezier mantığı bilinmeli. Fraktallerin ne olduğunun bilinmesi yeterli Bileşik Dönüşüm Matrisi hesaplaması Ders Kitabı’ndan (Hearn&Baker) Computer Graphics with OpenGL Ağırlıklı olarak okunacaklar : 1. A Survey of Computer Graphics. 5. Geometric Transformations. 6. Two-Dimensional Viewing. 7. Three-Dimensional Viewing. 8. Three-Dimensional Object Representations. 9. Visible-Surface Detection Methods. 10. Illumination Models and Surface-Rendering Methods. 13. Computer Animation. Aşağıdaki konulara göz gezdirilmesi yeterli : 2. Overview of Graphics Systems. 3. Graphics Output Primitives. 4. Attributes of Graphics Primitives. Aşağıdaki konular final kapsamında değil : 11. Interactive Input Methods and Graphical User Interfaces. 12. Color Models and Color Applications. 14. Hierarchical Modeling. 15. Graphics File Formats