Panda3D/Manual/Carregar o cenário

Com o Panda rodando normalmente, agora é possível carregar algum cenário. Atualize o seu código como se segue:

   import direct.directbase.DirectStart

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

   #Roda o tutorial
   run()

O comando loader.loadModel() carrega o arquivo especificado, no caso o arquivo environment.egg na pasta models do Panda. O valor retornado é um NodePath, efetivamente é um ponteiro para o modelo. Note que a sintaxe de nome de arquivo do panda usa uma barra para frente, até mesmo no Windows.

O Panda3D contém uma estrutura de dados chamada Scene Graph. A Scene Graph é uma árvore contendo todos os objetos que precisam ser renderizados. No topo da árvore está um objeto chamado render. Nada é renderizado até que ele seja instalado na Scene Graph.

Para instalar o modelo do cenário, nós usamos o método reparentTo. Isto configura o parente do modelo, dando assim um lugar a ele na Scene Graph. Com isso o modelo se torna visível.

Por fim, nós ajustamos a posição e o tamanho do modelo. Neste caso particular, o modelo environment está um pouco grande e fora dos limites para o nosso propósito. O setScale muda o tamanho do modelo e o setPos posiciona ele no mundo 3D.

Panda usa um sistema de coordenadas "geográficas1 aonde position (-8, 42, 0) significa coordenadas de mapa 8, 42 e altura 0. Se você está acostumado com coordenadas 3D OpenGL/DirectX, fique com sua mão direita na classica posição onde o polegar é X, dedos são Y, e Palma é Z, que está em sua direção; então rotacione sua mão até o polegar estar nivelado com os dedos e a palma para cima. Mover para frente em panda é uma mudança positiva para a coordenada Y.

Vá em frente e teste o programa. Você deve ver isto:

A rocha e a pedra parecerão estar flutuando. A camera está um pouco abaixo do chão, e o culling de faces traseiras está escondendo o chão de nós. Se nós reposicionássemos a camera o terreno pareceria melhor...