Índice analítico
Introdução ao Panda3D
Instalando Panda3D em Windows
Instalando Panda3D em Linux
Preparação Geral
Começando com o seu ambiente de desenvolvimento
Executar o seu programa
A World Olá Panda3D Tutorial
Começando Panda3D
Carregando o cenário Grassy
Controlar a Câmera
Carregando e animação do modelo Panda
Usando Intervalos para mover o Panda
Tutorial Fim
User Contributed Tutoriais e exemplos
Tutoriais em Vídeo
Programação com Panda3D
ShowBase
O Scene Graph
Gráfico Manipulações Cena
Alterações comuns Estado
Manipulando um pedaço de um modelo
Buscando a Scene Graph
Instancing
O arquivo de configuração
Configurando Panda3D
Lista de todas as variáveis de configuração
Vars Acessando configuração de um Programa de
Modelos e atores
Carregando Models
Carregando Atores e Animações
Ator Animações
Atores Multi -Part
Colocar um objeto para um Conjunto
Controlando um misto Processualmente
Render Atributos
Lista de todos os atributos
Iluminação
Materiais
Profundidade de ensaio e gravação de profundidade
Nevoeiro
Alpha Testing
Cor Escrever Máscaras
Antialiasing
Clip Planes
Matizar e Recolorir
Backface escolha e Frontface Abate
Light Rampas
Auxiliar de Controle bitplane
Teste Stencil / Write Attribute
Texturização
Simples Texturing
Escolhendo um tamanho de Textura
Wrap Modos de Textura
Filtrar tipos de textura
Substituição simples da textura
Introdução multitextura
Modos de textura
Textura Ordem
Modos de textura Combine
Textura Transforma
Textura vários conjuntos de coordenadas
Textura automática Coordenadas
Texturas Projetada
Mapeamento de ambiente simples
3- D Texturas
Cube Maps
Mapeamento do Ambiente com Cube Maps
Automática animação da textura
Jogando MPG e AVI
Transparência e mistura
Texture Management
Texture Compression
Shaders
Shader Basics
Lista de possíveis entradas Cg Shader
Espaços Shaders e Coordenar
Bugs Conhecidos Shader e Limitações
O Shader Generator
Cg Shader Tutorial
Cg Tutorial Part 1
Cg Tutorial Part 2
Camera Control
O driver de câmera padrão
Lentes e campo de visão
Lentes Ortográfica
Som
Carregamento e reprodução de sons e música
Manipular os sons
Audio Gestores
DSP Effects
Áudio 3D
Multi -Channel
Intervalos
Intervalos de seiva
Função Intervalos
Ator Intervalos
Intervalos de som
Intervalos Motion Path e partículas
Seqüências e Parallels
Intervalos de posição , Rotação e Escala
Projétil Intervalos
Tarefas e manipulação de eventos
Tarefas
Tarefa Chains
Manipuladores de eventos
Main Loop
Texto e Imagem Rendering
Texto Fontes
Texto do nó
OnscreenText
OnscreenImage
Embedded Propriedades do texto
DirectGUI
DirectButton
DirectCheckButton
DirectRadioButton
DirectDialog
DirectEntry
DirectFrame
DirectLabel
DirectOptionMenu
DirectScrolledList
DirectWaitBar
DirectSlider
DirectScrollBar
DirectScrolledFrame
Render Effects
Efeitos Compass
Efeitos Billboard
Máquinas de Estado Finito
FSM Introdução
Uso FSM Simples
FSM com entrada
FSM Tidbits avançada
Terreno
O Tesselator heightfield
Geométricas mipmapping
Operações avançadas com estruturas internas do Panda3D
Como Lojas Panda3D vértices e Geometria
GeomVertexData
GeomVertexFormat
GeomPrimitive
Geom
GeomNode
BoundingVolume
Processualmente geração de modelos 3D
Definindo seu próprio GeomVertexFormat
Pré-definidos formatos vértice
Criando e preenchendo um GeomVertexData
Criando os objetos GeomPrimitive
Colocar a sua nova geometria na cena gráfico
Outro vértice e manipulação do modelo
Leitura de dados de geometria existente
Modificando dados geométricos existentes
MeshDrawer
Mais sobre GeomVertexReader , GeomVertexWriter e GeomVertexRewriter
Criação de novas texturas a partir do zero
Escrever modelos 3D para o disco
Render -to - Texture e Imagem Postprocessing
Comum filtros de imagem
Filtros de imagem generalizada
Cube mapas dinâmicos
Low -Level Render to Texture
Panda3D processo de renderização
Apresentando gráficos Classes
O Pipe Graphics
Windows Criando e amortecedores
Display Regiões
Display Regiões Clearing
A Região Display 2D
O motor gráfico
A classe GraphicsOutput
Buffers gráficos e Windows
Multi -Pass Rendering
Como controlar Ordem Render
Utility Funções Panda3D
Particle Effects
Usando o painel de partículas
Carregando sistemas de partículas
Efeito Particle Parâmetros Básicos
Fábricas de partículas
Partículas Emissores
Partículas Renderers
Detecção de colisão
Colisão Sólidos
Manipuladores de colisão
Colisão Entradas
Colisão cruzadores
Colisão bitmasks
Objetos de rápido movimento
Exemplo Pusher
Exemplo de evento
Exemplo bitmask
Ao clicar em objetos 3D
Suporte de Hardware
Suporte Teclado
Apoio Mouse
Suporte Joystick
Capacetes e VR Trackers
Math Engine
Representação matricial
Física
Panda3D Engine Física
Ativando física em um nó
Aplicando física de um nó
Tipos de forças
Notas e advertências
Usando ODE com Panda3D
Mundos, Órgãos e missas
Simulando o Physics World
Colocar os corpos usando Articulações
Detecção de colisão com ODE
Caminhos Motion
Cronometragem
O Relógio Global
Networking
Datagram Protocol
Conexão Cliente-Servidor
Transmissão de dados
Download de um arquivo
Distributed Networking
Arquivo DC
Multifiles
Criando Multifiles
Patching
Carregando recursos de fontes fora do padrão
Arquivo de Leitura
Threading
Subclassing
Tabela de funcionalidades suportadas por processador gráfico
Distribuindo Aplicações Panda3D
Introdução aos arquivos p3d
Usando packp3d
Pacotes Referenciando
Executando arquivos p3d
Distribuir via Internet
Incorporação de um elemento de objeto
Incorporação com RunPanda3D
Sobre os certificados
Chave pública, chave privada
Certificados auto-assinados
HTTPS ( Apache) certificados
certificados e-mail
Assinando seus arquivos p3d
P3D arquivo de configuração configurações
Distribuindo como autônomo instalador
O tempo de execução Panda3D diretório
O sistema de pacotes
pacotes Standard
Instalando pacotes
Mais informações sobre pacotes de referência
Construção e hospedagem seus próprios pacotes
Usando ppackage
A sintaxe pdef
Criando vários pacotes
pacotes de hospedagem
SSL hospedagem
Construindo pacotes multiplataforma
Construindo patches
Técnicas avançadas de scripting
DetectPanda3D.js
objeto tags avançada
tags janela Splash
Plugin notificar callbacks
AppRunner
O objeto appRunner.main
O objeto appRunner.dom
Lendo os sinais HTML
Outros membros appRunner
P3D segurança origem
PackageInstaller
Programas de exemplo na Distribuição
Programas Exemplo: Asteroids
Programas Exemplo: Bola na Maze
Programas de exemplo : Boxing Robots
Programas Exemplo: Carousel
Programas Exemplo: Cartoon Shader
Programas Exemplo: xadrez
Programas Exemplo: Disco Lights
Programas Exemplo: Fireflies
Programas de exemplo : Plantas Fractal
Programas de exemplo : filtro de brilho
Programas de exemplo : Túnel Infinito
Programas Exemplo: Olhar e Gripping
Programas de exemplo : Media Player
Programas Exemplo: Motion Trails
Programas Exemplo: Music Box
Programas Exemplo: Mapeamento Normal
Programas Exemplo: Partículas
Programas de exemplo : Cube processuais
Programas de exemplo : Roaming Ralph
Programas Exemplo: Shadows
Programas Exemplo: Sistema Solar
Programas Exemplo: Bule na TV
Programas de exemplo : Textura Permuta
Depuração
Log Mensagens
O depurador Python
Correndo Panda3D sob o depurador CXX
Performance Tuning
Diagnóstico de Desempenho Basic
Avaliação do Desempenho com PStats
Corpo rígido Combiner
Performance Issue: Malhas Too Many
Performance Issue: Alterações Estado Too Many
Performance Issue: Atualizações Texto Too Many
Performance Issue: Instruções Shader Too Many
Performance Issue: Excesso de preenchimento
Performance Issue: Memória cheia
Performance Issue: Cálculo Python
Performance Issue: Não Garbage Collect
Performance Issue: Desvio sistema de colisão
Performance Issue: Vídeo Integrado Motherboard
Performance Issue: muitos polígonos
Performance Issue: Diversos
Usando CXX
Como compilar um programa CXX Panda3D
Como construir um CXX jogo Panda3D usando o Microsoft Visual Studio 2008
Como compilar um programa CXX Panda3D em Linux
Como compilar um programa CXX Panda3D no Mac OS X
A Janela do Quadro
Texturização em CXX
Contagem de Referência
Panda3D Tools
O Browser Scene Graph
Enhanced Navigation Mouse
Interrogar
Python Editores
SPE
Dicas de Pipeline
Modelo Exportação
Convertendo de 3D Studio Max
Convertendo de Maya
Convertendo de Blender
Convertendo de SoftImage
Convertendo de MilkShape 3D
Convertendo de GMax
Convertendo de outros formatos
Ovo Convertendo para Bam
Análise e geração de arquivos Egg
Ovo de sintaxe
Visualizando modelos 3D em Pview
Construindo um instalador usando packpanda
The Scene Editor
Editor Scene Palestras
Construindo o Panda3D da Fonte
Solução de problemas no Windows ppremake
Solução de problemas ppremake em Linux
Solução de problemas no Windows makepanda
Solução de problemas makepanda em Linux
Tutorial : Compilando o Panda3D Source no Windows
Cheat Sheets
Lista de executáveis Panda3D
Começando em OSX
Mais recursos Panda3D
Licença Info
Project Hosting
O Canal de IRC
FAQ
Parte superior do formulário
Panda3D Basics
Panda3D é um Motor 3D: uma biblioteca de subrotinas para renderização 3D e desenvolvimento de jogos. A biblioteca C + + é um conjunto de ligações Python. Jogo para o desenvolvimento com Panda3D geralmente consiste em escrever um Python ou C + + programa que controla a biblioteca Panda3D .
Panda foi criado para desenvolvimento de jogos comerciais, e seus principais usuários são ainda os desenvolvedores de jogos comerciais. Devido a isso, Panda3D deve enfatizar quatro áreas: poder, velocidade, plenitudeE tolerância de erro. Todo mundo sabe que o poder e velocidade são . Mas a perfeição e tolerância a falhas merecem algum comentário extra.
Integralidade significa que Panda3D contém toneladas de unexciting mas ferramentas essenciais : navegação cena gráfico, monitoramento de desempenho, otimizadores de animação, e assim por diante . Essas coisas não podem ser sexy, e como resultado , os motores de código-fonte aberto , muitas vezes não têm. Mas quando você for sério sobre começar o trabalho feito , e não apenas jogar, essas ferramentas precisam estar lá.
tolerância de erro é sobre o fato de que todos os desenvolvedores de jogos criar bugs. Quando você faz , você quer que seu motor para lhe dar uma mensagem de erro clara e ajudá-lo a encontrar o erro. Também muitos motores só vai funcionar se você passar o valor errado para uma função. Panda3D quase nunca falha , e muito código é dedicado ao problema da localização e isolamento de erros.
Finalmente, para voltar ao poder e velocidade : a melhor maneira de avaliar as capacidades Panda3D é ter um olhar para o Programas de Amostra. Estes são pequenos programas que demonstram uma amostra das capacidades do Panda3D . As telas têm frame -rates no canto superior direito , tomado em uma Radeon X700 .
Panda3D foi desenvolvido pela Disney para seu jogo massivamente multiplayer online , Toontown . Ele foi lançado como software livre em 2002. Panda3D é agora desenvolvido conjuntamente pela Disney e Carnegie Mellon University 's Entertainment Technology Center.
Você pode ler mais sobre Características do Panda3D.
Panda3D não é uma ferramenta novato ou um brinquedo
Para usar com sucesso o Panda3D , você deve ser um bom programador. Se você não sabe o que é uma "API "é, ou se você não sabe o que é uma "árvore" é, provavelmente você vai encontrar Panda3D esmagadora. Este não é o ponto -e-clique Game Maker : esta é uma ferramenta para os profissionais. Embora seja importante a ponto de que fora assim que você precisa ter confiança , é igualmente importante estar ciente de que Panda3D é um dos motores mais fácil e mais poderosa que você nunca vai usar, e congratulamo-nos com a sua participação.
Se você está apenas começando com a programação , sugerimos que a sua melhor opção é começar com uma aula sobre programação. Alternativamente, você poderia tentar ensinar a você mesmo usando uma ferramenta de treinamento como Alice, Também da CMU. Embora na discussão de ferramentas, deve notar-se aqui para referência de que " Scene Editor é uma ferramenta muito útil para a construção de componentes de seu aplicativo panda e se você deseja tentar considerar -los uma vez que você está confortável com o uso de panda , então você pode encontrar informações sobre eles na manaul na seção VIII: H.
Algumas pessoas viram imagens de jogos para crianças escrito em Panda3D , e concluiu que Panda3D é graficamente limitado. Não é assim. Os desenvolvedores de jogos para crianças , muitas vezes optar por não usar shaders ou outros gráficos avançados , porque as crianças muitas vezes próprios computadores mais antigos mão -me-down . Mas Panda3D suporta toda a gama de motores modernos, o que deveria: ele fornece suporte conveniente para o mapeamento normal, gloss mapeamento, HDR , sombreamento cartoon e tinta , flor, e uma série de outras coisas. Ele também permite que você escreva seu próprio shaders , tornando-se capaz de tudo.
As pessoas às vezes têm a impressão equivocada de que Panda3D é escrito em Python , o que tornaria muito lento. Mas Panda3D não está escrito em Python - é escrito em C + +. O python é apenas para execução de scripts , os desenvolvedores escrevem geralmente os bits de alto desempenho, em C + +. Para ver que tipo de framerate um programa Panda3D pequenas normalmente começa, ter um olhar para as imagens do Programas de Amostra. Essas foram tiradas com uma Radeon X700 . Naturalmente, apenas um programa de amostra pode ser executado em 400fps assim, mas , mas para um jogo real, 60fps é bastante viável. Uma ressalva , porém: para obter esse tipo de performance, você precisa entender placas 3D 3D e otimização de desempenho. Isso não acontece automaticamente. Panda3D inclui perfis de ferramentas que você precisa para bater 60fps .
Panda3D Licença de Software
Desde a versão 1.5.3 , Panda3D foi lançado sob o título " Modificado chamada licença BSD , que é uma licença de software livre com muito poucas restrições sobre o uso. Nas versões 1.5.2 e anteriores, ele usou uma licença proprietária , que foi muito semelhante em intenção ao BSD e licenças MIT , embora houvesse alguma discordância sobre a gratuidade de duas das cláusulas. A licença de idade ainda pode ser acessado aqui.
Embora o motor em si é totalmente gratuito , vem com várias bibliotecas de terceiros que não sejam software livre. Alguns deles (como FMOD ) mesmo restringi-lo de usá-lo em jogos comerciais , a menos que você tenha uma cópia licenciada do FMOD . Por essa razão , Panda3D torna mais fácil para desativar ou remover essas bibliotecas thirdparty restrita, e na maioria das vezes ele oferece uma alternativa. Por exemplo , em vez de FMOD também vem com OpenAL que você pode usar em seu lugar.
Você pode ler Licença do Panda3D.
Quem está trabalhando no Panda3D
Há um número de desenvolvedores na comunidade comercial e de código aberto . Atualmente, os dois membros mais ativos da comunidade de desenvolvimento são da Disney e da Entertainment Technology Center da Universidade Carnegie Mellon . Como ambas as organizações têm objetivos específicos, Panda3D deve necessariamente servir tanto :
principal interesse da Disney em Panda3D é comercial. Panda3D está sendo usada no desenvolvimento de uma série de jogos da Disney e exposições do parque de diversões . Para atender às necessidades da Disney, Panda3D deve ser um motor totalmente caracterizado , capaz de todo o desempenho e qualidade que se espera de qualquer " A grade ' título comercial.
O objetivo primário da Entertainment Technology Center é a educação. Para atender as necessidades do Entertainment Technology Center, Panda3D deve ser bem adaptado para uso em projetos de estudantes. Como os alunos têm um talento único para causar acidentes , confiabilidade bulletproof é necessário. Desde projetos de apenas um semestre passado, a curva de aprendizagem deve ser muito curto, e prototipagem deve ser muito rápido.
Como se vê, os dois conjuntos de objetivos são complementares. O rápido desenvolvimento e alta confiabilidade necessária para a Tecnologia Entertainment Center também são altamente vantajosos em um estúdio de desenvolvimento de jogos , uma vez que menor tempo de desenvolvimento e custos. A boa qualidade visual e cheio conjunto de recursos necessários para a Disney para fazer um jogo com qualidade profissional também vir a ser útil em um ambiente universitário : com uma ampla gama de recursos à sua disposição , os alunos podem explorar a sua criatividade de forma mais completa do que poderiam com um motor mais limitado.
A linguagem Python é mais suportada . Embora você pode usar C + + também, a documentação é principalmente destinada a uso Python.
O capítulo introdutório
Este capítulo introdutório do manual é projetado para orientá-lo através de alguns dos fundamentos básicos do uso Panda3D . Este capítulo está estruturado como um tutorial , e não como uma obra de referência .
Compartilhe com seus amigos: |