Ogre Kütüphanesi Bölüm-6 En Temel Ogre Yapılarına Girişş
UstaDerslik Soru-Cevap Yararlı Araçlar
arama ikon

bilgi UstaDerslik
Bu uyari kutusudur.
Tamam
Anasayfa
İletişim
Üyeler

Ogre Kütüphanesi Bölüm-6 En Temel Ogre Yapılarına Girişş

profil
OLENVERDGRUP
BEĞEN(1)
BEĞENME(0)
GÖRÜNTÜLENME(4481)
RAPOR ET
A. TEORİK DERS
1. ENTITY, SCENENODE VE SCENEMANAGER (VARLIK, SAHNEDÜĞÜMÜ VE SAHNE YÖNETMENİ)

Ogre ortamının en temel üç sınıfı vardır. Bu sınıflar Entity(Varlık), SceneNode(SahneDüğümü) ve SceneManager(SahneYöneticisi)’dir.

Entity’ler, aklımıza gelebilecek tüm nesneleri tanımlamak için kullanılan sınıftır. Karakter, arazi, ağaç, okyanus, bina, otomobil, robot, masa, sandalye vb… her şey bir Entity olarak tanımlanır.

SceneNode’ler Entity’lerimizi konumlandırmak, döndürmek, ölçeklemek için kullanılan sınıftır. Uzayın herhangi bir yerinde olan Entity’lerimiz bir SceneNode’ye bağlanarak konumu, döndürmesi ve ölçeklemesi belirlenir. Bu üç özelliği belirlendiği için sahnemize yüklenir.

SceneManager’ler, SceneNode’lere bağlanmış Entity’lerden grup oluşturan ve onları topluca işleyen sınıftır. Sahnedeki tüm Entity’lerin SceneNode’lerle belirlenmiş özelliklerini topluca işler. SceneManager yapılan bir değişiklik, SceneManager’e ait olan tüm Entity’leri ve SceneNode’leri etkiler. Ayrıca, sahneyi renderlemek için kullanacağımız kameranın durumunu vb. işlevleri düzenler.

SceneNode’ler zincir halkaları gibidir. Onlarca SceneNode’yi birbirine bağlayıp, Entity’i ister son SceneNode’ye ister zincirlemedeki herhangi bir SceneNode’ye bağlayabilirsiniz.

Çalışma şartı şudur: her Entity bir SceneNode’ye, her SceneNode’un kendisi veya bağlı olduğu SceneNode bir SceneManager’e bağlanmak zorundadır.

Şimdi buraya kadar yazılı olarak ifade ettiklerimizi resimlerle anlatmaya çalışalım. Diyelim ki elimizde üç tane Entity var. Bunlar bir araba, bir ev, bir de ağaç. Bunları Ogre ortamında programlayarak sahnemize yerleştirmek istiyoruz. Resimlerimiz şu şekilde:

Entity: Ağaç
http://ustaderslik.com/resim/ders/rsgsb.png
Entity: Ev
http://l1308.hizliresim.com/1d/q/rsgsk.png
Entity: Araba
http://ustaderslik.com/resim/ders/rsgtg.png

Bu çengel de SceneNode’u temsil ediyor:
http://ustaderslik.com/resim/ders/rsgu4.png

http://l1308.hizliresim.com/1d/q/rsguc.png
Bu resimdeki RootNode, orijinimizi yani (0, 0, 0) koordinatlarını temsil ediyor. Başlangıç seviyesinde RootNode hakkında bilmeniz gereken bir şey yok. SceneManager’imizin SceneNode’u RootNode’ye bağlanır. Bu işlemi biz yapmıyoruz. Proje sihirbazımız gerekli kodları ekliyor. Biz başlangıç seviyesinde, resimde siyah renkte gördüğümüz SceneNode’lerle ilgileneceğiz.

Ne tür işlemler yapabileceğimizden bahsedelim. Bir projede sınırsız SceneManager tanımlayabiliriz. Örneğin SceneManager1 deyip, bu SceneManager’a oyunumuzun 1.bölümünün nesnelerini, arazisini vb. şeyleri tanımlarız. Sonra SceneManager2 deyip, bu SceneManager’a da oyunumuzun 2.bölümünün nesnelerini yükleriz. 1.bölüm bitince SceneManager1’i pasifleştirip, SceneManager2’yi aktifleştiririz. Böylece bölüm sonunda 2.bölüm yüklenmiş olur. Farklı bir şekilde anlatırsak, örneğin 1.bölüm ormanda, 2.bölüm şehirde geçiyorsa, ormandaki belirlenen koordinatlara oyuncu gelince, 2.bölüm yani SceneManager2 yüklenir.

2. SCENENODE’LERDE ANNE-ÇOCUK (PARENT-CHILD) İLİŞKİSİ
Bir SceneNode’ye bağlı olan SceneNode’ler, bağlı olduğu SceneNode’nin çocuğu(child) olarak adlandırır.
http://s1308.hizliresim.com/1d/q/rsgv6.png

Ayrıca her SceneNode de bağlı olduğu SceneNode’nin çocuğu(child) olarak adlandırılır.
http://ustaderslik.com/resim/ders/rsgvr.png />
SceneNode’lerin anne-çocuk hiyerarşisini ne zaman kullanırız? Örneğin karakterimizin silah kullandığı bir oyun tasarladık. Karakterimiz elinde silahı tutacak. Bu durumda silahın SceneNode’sini SceneManager’e değil, Karakterin SceneNode’sine bağlarız. Karakter hareket ettiğinde, döndüğünde vb. işlemlerde bu durumdan karakterin elindeki silah nesnesi de etkilenir.

3. AMBIENT LIGHT (ÇEVRESEL IŞIK)
Ambient Light (Çevresel Işık) olarak isimlendirilen sahnedeki tüm nesneleri etkileyen bir ışık kullanacağız. Ambient Light, sahnemizdeki nesnelerimize herhangi bir açıdan etkileyen bir ışık kaynağı değildir. Durumu normal ışık kaynaklarından oldukça farklıdır. Sahnedeki her nesneyi etkiler ama gölge oluşturmaz. Daha doğru bir ifadeyle, Ambient Light bir tür tonlama yapar. Aşağıdaki resimlerde Ambient Light’ı daha kolay anlamanız için biraz abartarak renklendirme yaptık. Normalde Ambient Light’ın etkisi bu kadar net belli olmaz.

Nesnemizin rengi gri ve Ambient Light yok.
http://s1308.hizliresim.com/1d/q/rsgx6.png

Bu resimde Ambient Light’ımızın rengi beyaz.
http://s1308.hizliresim.com/1d/q/rsgyr.png

Bu resimde Ambient Light’ımızın rengi kırmızı.
http://ustaderslik.com/resim/ders/rsh1r.png

Bu resimde ise Ambient Light’ımızın rengi mavi.
http://s1308.hizliresim.com/1d/q/rsh2h.png


Her ne kadar örnekte ilk resim için Ambient Light yok dememize rağmen aslında, OGRE’de uygulamamızın kodlarını çalıştırabilmek için her sahneye Ambient Light tanımlamak zorundayız.

4. SET VE GET FONKSİYONLARI
Bahsetmemiz gereken diğer bir konu set ve get fonksiyonları. Örnek üzerinden anlatalım. 7-8 yaşlarında ilkokula giden bir kardeşimiz olduğunu varsayalım. Kardeşimize klasik Türkçe’de hüviyet kelimesinin kimlik (nüfus cüzdanı veya kişilik) anlamına geldiğini öğreteceğiz. Sonra ne öğrettiğimizi soracağız. Kardeşimizi yanımıza çağırıyoruz. Ona: “Kimlik, hüviyet demektir.” dedik. Sonra kardeşimize: “Kimlik ne demektir?” diye soruyoruz, kardeşimiz de: “Hüviyettir.” cevabını verdi.

http://s1308.hizliresim.com/1d/q/rsh3y.png
http://l1308.hizliresim.com/1d/q/rsh46.png

Yukarıda verdiğimiz örneği kod olarak ifade edersek:
- kardeş->setKimlik(hüviyet);
- kardeş->getKimlik;

get fonksiyonu bize, set fonksiyonuyla girdiğimiz veriyi döndürür. set fonksiyonunu nesnelerimizin konumunu, döndürme işlemini vb. şeyleri ayarlamak için kullanacağız. get fonksiyonunu ise yaptığımız ayarlamaları öğrenmek için ve de birbirine bağlı olan Entity’ler, Scenenode’ler arasında dolaylı yoldan geçiş yapmak için kullanacağız. Bu bölümü tek okuyuşta anlamadıysanız tekrar okumayın. Pratik Ders bölümünde, projemize uygularken daha rahat anlarsınız.

5. OGRE’DE RENK TANIMLAMA

Son olarak RGB renk formatından bahsedelim. Açılımı Red, Green ve Blue şeklindedir. Yani oluşturulacak renkte üç ana rengin hangisinden ne kadar kullanıldığını belirler. Kırmızı, Yeşil ve Mavi renkleri için genel olarak 0 ila 255 arasında değer verilir. Yani kırmızı bir renk tanımlayacaksak (R, G, B) parametrelerine (255, 0, 0) değerleri verilir. Paint’in renk paletini kullanarak bir renge örnek verelim:

http://s1308.hizliresim.com/1d/q/rsh5d.png

OGRE’de renk tanımları 0 ila 255 arasında değer almaz. Bir renk tanımı en az 0, en fazla 1 değerini alır. 255 değerini 1 ile tanımlarsınız. Bu tanımlamaya göre orantılama yaparak istediğiniz rengi OGRE’nin algılayabildiği aralığa çevirebilirsiniz. Örneğin sadece kırmızı rengi, RGB’de (255, 0, 0) olarak tanımlarken, OGRE’de ColourValue(1, 0, 0) olarak tanımlarız.

OGRE’de dikkat edilmesi gerek konu, vektörün ve renk tanımının üçer parametreli fonksiyonlar olmasıdır. Renk, ColourValue(R, G, B) olarak tanımlanırken; vektör, Vector3(X, Y, Z) olarak tanımlanır.

Teorik Dersi sonlandırmadan önce, anlattığımız konuları tekrar edelim.

- Entity(Varlık), SceneNode(SahneDüğümü) ve SceneManager(SahneYönetmeni)
- SceneNode’lerde Anne-Çocuk(Parent-Child) İlişkisi
- Ambient Light (Çevresel Işık)
- set ve get Fonksiyonları
- OGRE’de Renk Tanımlama, ColourValue(R, G, B)



Kod
Kalın
Vurgu
Resim
Video
Url
CEVAPLA
Tüm Hakları Saklıdır. ©Arleone 2013-2014 UstaDerslik






Giriş
Şifremi Unuttum...
Şifre Talep
  Kuralları Kabul Ediyorum.
Kaydol