Soya 3D
1. Présentation
Soya 3D est un moteur 'haut niveau' orienté objet pour Python. On pourrait dire que Soya est à la 3D, ce que python est à la programmation. Soya 3D a pour principale qualité de permettre un développement rapide de jeux ou d'application 3D, le tout en Python.
Soya 3D est simple à apprendre et donne de bonnes performances. Son principal avantage est de mettre à disposition une documentation relativement importante de tutoriaux et d'exemples, facilitant ainsi l'apprentissage.
Soya 3D offre les principales capacités que l'on peut attendre d'un moteur 3D comme la gestion basique de scène, cell-shading, système d'ombrage, système de particule, etc. Ainsi que certaines caractéristiques uniques visant à rendre le développement de jeux plus facile et plus rapide.
Soya est un Logiciel libre sous licence GNU GPL et est écrit en Pyrex ( un mix de C et de Python) et Python.
2. Fonctionnalités
Fonctionnalités implémentées:
- Multi-plateform : Linux / Unix, MacOSX, Windows
- Object model, including camera, light, world, volume,…
- Cell-shading
- Shadows
- Particle systems
- Fullscreen
- Tutorials and demos included
- Trees
- Raypicking
- Landscapes
- 3D character animation (with Cal3D)
- Exportation scripts for Blender, Obj/Mtl, Maya and 3DSmax
- Event management (keyboard, mouse,…)
- Environment mapping
Fonctionnalités spécifiques de Soya (habituellement non présentes dans la plupart des autres moteurs 3D):
- Soya takes care of coordinate system conversion automatically!
- Soya imports Blender models automatically!
- Soya automatically regulate the rendering speed by modifying the animation quality!
- Soya is able to determine automatically which objects are static, and to optimize their rendering! (work in progress)
- Soya's object, including the ones you may create using inheritance, can be saved without writing additional code, using serialization (Pickle or Cerealizer)!
3. Exemple de code
# Imports sys, os modules and the Soya module. import sys, os, os.path, soya # Initializes Soya (creates and displays the 3D window). soya.init() # Add the path "tutorial/data" to the list of soya data path. soya.path.append(os.path.join(os.path.dirname(sys.argv[0]), "data")) # Creates a scene. scene = soya.World() # Loads the sword model (from file "tutorial/data/models/sword.data"). sword_model = soya.Model.get("sword") # Create the model. sword = soya.Body(scene, sword_model) # To view it better, we moves the sword to the right. sword.x = 1.0 # Rotates the sword on the Y axis, of 60.0 degrees. sword.rotate_y(90.0) # Creates a light in the scene. light = soya.Light(scene) light.set_xyz(0.5, 0.0, 2.0) # Creates a camera in the scene camera = soya.Camera(scene) camera.z = 2.0 # Say to Soya that the camera is what we want to be rendered. soya.set_root_widget(camera) # Creates an 'MainLoop' for the scene, and launch it. soya.MainLoop(scene).main_loop()
4. Jeux développé avec Soya 3D
Voir cette adresse : http://home.gna.org/oomadness/en/soya3d/projects_using_soya/index.html !
5. Tutoriaux
Voir cette adresse : http://home.gna.org/oomadness/en/soya3d/tutorials/index.html