Bu yazımda basitliğiyle ün yapmış pythonun 3D oyun kütüphanesi olan Panda3D yi tanıtmaya çalışacağım

Panda3D ile yapılmış MMORPG oyunundan bir görüntü
Panda3D ile yapılmış oyunundan bir görüntü

Panda3D nin en sevdiğim özellikleri diye söylemek isteseydim;-python ile yazılabilmesi-Hem Directx hemde OpenGl altyapısı kullanabilmesi-İkinci nedenden ötürü multi-platform olabilmesi-Korkunç derecede basit olması-Open-source bu sayede halk diliyle freeware olması :)Şimdi bir önceki yazımda yaptığım gibi ilk önce işe boş bir ekran hazırlayarak başlıyorum.import direct.directbase.DirectStart #panda çizim kütüphanesirun() #çalıştır
Olabilecek en basit yolu buydu, daha basitini istemek tam anlamıyla insafsızlık olurdu.Sadece iki satır kodla boş bir pencere açtıktan sonra sadece iki satır kodla model eklemeye geçiyoruzimport direct.directbase.DirectStartmodel = loader.loadModel(“models/environment”) #panda3d nin örnek modellerinden birimodel.reparentTo(render) #render ortamına aktarıyoruzrun() #çalıştır
Diğer oyun motorlarıyla cebelleştikten sonra bunu görmek bende zamanımı-boşa-harcamışım etkisi yaptı.Panda3D’nin desteklediği 3D formatı olan .egg yi modelimizin sonuna yazmamıza gerek yok. Yani bu şekildede yazılabilirdi;model = loader.loadModel(“models/environment.egg”)
.egg formatı daha önce hiç duymamış olduğunuz bir format olabilir(ki benimde öyleydi), hiç üzülmeyin egg formatı birçok formattan çevrilebiliyor.Şimdi modelimizle biraz oynayalım. İlk önce pozisyonunu ayarlayalım;model.setPos(0,10,20)Bu fonksiyonda bilmemiz gereken tek şey setPos(x,y,z) x,y ve z koordinatları
Şimdide modelimizi biraz küçültelimmodel.setScale(0.25,0.25,0.25)Bu fonksiyonda bilmemiz gereken şey ise setScale(x,y,z) x,y ve z eksenlerinden ne kadar küçültüleceği.
Burada 0.25 kullanarak modelimizi 1/4 üne küçültüyoruz. Bunu her eksenden yapmaz isek görüntümüz bozulacaktır.Şimdi biraz farklı şeyler deneyelim, mesela bir tuşa bastığımızda bir fonksiyonu çalıştırmak istedik;def tus():print ‘Tusa basildi’base.accept(“arrow_up”,tus)
base.accept fonksiyonunda ilk argüment tuşun ismi, ikinciside çalıştırılacak fonksiyondur.arrow_up klavyedeki yukarı tuşu oluyor ve biz bunu farklı şekillerede sokabiliriz. Mesela;arrow_up-up : Elimi tuştan çektikten sonra,arrow_up-repeat : Elimi sürekli tuşa basarsamTüm tuş listesine kendi sitesinde vermiş olduğu gibi bakarsak;”escape”, “f”+”1-12” (e.g. “f1″,”f2″,…”f12”), “print_screen” “scroll_lock””backspace”, “insert”, “home”, “page_up”, “num_lock””tab”, “delete”, “end”, “page_down””caps_lock”, “enter”, “arrow_left”, “arrow_up”, “arrow_down”, “arrow_right””shift”, “lshift”, “rshift”,”control”, “alt”, “lcontrol”, “lalt”, “space”, “ralt”, “rcontrol”Klavyedeki harf ve rakamları direk yazabiliriz yani “a” gibi..Hatta bunlarda kombinasyonda yapabiliriz. Mesela;”shift-a”, “shift-control-alt-a”, “shift-alt-a” gibi..Şimdide modelimize geri dönelim. Modelimize şimdi bir iskelet hareketi ekleyerek onu aktör yapmak istedik 🙂from direct.actor import Actor #bunu unutmayalım bu bizim aktörümüz için kullancağımız kütüphanepandaActor = Actor.Actor(“models/panda-model”,{“walk”:”models/panda-walk4″})pandaActor.reparentTo(render)pandaActor.loop(“walk”)
Yine kendi örnek modellerinden birini ve iskeletini koyarak işe başladık. loop(“walk”) diyerek önceden tanımladığımız istekeli çalıştırdık.loop(“walk”) yerine play(“walk”) deseydik sadece iskeletimizi 1 kere oynatacaktık. İskelet hareketini durdurmak için stop() fonksiyonunu kullanabiliriz.Ama buda tam iskelet neredeyse orada tabiri-caizse kalas gibi kalır. Aktörümüzü ilk pozisyonuna almak içinse bunu kullanabiliriz;actor.pose(‘walk’,1)Buradaki 1 frame numarasını karşılıyor.
Daha çok değinmek istediğim yer var ama başlangıç seviyesi olduğu için son olarak bir sis yapıp artislik bir şekilde yazıdan çıkıcam 😛Fog = Fog(“sis”)Fog.setColor(100,100,100)Fog.setExpDensity(0.5)render.setFog(Fog)
setColor(Kırmızı,Yeşil,Mavi) tonları, setExpDensity(0.5) 1 ve 0 arasında baskınlık değeri girerek sisimizi oluşturduk.Eğer bu yazının sonunda Panda3D yi denemek isterseniz;İndirSenin anlattığın kafi gelmedi benim İngilizcemde var diyorsanız;Wikiİndirip kurması çok kolay. Hatta Panda3D python üzerine kurulmuyor kendi pythonunyla beraber geliyor. Eğer yazdığımız bir kodu çalıştırmak istersekte cmd den yada terminaldenppython kod.py(Dikkat iki p var) yazmamız yeterli.

Panda3D ile yapılmış oyunundan bir görüntü
Panda3D ile yapılmış oyunundan bir görüntü
Panda3D ile yapılmış oyunundan bir görüntü
Panda3D ile yapılmış oyunundan bir görüntü
Panda3D ile yapılmış oyunundan bir görüntü
Panda3D ile yapılmış oyunundan bir görüntü