Panda3D Hareket İçin Interval

Evet arkadaşlar, sahnemizi oluşturduk. İçerisine bir panda koyduk güzel oldu şimdi sırada pandamızı hareket ettirmeye geldi. Bunun için Interval denilen bir özelliği kullanacağız. Öncelikle kodlarımızı ekleyelim:


import direct.directbase.DirectStart
from pandac.PandaModules import *

from direct.task import Task
from direct.actor import Actor
from direct.interval.IntervalGlobal import *
import math

environ = loader.loadModel("models/environment")
environ.reparentTo(render)
environ.setScale(0.25,0.25,0.25)
environ.setPos(-8,42,0)

def SpinCameraTask(task):
angledegrees = task.time * 6.0
angleradians = angledegrees * (math.pi / 180.0)
base.camera.setPos(20*math.sin(angleradians),-20.0*math.cos(angleradians),3)
base.camera.setHpr(angledegrees, 0, 0)
return Task.cont

taskMgr.add(SpinCameraTask, "SpinCameraTask")

pandaActor = Actor.Actor("models/panda-model",{"walk":"models/panda-walk4"})
pandaActor.setScale(0.005,0.005,0.005)
pandaActor.reparentTo(render)
pandaActor.loop("walk")

pandaPosInterval1= pandaActor.posInterval(13,Point3(0,-10,0), startPos=Point3(0,10,0))
pandaPosInterval2= pandaActor.posInterval(13,Point3(0,10,0), startPos=Point3(0,-10,0))
pandaHprInterval1= pandaActor.hprInterval(3,Point3(180,0,0), startHpr=Point3(0,0,0))
pandaHprInterval2= pandaActor.hprInterval(3,Point3(0,0,0), startHpr=Point3(180,0,0))

pandaPace = Sequence(pandaPosInterval1, pandaHprInterval1,
pandaPosInterval2, pandaHprInterval2, name = "pandaPace")
pandaPace.loop()

run()

Şimdi interval nedir onu açıklayalım. Öncelikle bir tür zamanlanmış görev olduğunu söylesek yanlış olmaz. Belli bir zaman aralığında bir değeri başka bir değere çeviririz. Eklediğimiz satırlara bakacak olursanız ilk olarak pandaPosInterval1 isimli bir nesne oluşturduğumuzu görürsünüz, bu nesnelerin isimleri o kadar da önemli değil ama ben ana dokümana sağdık kalıyorum aynı zamanda ne olduklarını açıklayan birer cümle gibi kullanıldıkları için ileride hatırlamanıza yardımcı olur. Neyse, nesnemizi oluşturduk ve posInterval fonksiyonunu kullandık fonksiyonda belirttiğimiz üzere başlangıç pozisyonu 0,10,0 noktası. Bu noktadan 13 saniyelik bir zaman içerisinde 0,-10,0 noktasına geçmiş oluyoruz. Sonraki satırdaysa aynı şeyi tersten yapıyoruz. Hpr ise anladığınız üzere açıyı değiştiriyor.

Son kısımda ise başka bir görev türüne geçiyoruz. Sequence sırayla Interval’ları gerçekleştiren bir görev türü. Sıraladıktan sonra loop() fonksiyonunu kullanarak bir döngü oluşturmuş oluyoruz. Zaten her şey döngüden ibaret…

Bu yazıyla birlikte Panda3D’yi sizlere tanıtmak için başlattığım seriyi bitirmiş oldum. Bundan sonra insanlara Panda’yı öğretmeye çalışmaktan ziyade tecrübelerimi paylaşacağım yazılar gelebilir. Panda3D ile uğraşan, animasyon yapan, kendini geliştirmek isteyenler benimle iletişim bölümü aracılığıyla irtibata geçebilir. Umarım bende sizlerden bir şeyler öğrenebilirim.

İyi Çalışmalar
Ceyhun Alyeşil