Tu estás aquí: ¡Bienvenido! » Traducciones » Sistema de control de cámara por defecto
Usuario
Buscar páginas
Esta Pagina
General

Sistema de control de cámara por defecto

De forma predeterminada, Panda3D ejecuta una tarea que le permite mover la cámara con el ratón.

Las teclas para navegar son:

Tecla Acción
Botón Izquierdo Mueve hacia la izquierda y derecha.
Botón derecho Desplazarse hacia delante y atrás.
Botón Medio Rotar en torno al origen de la aplicación.
Botones Derecho y Medio Rotar el punto de vista en torno al eje de la vista.

Pruebe ahora este sistema de control de cámara. El problema es que este a veces es incómodo. No siempre es fácil apuntar$$$$ la cámara en la dirección que queremos.

Tareas

Actualización del Código

En su lugar, vamos a escribir una tarea que controla la posición de la cámara de forma explícita. Una tarea no es más que un método que se llama a cada fotograma. Actualice el código de la siguiente manera:

from math import pi, sin, cos
 
from direct.showbase.ShowBase import ShowBase
from direct.task import Task
 
class MyApp(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)
 
        # 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")
 
    # 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()

El método taskMgr.add() le dice al administrador tareas de Panda3D que llame al método spinCameraTask() en cada fotograma. Este es un método que hemos escrito para controlar la cámara. Mientras el método spinCameraTask() devuelva la constante Task.cont, el administrador de tareas lo seguirá llamando en cada fotograma.

En nuestro código, el método spinCameraTask() calcula la posición deseada de la cámara en función de cuánto tiempo ha transcurrido. La cámara gira 6 grados cada segundo. Las dos primeras líneas calculan la orientación deseada de la cámara, primero en grados, y luego en radianes. La llamada a setpos() establece la posición de la cámara. (Recuerde que Y es horizontal y Z es vertical, por lo que se anima cambiando X e Y mientras que Z se queda fijo en 3 unidades por encima del nivel del suelo). La llamada setHpr() establece la orientación.

Ejecutar el Programa

La cámara ya no debe estar bajo tierra, y además, ahora debería estar girando alrededor del claro:

Foto: Tutorial2.jpg

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