Panda3D/Manual/Carregar um model

Como carregar?

editar

Para carregar uma geometria estática você usa:

   objeto = loader.loadModel("meuModelo.egg")

Você pode especificar um diretório ou não. Não especificar é o recomendado. Se você não especificar o diretório, o Panda3D vai procurar em todos os diretórios especificados no seu model path para encontrar o arquivo .egg. O model path é controlado pelo Arquivo de Configuração do Panda.

Inserir o Model na Scene Graph

editar

Não esqueça que carregar um objeto não faz ele vísivel. Para fazer o Panda3D renderizar o model, você deve inserir ele na Scene Graph:

   objeto.reparentTo(render)

Leia mais sobre a Scene Graph.

A sintaxe do Panda

editar

O caminho usado no loadModel deve seguir as convenções utilizadas pelo Panda3D. Para uma maior portabilidade, o Panda utiliza caminhos no estilo Unix, até mesmo no Microsoft windows. Isto significa que o caractere separador de diretórios é a barra (/), e não a contra-barra (\).

   #ERRADO
   loader.loadModel("c:\\Arquivos de programas\\Meu jogo\\Modelos\\Modelo1.egg")

   #CORRETO
   loader.loadModel("/c/Arquivos de programas/Meu jogo/Modelos/Modelo1.egg")

O Panda usa uma classe Filename para armazenar os nomes de arquivos no estilo do Panda; muitas funções do Panda esperar por um objeto Filename como parâmetro. A classe Filename contém diversos métodos úteis para a manipulação de caminhos e acesso a arquivos, tanto quanto para converter entre os nomes de arquivo no estilo Windows e estilo Panda; veja a seção de Referência para uma lista mais completa.

Para converter um nome de arquivo Windows num arquivo Panda, use algo similar ao código abaixo:

   from pandac.PandaModules import Filename
   arquivoWindows = "c:\\meuJogo\\modelo1.egg"
   arquivoPanda = Filename.fromOsSpecific(arquivoWindows)
   print pandafile

Para converter um arquivo Panda num arquivo Windows, use este código:

   from pandac.PandaModules import Filename
   arquivoPanda = "/c/meuJogo/modelo1.egg"
   arquivoWindows = arquivoPanda.toOsSpecific()
   print arquivoWindows

A classe Filename pode ser usada também em combinação com os mecanismos de manipulação de diretório do python. Vamos dizer, por exemplo, que você quer carregar um model, e o model está no diretório "modelos" que está no mesmo diretório do programa principal main.py. Você deve carregar o modelo desta forma:

   import sys, os
   from pandac.PandaModules import Filename

   #Pega o caminho do arquivo 'py' que eu estou rodando
   meuDir = os.path.abspath(sys.path[0])

   #Converte para a notação Panda
   meuDir = Filename.fromOsSpecific(meuDir).getFullpath()

   #Agora carrega o modelo
   objeto = loader.loadModel(meuDir + "/models/meuModelo1.egg")