Tu estás aquí: ¡Bienvenido! » Traducciones » Intervalos y secuencias
Usuario
Buscar páginas
Esta Pagina
General

Intervalos y secuencias

Intervalos

Los intervalos son tareas que cambian una propiedad de un valor a otro durante un periodo de tiempo especificado. Iniciar un intervalo efectivamente inicia un proceso de fondo que modifica la propiedad durante el período de tiempo especificado.

Secuencias

Las secuencias son tareas que se ejecutan un intervalo tras otro.

El Programa

Actualización del Código

El siguiente paso es hacer que el panda a moverse en realidad un lado a otro. Actualizar el código por lo siguiente:

from math import pi, sin, cos
 
from direct.showbase.ShowBase import ShowBase
from direct.task import Task
from direct.actor.Actor import Actor
from direct.interval.IntervalGlobal import Sequence
from panda3d.core import Point3
 
class MyApp(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)
 
        # Disable the camera trackball controls.
        self.disableMouse()
 
        # Load the environment model.
        self.environ = self.loader.loadModel("models/environment")
        # Reparent the model to render.
        self.environ.reparentTo(self.render)
        # Apply scale and position transforms on the model.
        self.environ.setScale(0.25, 0.25, 0.25)
        self.environ.setPos(-8, 42, 0)
 
        # Add the spinCameraTask procedure to the task manager.
        self.taskMgr.add(self.spinCameraTask, "SpinCameraTask")
 
        # Load and transform the panda actor.
        self.pandaActor = Actor("models/panda-model",
                                {"walk": "models/panda-walk4"})
        self.pandaActor.setScale(0.005, 0.005, 0.005)
        self.pandaActor.reparentTo(self.render)
        # Loop its animation.
        self.pandaActor.loop("walk")
 
        # Create the four lerp intervals needed for the panda to
        # walk back and forth.
        pandaPosInterval1 = self.pandaActor.posInterval(13,
                                                        Point3(0, -10, 0),
                                                        startPos=Point3(0, 10, 0))
        pandaPosInterval2 = self.pandaActor.posInterval(13,
                                                        Point3(0, 10, 0),
                                                        startPos=Point3(0, -10, 0))
        pandaHprInterval1 = self.pandaActor.hprInterval(3,
                                                        Point3(180, 0, 0),
                                                        startHpr=Point3(0, 0, 0))
        pandaHprInterval2 = self.pandaActor.hprInterval(3,
                                                        Point3(0, 0, 0),
                                                        startHpr=Point3(180, 0, 0))
 
        # Create and play the sequence that coordinates the intervals.
        self.pandaPace = Sequence(pandaPosInterval1,
                                  pandaHprInterval1,
                                  pandaPosInterval2,
                                  pandaHprInterval2,
                                  name="pandaPace")
        self.pandaPace.loop()
 
    # Define a procedure to move the camera.
    def spinCameraTask(self, task):
        angleDegrees = task.time * 6.0
        angleRadians = angleDegrees * (pi / 180.0)
        self.camera.setPos(20 * sin(angleRadians), -20.0 * cos(angleRadians), 3)
        self.camera.setHpr(angleDegrees, 0, 0)
        return Task.cont
 
app = MyApp()
app.run()

Cuando el intervalo pandaPosInterval1 empieza, gradualmente ajusta la posición del panda de (0, 10, 0) a (0, -10, 0) en un período de 13 segundos. Del mismo modo, cuando el intervalo pandaHprInterval1 se inicia, la cabeza del panda rotará 180 grados durante un período de 3 segundos.

La secuencia previa pandaPace hace que el panda se mueva en línea recta, gire, se mueven en la línea recta opuesta y finalmente gire otra vez. El código de pandaPace.loop() hace que la secuencia que se inicie en modo de bucle.

Ejecutar el Programa

El resultado de todo esto es hacer que el panda a pasee de ida y vuelta de un árbol a otro.

 
traducciones/usando_intervalos_para_mover_al_panda.txt · Última modificación: 31/08/2010 a las 05:07 por alej0
Este sitio funciona sobre el motor wiki de DokuWiki.
© 2003-2008 Hugo Ruscitti