# Panda3D

Este livro tem uma coleção para a criação de versões nos formatos HTML, PDF, ODT, ZIM, ePUB ou para encomendas para a PediaPress.

## O que é a Panda3D

A Panda3D é uma engine 3D: uma biblioteca de subrotinas para renderização 3D e desenvolvimento de jogos. A criação de jogos é feita com um programa escrito na linguagem de programação Python ou C++ que controla a biblioteca Panda3D. A Panda3D é open-source e livre para qualquer propósito, até mesmo comercial.
Este wikilivro tem o propósito de servir de referência rápida para os programadores brasileiros e para ajudar a fixar bem o conteúdo do manual oficial, que está em inglês e você encontra neste link http://www.panda3d.org/wiki/index.php/Main_Page.
A seção Manual é uma tradução e faz parte do manual oficial em inglês.
Nosso objetivo atual é traduzir o manual, mas também pretendemos o deixar melhor que o original, com tudo relacionado a panda3d, como tutoriais, exemplos e afins. Também contamos com sua ajuda para corrigir o conteudo que temos e expandi-lo.
Tenha uma boa leitura.

## Tutoriais

* Configuração e Instalação Panda3D - Por Marcc3d
* Configurar modelos animados no Blender - Por Mcunha98

## Manual

Etapas de desenvolvimento do texto (5 ou 9 etapas) :
| Início: | Básico: | Criação: | Desenvolvimento: | Maturação: | Revisão: | Desenvolvido: | Finalização: | Abrangente: |

### Conteúdo

* I. Introdução ao Panda
** Instalação do Panda no Windows
** Instalação do Panda no Linux
** Preparação
** Como Usar um Editor Python
** Como Rodar suas Aplicações no Panda
** Um programa Panda3D "Hello World"
*** 1. Iniciar o Panda3D
*** 2. Carregar o Cenário
*** 3. Controlar a Câmera
*** 4. Carregar e Animar o Modelo Panda
*** 5. Usar Intervals para Mover o Panda
** Tutoriais e exemplos cedidos por usuários
** Video tutoriais
* II. Programando com o Panda
** A Scene Graph
*** 1. Manipulação da Scene Graph
*** 3. Mudanças de Estado Comuns
*** 2. Manipulando parte de um Modelo
*** 4. Pesquisar na Scene Graph
*** 5. Instancing
** O Arquivo de Configuração
*** 1. Configurar o Panda
*** 2. Lista de Todas as Variáveis de Configuração
*** 3. Acessar Variáveis de Configuração num Programa
** Models e Actors
*** 1. Carregar um Model
*** 2. Carregar Actors e animações
*** 3. Animar Actors
*** 4. Actors Multi-Partes
*** 5. Vincular um objeto á uma junta
*** 6. Controlar uma junta processualmente
** Os Atributos de Renderização
*** 1. Lista de Todos os Atributos
*** 2. Iluminação
*** 3. Materiais
*** 4. O Depth Test e o Depth Writer
*** 5. Fog
*** 6. O Alpha Test
*** 7. As Máscaras Color Write
*** 8. Antialiasing
*** 9. Clip Planes
*** 10. Pintar e Colorir
*** 11. Esconder as Faces da Frente e as Faces de Trás
*** 12. Light Ramps
*** 13. Controle auxiliar de BitPlane
*** 14. Testando stencil escrevendo atributo
** Texturização
*** 1. Texturização Simples
*** 2. Escolhendo tamanho da textura
*** 3. Modos de Wrap da Textura
*** 4. Tipos de filtro de textura
*** 5. Substituição de texturas simples
*** 6. Introdução á multi-textura
*** 7. Modos de Textura
*** 8. Ordem das Texturas
*** 9. Modos de combinação de texturas
*** 10. Transformação de Texturas
*** 11. sets de coordenada de textura múltiplos
*** 12. Coordenadas de textura automatica
*** 13. Texturas Projetadas
*** 14. Mapeamento de ambiente simples
*** 15. Texturas 3D
*** 16. Cube Maps
*** 17. Mapeamento de ambientes com Cube Maps
*** 18. Animação automatica de texturas
*** 19. Tocando arquivos MPG e AVI
*** 20. Transparencia e Blending
*** 21. Gerenciamento de Texturas
*** 22. Compressão de Texturas
** Shaders
*** 1. Basico de Shaders
*** 2. Lista de inputs possíveis dos shaders
*** 3. Shaders e coordenas de espaço
*** 4. Limitações e bugs conhecidos do Shader
*** 5. O gerador de Shaders
*** 6. Tutorial de shader CG
*** 7. Tutorial CG parte1
*** 8. Tutorial CG parte2
** Controle da Câmera
*** 1. A Câmera Padrão
*** 2. As Lentes e o Campo de Visão
*** 3. A Lente Ortográfica
** Som
*** 1. Carregando e tocando Sons e Musicas
*** 2. Manipulando Sons
*** 3. Gerenciadores de áudio
*** 4. Efeitos DSP
*** 5. Áudio 3D
*** 6. MultiCanal
** Intervalos
*** 1. Intervalos Lerp
*** 2. Intervalos de funções
*** 3. Intervalos de ator
*** 4. Intervalos de Som
*** 5. Intervalos de Motion Path e Partículas
*** 6. Paralelos e sequências
*** 6. Intervalos de Posição, rotação e escala
*** 7. Intervalo de Projéteis
** Tarefas e gerenciamento de eventos
*** 1. Tarefas
*** 2. Gerenciamento de eventos
*** 3. Loop principal
** Renderização de texto e imagem
*** 1. Fonte de texto
*** 2. Node de Texto
*** 3. Texto na Tela
*** 4. Imagem na Tela
*** 5. Propriedades de Texto Embeded
** Direct GUI
*** 1. DirectBotão
*** 2. Direct Checar Botão
*** 3. Direct Botão de Rádio
*** 4. Direct Diálogo
*** 5. Direct Entrada
*** 6. Direct Frame
*** 7. Direct Label
*** 8. Direct Menu de Opções
*** 9. Direct Lista com scroll
*** 10. Direct Barra de Espera
*** 11. Direct Slider
*** 12. Direct Barra de Scroll
*** 13. Direct Frame com Scroll
** Efeitos de Render
*** 1. Efeitos de Compasso
*** 2. Efeito Billboard
** Maquinas de estado finito
*** 1. FSM introdução
*** 2. uso simples de FSM
*** 3. FSM com input
*** 4. Tidbits FSM avançados
** Terreno
*** 1. o Tesselator de Heightfield
*** 2. Mipmapping geométrico
** Operações avançadas com a estrutura do Panda3d
*** 1. Como o Panda Armazena vértices e geometria
*** 2. GeomVertexData
*** 3. GeomVertexFormat
*** 4. GeomPrimitive
*** 5. Geom
*** 6. GeomNode
*** 7. Bounding Volume
*** 8. Gerando Procedualmente seus modelos
*** 9. Definindo a sua própria GeomVertexFormat
*** 10. formatos pré-definidos de vértices
*** 11. Criando e preenchendo uma GeomVertexData
*** 12. Criando objetos GeomPrimitive
*** 13. Colocando a sua nova geometria no SceneGraph
*** 14. Outras Manipulações de Vertex e Data
*** 15. Lendo Data de geometria existente
*** 16. Modificando Data de geometria existente
*** 17. Mais sobre GeomVertexReader, GeomVertexWriter e GeomVertexRewriter
*** 18. Criando novas texturas do nada
*** 19. gravando 3d models para o disco
** Renderizar para textura e pós-processamento de imagem
*** 1. Filtros de imagem comuns
*** 2. Filtros de imagens generalizados
*** 3. CubeMaps Dinâmicos
*** 4. Renderização para Textura de Baixo nível
** Renderizar para textura e pós-processamento de imagem
*** 1. Introduzindo as classes gráficas
*** 2. Percurso dos Gráficos
*** 3. Criando Janelas e Buffers
*** 4. Regiões de display
*** 5. Limpando área de display
*** 6. a area de display 2D
*** 7. Páginas Antigas
*** 8. A Engine de Gráficos
*** 9. A classe GraphicsOutput
*** 10. Buffers Gráficos e Janelas
*** 11. Renderização em múltiplos passes
*** 12. Como controlar ordem de Renderização
** Efeitos de Partículas
** Renderizar para textura e pós-processamento de imagem
*** 1. Usando o painél de partículas
*** 2. Carregando o sistema de partículas
*** 3. Parametros basicos para efeitos de particula
*** 4. Fabricas de Particulas
*** 5. Emissores de Particulas
*** 6. Renderizadores de particula
** Renderizar para textura e pós-processamento de imagem
*** 1. Sólidos de Colisão
*** 2. Handlers de Colisão
*** 3. Entradas de Colisão
*** 4. Traverser de Colisão
*** 5. Bitmasks de colisão
*** 6. Objetos em rapido movimento
*** 7. Exemplo de Pusher
*** 8. Exemplo de Evento
*** 9. Exemplo de BitMask
*** 10. Clicando em objetos 3D
*** 6. Renderizadores de particula
** Suporte a hardware
*** 1. Suporte a Teclado
*** 2. Suporte a Mouse
*** 3. Suporte a joystick
*** 4. Capacetes de realidade virtual e trackers
** Motor de Matemática
*** 1. Representação da Matriz
** Física
*** 1. Motor de física embutido do Panda3d
*** 2. Habilitando física em um node
*** 3. Aplicando física a um node
*** 4. Tipos de força
*** 5. Notas
*** 6. Usando ODE com panda3d
*** 7. Mundos, corpos e massas
*** 8. Simulando o mundo físico
*** 9. Vincular corpos usando juntas
*** 10. Detecção de colisão com ODE
** Motion Paths
** Tempo
*** 1. O relógio Global
** Networking
*** 1. Protocolo de Datagram
*** 2. Conexão cliente-servidor
*** 3. Transmitindo Data
*** 4. Baixando um arquivo
** Multifiles
*** 1. Criando Multifiles
*** 2. Patching
*** 3. Carregando recursos de fontes não padrão
** Leitura de Arquivos
** Threading
** SubClassing
** Distribuindo Aplicações Panda3d
*** A. Introdução a arquivos p3d
**** 1. Usando packp3d
**** 2. referenciando pacotes
**** 3. Rodando arquivos p3d
*** B. Distribuindo via Web
**** 1. Embedded com um elemento objeto
**** 2. Embeded com rodarpanda3d
**** 3. Sobre Certificados
***** a. Chave privada e chave pública
***** b. Certificados auto-assinados
***** c. Certificados HTTP( Apache )
***** d. Certificados de E-mail
**** 4. Assinando seus arquivos p3d
*** D. Distribuindo com um instalador auto-contido
*** 1. Pacotes padrão
*** 2. Instalando pacotes
*** 3. Mais sobre referenciar pacotes
*** 4. Construindo e hospedando seus próprios pacotes
*** a. Usando ppackage
*** b. a sintaxe pdef
*** c. Criando múltiplos pacotes
*** d. Hospedando pacotes
*** e. Hospedagem SSL
*** f. Criando pacotes multiplataforma
*** g. Construindo patches
** g. Programas de Exemplo na distribuição
*** A. Programa de Exemplo: Asteróides
*** B. Programa de Exemplo: Bola no Labirinto
*** C. Programa de Exemplo: Robôs boxeadores
*** D. Programa de Exemplo: Carrosel
*** E. Programa de Exemplo: Shader Cartoon
*** F.Programa de Exemplo: Tabuleiro
*** G. Programa de Exemplo: Luzes de Disco
*** H. Programa de Exemplo: Vagalumes
*** I. Programa de Exemplo: Plantas Fractais
*** J. Programa de Exemplo: Filtro de brilho
*** L. Programa de Exemplo: Túnel infinito
*** M. Programa de Exemplo: Olhando e segurando
*** N. Programa de Exemplo: Media player
*** O. Programa de Exemplo: Trilhas de movimento
*** P. Programa de Exemplo: Caixa de Música
*** Q. Programa de Exemplo: Mapeamento Normal
*** R. Programa de Exemplo: Cubo Procedual
*** T. Programa de Exemplo: Ralph vagante
*** U. Programa de Exemplo: Sombras
*** V. Programa de Exemplo: Sistema Solar
*** W. Programa de Exemplo: Bule de chá na TV
*** W. Programa de Exemplo: Troca de Texturas
** V. DirectStart( conteudo de )
** VI. Depurando
*** A. Mensagens de Log
*** B. O debugger Python
*** C. Rodando o panda no debugger CXX
** VII. Melhorando performance
*** A. Diagnósticos básicos de performance
*** B. Medindo performance com PStats
*** C. O combinador de corpos rígidos
*** D. Problema de perfomance: Muitas Meshes
*** E. Problema de perfomance: Muitas Mudanças de Estado
*** F. Problema de perfomance: Muitos Updates de Texto
*** G. Problema de perfomance: Muitos Instruções de Shader
*** H. Problema de perfomance: Preenchimento Excessivo
*** I. Problema de perfomance: Memória cheia
*** J. Problema de perfomance: Cálculo Python
*** L. Problema de perfomance: Falha ao coletar lixo
*** M. Problema de perfomance: Mal uso do sistema de colisão
*** N. Problema de perfomance: Vídeo integrado da placa mãe
*** O. Problema de perfomance: Muitos polígonos
*** P. Miscelânea
** VIII. Usando CXX
*** A. Como compilar um programa panda3d CXX
**** 1. Como compilar um jogo panda3d CXX usando microsoft visual studio 2008
**** 2. Como compilar um programa panda3d CXX no Linux
**** 3. Como compilar um programa panda3d CXX no Mac OS X
*** B. A framework da janela
*** C. Texturizando em CXX
*** D. Contagem de referência
** IX. Ferramentas do Panda3d
*** A. O browser de SceneGraph
**** 1. Navegação de Mouse Melhorada
*** B. Interrogar
*** C. Editores Python
**** 1. SPE
*** D. Dicas de Pipeline
*** E. Exportando modelos
**** 1. Convertendo do 3d Studio Max
**** 2. Convertendo do Maya
**** 3. Convertendo do Blender
**** 4. Convertendo do SoftImage
**** 5. Convertendo do Milkshape 3D
**** 6. Convertendo do Gmax
**** 7. Convertendo de outros formatos
**** 8. Convertendo Egg para Bam
**** 9. Parsing e gerando arquivos egg
**** 10. Sintaxe do Egg
*** F. Vendo modelos no Pview
*** G. Criando um instalador com packpanda
*** H. O editor de Cena
**** 1. As Aulas do editor de Cena
*** X. Compilando Panda da fonte
**** A. ppremake no windows
**** B. ppremake no linux
**** C. makepanda no windows
**** D. makepanda no linux
**** E. Tutorial: Compilando fonte do Panda3d no Windows
** Lista de executáveis Panda3d
** Começando na OS X
** Mais recursos Panda
** Informação das licença
** Hospedagem de projetos
** O canal IRC
** FAQ
** Referencias de Classe

## Exemplos

* Tasks
* Eventos
* Colisão
* Efeitos gráficos
* Sons
* AI com waypoints
* Jogo em primeira pessoa
* Jogo em terceira pessoa
* Simulador de carro
* Simulador de vôo

## Outros

* FAQ

## Ligações externas

* Site oficial do Panda3D
* Site oficial do Python
* Site oficial da IDE Eclipse
* Site oficial da IDE PyPE
* Site oficial da IDE Geany