COM337 Bilgisayar Grafiği. OpenGL ile Grafik Programlama. Dr. Erkan Bostancı

Benzer belgeler
COM337 Bilgisayar Grafiği. OpenGL ile Grafik Programlama. Dr. Erkan Bostancı

COM337 Bilgisayar Grafiği. OpenGL ile Grafik Programlama. Dr. Erkan Bostancı

OpenGL Uygulamaları. 1. Giriş. 2. OpenGL

KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR GRAFİKLERİ LABORATUARI. OpenGL Uygulamaları

CAEeda TM OM6 KANADI MODELLEME. EDA Tasarım Analiz Mühendislik

İÇİNDEKİLER. Ön Söz...2. Noktanın Analitik İncelenmesi...3. Doğrunun Analitiği Analitik Düzlemde Simetri...25

Sanal Ortamda Nesnelerin Haptic Kol ile Manipülasyonu. Sevcan AYTEKİN Alpaslan DUYSAK

Bilgisayar Grafikleri

Üç Boyutlu Uzayda Koordinat sistemi

OPENGL. Y. Doç. Dr. Aybars UĞUR Ocak 2006

BÖLÜM 04. Çalışma Unsurları

DÜZLEMDE GERİLME DÖNÜŞÜMLERİ

Analitik Geometri (MATH172) Ders Detayları

Tanımlar, Geometrik ve Matemetiksel Temeller. Yrd. Doç. Dr. Saygın ABDİKAN Yrd. Doç. Dr. Aycan M. MARANGOZ. JDF329 Fotogrametri I Ders Notu

ÖNDER BİLGİSAYAR KURSU. 3D Studio Max Eğitim İçeriği

BIL 409 BİLGİSAYAR GRAFİKLERİ LABORATUARI

OpenGL Uygulamaları. 1. Giriş. 2. OpenGL. Deney 2

Q27.1 Yüklü bir parçacık manyetik alanfda hareket ediyorsa, parçacığa etki eden manyetik kuvvetin yönü?

Karmaşık Sayılar Karmaşık Sayı Yaratma

BIL 409 BİLGİSAYAR GRAFİKLERİ LABORATUARI

MAYA ile 3D Modelleme

3. V, R 3 ün açık bir altkümesi olmak üzere, c R. p noktasında yüzeye dik olduğunu gösteriniz.(10

Koordinat Referans Sistemleri

ELASTİSİTE TEORİSİ I. Yrd. Doç Dr. Eray Arslan

CAEeda TM GENEL TANITIM. EDA Tasarım Analiz Mühendislik

4. Animasyonumuzda karakterimizin harekete başlaması duyurusu yapıldığında çalışan komut aşağıdakilerden hangisidir?

EĞİTİM - ÖĞRETİM YILI 10. SINIF MATEMATİK DERSİ DESTEKLEME VE YETİŞTİRME KURSU KAZANIMLARI VE TESTLERİ

Bilgisayarla Görüye Giriş

BÖLÜM ÜÇ BOYUTLU NESNELERİ KAPLAMA VE GÖLGELENDİRME

Görünmeyen Yüzey ve Arkayüz Kaldırma

ÖRNEK ÖRNEK ÖRNEK ÖRNEK

Kompozit Malzemeler ve Mekaniği. Yrd.Doç.Dr. Akın Ataş

ANALİTİK GEOMETRİ ÇÖZÜMLÜ SORU BANKASI

JFM 301 SİSMOLOJİ ELASTİSİTE TEORİSİ Elastisite teorisi yer içinde dalga yayılımını incelerken çok yararlı olmuştur.

CAEeda TM NACA0012 OLUŞTURULAN DÖRTGENE ÇÖZÜMAĞI OLUŞTURMA EĞİTİM NOTU. EDA Tasarım Analiz Mühendislik

Skecher (Çizim) Komutları

SCRATCH KONU ANLATIM KAĞIDI BAY KODLAMA (baykodlama.blogspot.com)

FİRMALAR KULLANIM KILAVUZU

1. Yandaki kuş karakterini domuz karakterine ulaştırmak için doğru kod bloğu hangisidir?

CAEeda TM ONERA M6 KANADI NAVIER-STOKES ÇÖZÜMAĞI OLUŞTURMA VE ÖNİŞLEM. EDA Tasarım Analiz Mühendislik

Dinamik Geometri Yazılımlarından Cabri ile Yansıma ve Öteleme Hareketlerinin Öğretimi

Ara Yüz ve Paneller. Erlang Penceresi

MODÜL BİLGİ SAYFASI İÇERİK :

Yüzey Doldurma Teknikleri

Grafik Tasarım Serkan AKSU Photoshop CS Araçlar

3D Bilgisayar Grafikleri

SMART Board EĞİTİMLERİ(sürüm:10) 1. Aşama

MODÜL BİLGİ SAYFASI İÇERİK

STEM komutu ayrık zamanlı sinyalleri veya fonksiyonları çizmek amacı ile kullanılır. Bu komutun en basit kullanım şekli şöyledir: stem(x,y).

4. HAFTA ENM 108 BİLGİSAYAR DESTEKLİ TEKNİK RESİM. Yrd.Doç.Dr. İnan KESKİN.

DİNAMİK (3.hafta) EĞRİSEL HAREKET-2: Kutupsal /Polar Koordinatlar (r,θ) A-Polar Koordinatlarda (r,θ) Hareket Denkemleri

1. Kurulum. Tam ekranda iken MENU tuşuna. Başlat sekmesine gelin ve sonra [ / ] basın ve menüye girin. [ / ]

OYUN GELİŞTİRME AŞAMALARI (ARAYÜZ TASARIMI)

7. BÖLÜM İÇ ÇARPIM UZAYLARI İÇ ÇARPIM UZAYLARI İÇ ÇARPIM UZAYLARI İÇ ÇARPIM UZAYLARI .= Genel: Vektörler bölümünde vektörel iç çarpım;

T I M U R K A R A Ç AY - H AY D A R E Ş C A L C U L U S S E Ç K I N YAY I N C I L I K A N K A R A

Doç. Dr. Sabri KAYA Erciyes Üni. Müh. Fak. Elektrik-Elektronik Müh. Bölümü. Ders içeriği

Bilgisayar Grafik. Erciyes Üniversitesi Bilgisayar Mühendisliği 2010 Güz Dönemi Araştırma Görevlisi Fehim KÖYLÜ

Doğru çizim algoritmaları

2-MANYETIK ALANLAR İÇİN GAUSS YASASI

3. KUVVET SİSTEMLERİ

Robot İzleme (Robot Tracing)

Mat Matematik II / Calculus II

Object-oriented Graphics Rendering Engine (OGRE)

Parametrik doğru denklemleri 1

Sistem Dinamiği. Bölüm 3- Rijit Gövdeli Mekanik Sistemlerin Modellenmesi. Doç.Dr. Erhan AKDOĞAN

QUANTUM CBS YE İLİŞKİN LAB TAKİP NOTLARI

AÇILIŞ EKRANI. Açılış ekranı temelde üç pencereye ayrılır:

Kompozit Malzemeler ve Mekaniği. Yrd.Doç.Dr. Akın Ataş

Bilgisayar Grafiği. Volkan KAVADARLI

Round-Chamfer / Yrd. Doç. Dr. Mehmet FIRAT- Yrd. Doç. Dr. Murat ÖZSOY

Yrd. Doç. Dr. Aycan M. MARANGOZ. BEÜ MÜHENDİSLİK FAKÜLTESİ GEOMATİK MÜHENDİSLİĞİ BÖLÜMÜ JDF329 FOTOGRAMETRİ I DERSi NOTLARI

2014 LYS GEOMETRİ 3. A. parabolü ile. x 1 y a 9 çemberinin üç noktada kesişmesi için a kaç olmalıdır?

Tanımlar, Geometrik ve Matemetiksel Temeller. Yrd. Doç. Dr. Saygın ABDİKAN Yrd. Doç. Dr. Aycan M. MARANGOZ. JDF329 Fotogrametri I Ders Notu

Bilgisayarla Görüye Giriş

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Yrd. Doç. Dr. Aycan M. MARANGOZ. BEÜ MÜHENDİSLİK FAKÜLTESİ GEOMATİK MÜHENDİSLİĞİ BÖLÜMÜ JDF329 FOTOGRAMETRİ I DERSi NOTLARI

Nokta uzayda bir konumu belirtir. Noktanın 0 boyutlu olduğu kabul edilir. Herhangi bir büyüklüğü yoktur.

.docx veya.doc (2007 ve üzeri sürümlerde.docx iken sürümlerinde.doc tur.) 1.Belge Başlığı

Flash ile Etkileşimli Öğretim Materyali Hazırlama Semineri

Edgecam 2012 R1. Yenilikleri; Kaba işlemelerde Waveform işleme yöntemi eklendi.


A A = A 2 x + A 2 y + A 2 z (1) A A. Üç-boyutlu uzayda, iki tane vektörü kartezyen koordinatlarda dikkate alalım: A = Axˆx + A y ŷ + A z ẑ,

ÜNİTE. MATEMATİK-1 Yrd.Doç.Dr.Ömer TARAKÇI İÇİNDEKİLER HEDEFLER DOĞRULAR VE PARABOLLER

OYUN GELİŞTİRME AŞAMALARI-III (ARAYÜZ TASARIMI)

MATLAB de GRAFİK İŞLEMLERİ

BÖLÜM 15. Uyarlanabilir Parçalar

Masa Örneği (standard primitives)

Ürün Tasarımında Bilgisayar Destekli 3 Boyutlu Modelleme (EUT361) Ders Detayları

22. Ölçü ve Kot Eklemek

BİLGİSAYAR DESTEKLİ TASARIM AUTOCAD DERSİ. 1. HAFTA Öğr. Gör. Serkan ÖREN

2012 LYS MATEMATİK SORU VE ÇÖZÜMLERİ Niyazi Kurtoğlu

Eğri ve Yüzey Modelleme. Prof. Dr. Necmettin Kaya

Başarsoft Bilgi Teknolojileri A.Ş.

PERGEL YAYINLARI LYS 1 DENEME-6 KONU ANALİZİ SORU NO LYS 1 MATEMATİK TESTİ KAZANIM NO KAZANIMLAR

TASARI GEOMETRİ SINAV SORULARI

1989 ÖYS. olduğuna göre a-b kaçtır? A) 2 B) 2 C) 2 2 D) 2 2 E) 4

Uzayda iki doğrunun ortak dikme doğrusunun denklemi

Matlab da 2-boyutlu Grafik Çizimi. Arş. Gör. Mehmet Ali ÜSTÜNER

GÖRÜNTÜ TABANLI ALGILAMA İLE QUADROTORUN HAREKETLİ BİR CİSMİ TAKİBİ

Elastisite Teorisi Hooke Yasası Normal Gerilme-Şekil değiştirme

Transkript:

COM337 Bilgisayar Grafiği OpenGL ile Grafik Programlama Dr. Erkan Bostancı

İçerik Giriş Dönüşüm matrisleri Matris yığınları (stack)

Giriş İlk olarak gizli yüzeylerin kaldırılmasını (hidden surface removal) inceleyeceğiz. Bu özellik nesnelerin daha gerçekçi görünmesini sağlar. Sonrasında OpenGL de geometrinin nasıl çalıştığını öğrendiğimize göre artık dönüşümleri (transformation) inceleyebiliriz. Son olarak da dönüşüm matrisi yığınlarına bakıp, hiyerarşik modelleme nasıl yapılır onu öğreneceğiz.

Gizli yüzeylerin kaldırılması Örnek 7 OpenGL şu iki çağrı ile hidden surface removal yapabiliriz: glutinitdisplaymode(glut_depth ); glenable(gl_depth_test); Sonrasında ise frame buffer ı temizlediğimizde depth buffer ı da temizleriz. glclear(gl_depth_buffer_bit GL_COLOR_BUFFER_BIT);

Poligonların yalnızca bir yüzü vardır! Çoğu grafik sisteminde çalışırken gördüğümüz bir gariplik poligonların sadece bir yüzeylerinin olmasıdır. Bunun amacı aslında hız açısından performans arttırmak. Kamera tarafından görünebilen poligonlar, normal vektörleri kameraya doğru bakan poligonlardır. Normal vektör bir yüzeye dik olan vektördür. OpenGL in kullandığı yöntemde poligonu oluşturan noktaların saatin ters yönünde (anti-clockwise) belirlenmesi gerekir. Böylece bu poligonların normal vektörleri kameraya bakmış olur ve kamera bunları görebilir. Bu nedenden dolayı, katı bir cismi oluşturan poligonların tamamının normal vektörleri dışa bakmalıdır ve bu poligonları oluşturan noktalar saatin ters yönü sırasında belirtilmelidir.

Matrisler (1/2) OpenGL iki tür matris kullanır: modelview ve projection Modelview, sahnenin oluşturulması ve sanal kamera ile ilgilidir. Projection, özellikle de sahne görüntüsünün oluşturulması ile ilgilidir. Her iki matris de 4x4 boyutlarındadır ve homojen koordinatlar üzerinde işlem yapar. Bir uygulama programı c koordinatını belirttiğinde OpenGL bu koordinata modelview matrisi M ve projection matrisi P yi kullanarak bir dönüşüm uygular. c = PMc

Matrisler (2/2) M ve P nin ikisi de başlangıçta identity bir dönüşüm içerir (yani hiçbir şey yapmaz). Bu matrislerin mantıklı değerlerle doldurulması uygulama programının sorumluluğundadır. Hangi dönüşüm matrisinin etkileneceğini tek parametre alan glmatrixmode kullanarak seçeriz. GL_PROJECTION GL_MODELVIEW Genelde, uygulamalar M matrisini display callback i içinde, P yi de reshape callback i içinde ayarlar. reshape callback i pencerenin boyutu veya şekli değiştiğinde çağrılır.

OpenGL de dönüşümler (1/2) Genelde çağrılar aşağıdaki gibi yapılır: glmatrixmode (GL_MODELVIEW); glloadidentity (); gltranslatef (1.0, 0.0, 0.0); glscalef (1.5, 1.0, 0.5); glvertex3f (1.0, 1.0, 1.0); Şu anki dönüşüm matrisini etkileyen OpenGL fonksiyonları, postmultiplication yapar, bu nedenle istediğimiz etkiyi yaratmak için kullandığımız dönüşüm çağrıları ters sıra ile yaparız. Bu kullanım biraz kafa karıştırıcı olabilir, ama OpenGL bu şekilde tasarlanmış.

OpenGL de dönüşümler (2/2) glloadidentity, gltranslatef ve glscalef fonksiyonları zaten açıktır. Dönme için ise glrotatef(glfloat angle, Glfloat x, Glfloat y, Glfloat z) verilen derece cinsinden dönmeyi, orjinden x,y,z ile belirtilen vektör etrafında yapar. C deki açılar radyan parametre alıyordu, glrotatef parametrelerini derece cinsinden alır.

Matris yığınları (1/2) Gerçekte, OpenGL deki modelview matrisi tek bir matris değildir, bir stack in (yığın) üstüdür. 0 (üst) 1 N Bu OpenGL de hiyerarşik modelleme yapmamızı kolaylaştırır. Şu anki matrisi yığına eklemek (push) için glpushmatrix(); 4x4 matris A 0 4x4 matris A 1 4x4 matris A N

Matris yığınları (2/2) Stack in üstündeki yeni matris bir seviye aşağıya itilen ile aynıdır: 0 (üst) 1 2 N Benzer şekilde stack ten almak (pop) için: glpopmatrix(); 4x4 matris A 0 4x4 matris A 0 4x4 matris A 1 4x4 matris A N display fonksiyonu içinde aynı sayıda push ve pop işlemi yapmak önemlidir.

Örnek: Robot kolu (1/4) Örnek 8 Matris yığınlarının kullanımını göstermek amacıyla kullanıcı klavye tuşları ile eklem açılarını değiştirebildiği bir örnek.

Örnek: Robot kolu (2/4) Pencere boyutunun ve şeklinin etkileşimli bir şekilde değiştiğinde sahnenin de buna göre güncellenmesini sağlayan reshape fonksiyonunu (callback) tanımladık ve bunu OpenGL e glutreshapefunc() ile kaydettik. Bu fonksiyon ilk olarak OpenGL in viewport unu ayarlayarak pencereyi doldururur. Sonradan da projection matrisini ayarlar. gluperspective(gldouble fovy, Gldouble aspect, Gldouble near, Gldouble far) Burada fovy, yz düzlemindeki bakış açısıdır ve aspect viewport un aspect ratio sudur (en-boy oranı). Kameraya göre near ve far arasında kalan uzaklıklarda bulunan nesneler çizillir diğerleri kırpılır (clipping).

Örnek: Robot kolu (3/4) keyboard callback i içindeki kod, omuz, dirsek ve bilek açılarını değiştirir. Üst ve alt kollar ve el scale edilmiş küpler ile modellenebilir fakat açılarını ayarlamak için modelleme dönüşümlerine ihtiyacımız var. Yerel koordinat düzlemi başlangıçta her küpün ortasında olduğu için, pivot noktasını bir kenara çekmemiz gerekiyor. gltranslatef fonksiyonu pivot noktasını ayarlar ve glrotatef dönmeyi sağlar. Sonra tekrar küpün merkezine translate ettikten sonra ve scale ederek çiziyoruz. glpushmatrix ve glpopmatrix fonksiyonlarına yapılan çağrılar glscalef in etkisini sınırlıyor.

Örnek: Robot kolu (4/4) İkinci bir eklemi çizmek için, yerel koordinat sistemini ikinci pivot noktasına taşıyoruz. Koordinat sistemi önceden döndürülmüş olduğu için, x ekseni zaten dönmüş kol kısmı boyunca hizalanıyor. Böylece, x ekseni üzerinde translate ederek pivot noktasını belirleyebiliyoruz.