Panda3D/Manual/Controlar a câmera
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