URL: https://linuxfr.org/users/jiba/journaux/soya-3d-version-3-arrive-en-images Title: Soya 3D version 3 arrive... (en images !) Authors: Jiba Date: 2014年07月23日T17:05:12+02:00 License: CC By-SA Tags: python, jeux_linux, jeu_libre, bibliothèque, blender, gpl et moteur3d Score: 24 Soya est un moteur 3D pour Python. La première version de Soya a été utilisée dans plusieurs jeux et notamment [Slune](http://www.lesfleursdunormal.fr/static/informatique/old/slune/index_fr.html), [Balazar](http://www.lesfleursdunormal.fr/static/informatique/old/balazar/index_fr.html) et [Balazar Brother](http://www.lesfleursdunormal.fr/static/informatique/old/balazar_brothers/index_fr.html). Plusieurs tentatives de seconde version n’ont pas donné grand chose, principalement faute de temps... Et aujourd’hui, voici venir la version 3 dont les sources sont disponibles sur Bitbucket ! Les nouveautés les plus marquantes sont les suivantes : - Support de **Python 3.4** et **Blender 2.70** - **Vertex shaders et pixel shaders** : Soya divise les shaders en pas moins de 20 ‘mini-shaders’, ce qui permet de modifier une partie spécifique du rendu sans avoir à s’occuper du reste; de plus Soya accepte une **syntaxe pythonique** pour l’écriture de ces shaders ! - **Meilleurs performances** : le processus de rendu a été entièrement réécrit, en utilisant les ‘vertex buffer object’ (VBO) - Antialiasing plein écran (Fullscreen antialiasing) - Licence **GPL v3** Parmi les fonctionnalités habituelles de Soya, on retrouve : l'import automatique des modèles réalisés dans Blender, le rendu de terrain, le cellshading (réimplémenté avec des shaders), les calculs de changements de repère automatique, la régulation automatique du FPS... Voici un exemple de mini-shader permettant de déformer un modèle 3D avec des "vagues" verticales. La déformation se fait dans le système de coordonnées de la caméra, c’est donc un "camera-space deform mini shader" selon la terminologie de Soya. La déformation dépend du paramètre temps (self.time) qui est mis à jour automatiquement par Soya. wavy_mini_shader = soya.MiniShader("wavy", """ uniform float self.time def void cameraspace_deform_mini_shader(): current_vertex.x = current_vertex.x + 0.2 * sin(0.2 * self.time + 3 * current_vertex.y) """) my_body.add_mini_shader(wavy_mini_shader()) ![Mini-shader 'wavy'](http://www.lesfleursdunormal.fr/static/_images/mini_shader.png) Ces mini-shaders permettent de réécrire une étape bien spécifique du rendu, Soya se chargeant ensuite de les rassembler pour créer les vertex et pixel shaders, ainsi que de les compléter avec les morceaux manquants si nécessaires (En effet, OpenGL ne permet normalement pas de réécrire qu’une partie du processus de rendu – soit vous n’y touchez pas, soit vous réécrivez tout !). La série de tutoriels "mini-shader-*" dans les sources de Soya proposent d’autres exemples. Les sources de la version de développement de Soya 3 sont disponibles sur Bitbucket ici pour ceux qui veulent tester : https://bitbucket.org/jibalamy/soya3 Le site oueb de Soya : http://www.lesfleursdunormal.fr/static/informatique/soya3d/index_fr.html Et pour finir, une image d’un projet secret de jeu utilisant Soya 3 : ![Projet secret...!](http://www.lesfleursdunormal.fr/static/_images/bsf/1/9.jpeg) (d'autres images ici : http://www.lesfleursdunormal.fr/static/informatique/soya3d/2014_07_21_projet_secret_fr.html)

AltStyle によって変換されたページ (->オリジナル) /