# Panda3D

Panda3D est un moteur de jeu vidéo libre, créé par Disney Online, désormais maintenu par l'Université Carnegie-Mellon. Il contient différents systèmes (gestions des collisions, système audio...) pour le développement de jeux 3D. Il était utilisé dans la plupart des jeux Disney Online, comme Disney's Toontown Online ou Pirates of the Caribbean Online.
Il a été conçu en C++, mais s'utilise surtout en Python. Son utilisation est entièrement textuelle : il n'existe pas d'outil dédié. Il est libre, mais la modification de la plupart des jeux n'est pas autorisée.

## Développement

Le développement de Panda3D a été initié par Disney VR Studio, une branche de Disney chargée de créer des attractions 3D pour les parcs Disney. Cette branche a développé "Aladdin's Magic Carpet", dont le moteur 3D est devenu Panda3D. Plus tard, au fur et à mesure de l'utilisation et du développement de ce moteur, il fut réécrit pour le MMORPG Disney's Toontown Online.
En 2002, le moteur a été rendu open-source afin « de mieux collaborer avec les universités sur les projets de recherche sur la réalité virtuelle ». Néanmoins, le moteur n'était pas totalement prêt pour l'open-source, il était très complexe et ne possédait que très peu de documentation.
Le fait que le moteur soit open-source a permis à l'Université Carnegie-Mellon de rejoindre son développement. Pendant que les ingénieurs de Disney continuaient de le développer, l'équipe de l'université a écrit la documentation, à inclure certaines technologies et à le préparer pour une utilisation publique.
Le nom de Panda3D était un acronyme au départ : "Platform Agnostic Networked Display Architecture". L'acronyme n'ayant plus aucun sens aujourd'hui, le nom "Panda3D" n'est plus considéré comme un acronyme.

## Design

Panda3D est un moteur basé sur un graphe de scène. Cela veut dire que le monde virtuel est un repère cartésien dans lequel du code insère des modèles 3D. Le moteur ne fait aucune différence entre les "grands" modèles 3D, comme un modèle de lieu entier, et les "petits" modèles 3D, comme un modèle de meuble. Tous les modèles que Panda3D utilise sont créés soit avec un logiciel de modélisation 3D comme Blender, ou de façon textuelle (avec la syntaxe EGG) dans un format spécial, le EGG. Ils sont chargés par le moteur et insérés dans le repère.
La complexité du moteur vient du fait qu'il n'existe aucun outil destiné au développement Panda3D et qu'il possède ses propres formats de fichiers : les modèles sont des EGG, les modèles compressés sont des BAM et les données de jeu (modèles, textures, données additionnelles...) sont des MF. De plus, certains de ces fichiers ne sont pas rétrocompatibles : il existe différentes versions de fichier BAM, qui ne sont lisibles que par certaines versions de Panda3D, qui peuvent être introuvables aujourd'hui.
Il possède aussi divers logiciels supplémentaires afin de faciliter le développement : divers convertisseurs, un outil d'utilisation des MF, un visionneur de modèles, un outil d'empaquetage de jeux ainsi que de nombreux outils pour la création de fichiers EGG.

## Utilisation

Panda3D est publié sous la licence BSD modifiée depuis le 28 mai 2008 et est donc libre.
Toutefois, les versions publiées antérieures à cette date ne sont pas libres. Elles utilisaient une licence propre à Panda3D, qui nécessitait d'envoyer toutes les modifications faites à Disney Online.
Panda3D utilise certaines bibliothèques tierces qui ne sont pas libres, comme FMOD, DirectX ou MFC. Néanmoins, elles ne sont pas indispensables au moteur.