frameRenderingQueued fonksiyonumuza geçelim. createFrameListener fonksiyonu BaseApplication sınıfında tanımlanmıştı. Bir önceki derste de createFrameListener fonksiyonunu override etmemiş...
Her zaman olduğu gibi önce createScene fonksiyonumuzu hazırlayalım. AmbientLight’ımızı kuruyoruz, bir ninja E’si oluşturuyoruz, son olarak da bir ışık kaynağı oluşturuyoruz...
Önceki dersimizde tamponlanmamış girdi işlemini anlatmıştık. Tamponlanmamış girdi işleminde her kare için sorgulama şu şekilde oluyordu: “örneğin, I tuşuna basıldı mı?, J tuşuna basıldı mı?...
Şimdi de ışığımızı klavyemizdeki 1 tuşundan açıp kapatmayı deneyelim. Bu işlemi yaparken fareyeBasildi gibi bir değişken kurup bu değişkeni kontrol etmeyeceğiz. Farklı bir yol izleyeceğiz. Real türünde bir değişken kuracağız...
createScene fonksiyonumuzun içini yazarak başlayalım. Şimdi AmbientLight’ımızı, Gölge Tekniği’mizi, Kamera’mızın konumunu ve yüzünün dönük olduğu konumu belirliyoruz. Sonra döndüreceğimiz ve hareket ettireceğimiz Ninja Entity nesnememizi...
Bu dersimizde ilk olarak OGRE’nin render döngüsüne değineceğiz. Öncelikle izlediğimiz filmlerin verilerinin depolanma mantığından bahsedelim. Ekranda gördüğümüz koşan bir çocuk...
Her iki sis türü de SM nesnesi üzerinden setFog fonksiyonuyla kurulur. Viewport’umuzun arkaplan rengiyle sisin renginin aynı olması gerektiğini söylemiştik. Bu nedenle...
SkyDome kullandığımızda bir kürenin içindeymiş gibi bir hisse kapılırız. Sanki bir yarım küre üstümüze geçirilmiştir. SkyDome’da tıpkı SkyBox’da olduğu gibi kameramızın etrafına bir küp renderlenir. Farkı, SkyDome renderlenirken yüzeyler...
Bu fonksiyonunun detaylarına değinmeyeceğiz. bilgiEtiketi nesnemizi her ne kadar Ders3.h dosyasında tanımlamış olsak da BaseApplication’a çalışma düzeninde bilgiEtiketi...
Bu fonksiyonda terrain dosyamızın oluşturulup oluşturulmadığını soracağız. Eğer oluşturulmamışsa getTerrainImage fonksiyonuna yönlendirme yaparak terrain resmimizi yükleyeceğiz ve sonra...
Şimdi iç içe iki tane for döngüsü yazacağız. Bu for döngüleri x ve y değişkenlerinin değerlerine göre çalışacak. Ve döngü boyunca terrainTanimlama fonksiyonu çağırılacak. Dikkat etmemiz gereken nokta şudur: bu x ve y değerleri koordinat eksenlerini...
Terrain, Türkçe karşılığıyla Arazi, oyunumuzdaki dağları, tepeleri, ovaları barındıran 3d model dosyasıdır. Terrain’i diğer model dosyalarından ayıran özelliği, devasa boyutlarda olmasıdır. Ayrıca, örneğin bir evi izlerken kameranın yönünü çevirdiğimizde, ev model görüş alanımızın dışına çıkacağından...
Biz Entity’lerimizi tanımlarken hep doğrudan model dosyasının ismini belirttik. Entity tanımının ikinci parametresine hep ogrehead.mesh, ninja.mesh yazarak devam ettik. Bu dosyalar bilgisayarın hangi klasöründe, materiali ne olacak, kaplaması hangi dosyadır hiç ayarlamadık. Çünkü şuana kadar tüm bu model dosyaları için gerekli ayrıntılar tanımlanmıştı. Şuanda ise önceden tanımlanmamış bir model oluşturuyoruz. Bundan...
Önceki derste SM nesnesini biz tanımlamamıştık. BaseApplication sınıfında otomatik olarak uygulama sihirbazı tarafından tanımlanmıştı. Aynı şekilde bu dersimimizde de kamera nesnemiz otomatik tanımlanmış durumda. Ama biz kamera fonksiyonunu override edeceğiz. mCamera nesnemiz bizim için önceden uygulama sihirbazı tarafından tanımlanmış olan Kamera sınıfının bir nesnesi. Şimdiyse onu, mSceneMgr’ye, yani SM’imize bağlı bir ...
Bir sahne oluşturduğumuz zaman, bu sahneyi görüntülemek için kameraları kullanırız. Kameralar özel nesnelerdir. Kameralar çoğu zaman SN’ler gibi çalışır. setPosition, pitch, yaw, roll fonksiyonlarına sahiptir ve kamerayı bir SN’ye bağlayabilirsin. Kamera bağlı olduğu anne SN’ye göre işlem yapar. Hareket ettirme ve döndürme işlemlerinin tümü için kamerayı bir SN gibi düşünebilirsin...
Şimdi de ölçekleme işleminden bahsedelim. Bu işlemi scale *ölçekle+ fonksiyonuyla yapacağız. scale fonksiyonu da 3 boyutlu vektör kullanıyor. Fakat bu sefer X, Y, Z hanelerindeki değerleri koordinat olarak düşünmeyin. Bu sefer bunlar nesnemizin boyutunun kaç kat büyültüleceğini/küçültüleceğini...
Yeni bir üye fonksiyona değinelim. setVisible *kur.Görünürlük+fonksiyonu, E sınıfının üye fonksiyonu. Boolean değeriyle çalışıyor. Diyelim ki bir sahnede bir E’miz var. Bunu geçici bir süre onu görmek istemiyoruz. Sahne de görünmemesi için onu tanımlandığımız kodları silmemize gerek yok. Bunun yerine E nesnemizin...
OGRE’de sahne ile ilgili işlemlerimizi createScene fonksiyonunda yaparız. Uygulama dosyamızı açıp...
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...
Bizim için OGRE kullanımıyla ilgili bir İngilizce bir makaleyi anlayıp, uygulamak; bu dokümandaki eğitim bölümlerini hazırlamaktan oldukça kolay ve kısa zaman almakta. Anlatıma terimler dâhil olunca ve hazırladığınız dersleri en temelden...
İki boyutta döndürme işlemi, anlaşılması oldukça kolay olduğundan anlatmadan geçiyoruz. Üç boyutta döndürme işlemine değinelim. Daha düzgün bir ifadeyle, uzayda döndürme işlemi nedir, nasıl yapılır? Herhangi bir nesneyi eksenlerde, üç ayrı eksene göre sırayla döndürerek, istediğimiz...
Uzunluğu ve eni kilometrelerce olan bir beyaz kâğıt hayal edelim. Bu kâğıdımızın üzerine çizilmiş üç yıldız var. Bunların renkleri yeşil, mavi ve sarı olsun. Sonra bunların kâğıt üzerinde nasıl durduklarını hayal edelim....
Yapacağınız ilk şey, gerekli dosyaları bilgisayarınıza indirmektir. İndireceğimiz...
Dokümanın asıl içeriği olan OGRE derslerine başlamadan önce C++ programının nasıl kullanıldığını temel olarak bilmelisiniz. C++ programının en temel yapısını öğrenmek için en hızlı yol Youtube’da bulabileceğiniz video dersleri izlemektir. Biz...
OLENVERD GRUBU’nu oluşturan bizler: Enes AYVACI, Baki AÇIKGÖZ, Kenan TAŞKIN ve Numan
EYÜBOĞLU; bilgisayar oyunu hazırlamayı kendine hobi edinmiş dört üniversite öğrencisiyiz. Hiçbir ticari
amaç taşımaksızın bilgisayar oyunu hazırlamaktayız. Aramızda yazılım hakkında profesyonel eğitim almış
kimse yoktur.