Panda3D/Manual/Carregar um model
Como carregar?
editarPara 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
editarNã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
editarO 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")