Eine freie 3D Engine mit vielen Features mit Python und C++ Bindings.
Die Engine wird/wurde unter anderem von Disney benutzt und mitentwickelt.
Produkte die Panda3D nutzen:
- Disney's Toontown
- Disney's Pirates of the Caribbean Online
- SimOps Studios: Code3D
- MSA's Thermal Enforcer
- Little Mermaid Pinball, Aladdin Pinball, and Pirates Pinball
Freie Softwareprojekte die Panda3D verwenden:
- Angels Fall First: Second Antarean War
- La Granja de Los Poderosos
- HeartSeed
- Herdelia
- Vikings
- Limit Load
Features
Shader Generation
Many advanced rendering techniques now fully automatic:
- Special Maps: Normal Map, Gloss Map, Glow Map
- HDR Rendering: Tone Mapping, Bloom Filter
- Cel Shading: Threshold Lighting, Inking
- More to come
Performance Monitoring
Powerful performance monitoring and optimization tools:
- Identifies bottlenecks, both CPU and GPU
- CPU time use decomposed into more than 250 categories
- Counts meshes, polygons, textures, transforms, state changes, etc
- Allows user-defined CPU-usage categories
- Tools for batching and state-change minimization
- Tools to merge textures and minimize texture switches
Full Python Integration
Automatically-generated wrappers expose full functionality of the engine.
- Highly optimized: all core functionality in C++
- Thoroughly-tested: two commercial MMOs in Python
- Panda3D structures garbage collected when using Python
- Manual and sample programs use Python
Just Works, Right out of the Box
No-hassle install:
- Convenient installer packages for Windows, Mac OSX and Linux
- Only one external dependency: working graphics driver
- Sample programs run right out of Start Menu
- No compilation step needed
Exposes Full Power of Graphics API
Modern OpenGL/DirectX features exposed directly to Panda3D user:
- High-level shader language: Cg
- Powerful interface between shaders and engine
- Support for render-to-texture
- Use of depth/shadow/stencil textures
Debugging Tools
Heavy emphasis on error tolerance and debuggable code:
- Extreme resistance to crashing, even when errors are made
- More than 5000 assertion-checks to catch errors early
- Reference-counted data structures minimize memory leaks
- Many tools to examine internal state (one shown here)
Mature, Complete System
Mature system used to deliver several commercial games.
Contains everything you need, not just the "sexy" stuff:
- Converters for older file formats
- Font file importers
- Tool to package games into redistributables
- Means to pack art assets into encrypted bundles
- Lots of other boring but essential stuff
Die Installation
Als dependencies werden benötigt (mit Debian default install):
- python-dev (version 2.6)
- libosmesa-dev
Desweiteren benötigt man ggf noch weitere Pakete für spezielle Zwecke (zb Video abspielen mit der Engine usw)
Siehe: http://www.panda3d.org/manual/index.php/Dependencies
Dann kann man sich das source Paket auf der Homepage runterladen und entpacken.
wget http://www.panda3d.org/download/panda3d-1.7.0/panda3d-1.7.0.tar.gz tar xzvf panda3d-1.7.0.tar.gz cd panda3d-1.7.0
Gebaut wird mit:
makepanda/makepanda.py --everything --installer
Man erhällt ein .deb das man einfach installieren kann.
dpkg -i panda3d_1.7.0_*.deb
Testen der install
Gehe in den samples Ordner im source Verzeichnis und starte ein Beispiel mit "python Tut........."
Wenns funktioniert kann man mit dem coden loslegen.
cd samples/Ball-in-Maze python Tut-Ball-in-Maze.py
Einfache Heightmap ;-)
Man braucht nur ein grayscale image in 8*x+1 Größe und ein Bild was man als Textur drüber legen will.
from direct.showbase.ShowBase import ShowBase from panda3d.core import GeoMipTerrain p3dApp = ShowBase() terrain = GeoMipTerrain("mySimpleTerrain") terrain.setHeightfield("map.png") #terrain.setBruteforce(True) # Set terrain properties terrain.setBlockSize(32) terrain.setNear(40) terrain.setFar(100) terrain.setFocalPoint(base.camera) # Store the root NodePath for convenience root = terrain.getRoot() root.reparentTo(render) # Set the "bumpmap" value higher means bigger mountains root.setSz(50) #Texture terrain.setColorMap("color.png") # Generate it. terrain.generate() # Add a task to keep updating the terrain (not needed if there is no change) def updateTask(task): terrain.update() return task.cont taskMgr.add(updateTask, "update") p3dApp.run()
3D --> Blender
Eine 3D Engine am laufen zu haben ist nur die halbe Miete, man braucht auch noch eine 3D Welt die man dann programietechnisch verändert und manipulieren kann. Was wäre da besser geeignet als Blender, DIE 3d Modelsoftware unter Linux.
Panda3D verwendet ein eigenes Dateiformat um die Modelle von Blender und die Textur und collisionen und Bone Daten zu speichern: .egg
Um seine Blender Modelle in egg zu exportieren brauch man wie in der realen welt ein Huhn was einem das Ei legt.
Chicken ist ein Blender Plugin welches einem sehr einfach .eggs generieren lässt.
- Anmelden oder Registrieren um Kommentare zu schreiben
- 7429 Aufrufe