Panda3D/Manual/Controlar a câmera

Origem: Wikilivros, livros abertos por um mundo aberto.

Por padrão, o Panda3D roda uma tarefa (task) que permite a você mover a camera usando o mouse.

As teclas para navegação são:

  • Botão Esquerdo: vai pra esquerda e pra direita
  • Botão Direito: move para frente e para trás
  • Botão do meio: gira ao redor da origem da aplicação
  • Botão direito e do meio: contorna o ponto de visão em volta do eixo da visão

Vai em frente e experimente este sistema de controle da câmera. O problema deste sistema é que ele é as vezes complicado, e nem sempre é fácil de colocar a câmera na direção que nós queremos.

Em vez disso, nós vamos escrever uma task que vai controlar a posição da câmera explicitamente. Uma task nada mais é do que uma subrotina que é chamada a cada frame. Atualize o seu código:

   import direct.directbase.DirectStart
   from direct.task import Task
   from direct.actor import Actor
   import math

   #Carrega nosso primeiro modelo
   ambiente = loader.loadModel("models/environment")
   ambiente.reparentTo(render)
   ambiente.setScale(0.25, 0.25, 0.25)
   ambiente.setPos(-8,42,0)

   #Tarefa para mover a camera
   def TarefaGiraCamera(task):
     anguloGraus = task.time * 6.0
     anguloRadianos = anguloGraus * (math.pi / 180.0)
     base.camera.setPos(20*math.sin(anguloRadianos), -20.0*math.cos(anguloRadianos),3)
     base.camera.setHpr(anguloGraus, 0, 0)

     return Task.cont

   taskMgr.add(TarefaGiraCamera, "GiraCamera")

   run()

A função taskMgr.add diz ao gerenciador de tarefas do Panda para chamar a subrotina TarefaGiraCamera a cada frame. Esta é uma subrotina que nós escrevemos para controlar a camera. Enquanto a subrotina retorna a constante Task.cont, o gerenciador de tarefas vai continuar a chamá-la a cada frame.

No nosso código, a subrotina TarefaGiraCamera() calcula a posição desejada da câmera baseada quanto tempo se passou. A camera gira 6 graus a cada segundo. As duas primeiras linhas computam a orientação desejada da camera, primeiro em graus, e depois em radianos. O setPos posiciona a camera. O setHpr configura a orientação.

A camera não deve mais estar debaixo do plano, e além do mais, a câmera vai estar girando em volta da clareira.

Para mais informações visite esta página