[Débutants] Créer un environnement spatial avec Godot Engine 3

Répondre
Avatar du membre
keltwookie
Admin du site
Messages : 80
Enregistré le : mer. avr. 04, 2018 5:42 pm
Localisation : Kashyyyk
Contact :

[Débutants] Créer un environnement spatial avec Godot Engine 3

Message par keltwookie » jeu. avr. 05, 2018 4:22 pm

Avertissement : Cette série de tutoriels est prévu principalement pour les débutants. Les utilisateurs plus avancés pourrait s’ennuyer .


Ce qui suit étant supposé être la suite d’une série de tutoriels en cours pour Blender (dispo ici), les textures des éléments/objets auront donc été souvent réalisés de manière procédurales avec des shaders Cycles.

Quelques explications :
Excepté pour l'arrière-plan, il faudra différentes maps pour intégrer les couleurs dans Godot, l’import/export de shaders depuis Cycles n’est pas possible pour l’instant (peut être prévu pour de futures versions, voir le paragraphe Roadmap changes ici), mais il possible de contourner cela. Je m’explique : Si Blender n’exporte pas vers Godot, pas grave, Godot fera les manips nécessaires. Mais pour que Godot puisse se débrouiller tout seul, on doit d’abord pré-calculer (eng=bake) les maps une par une dans Blender, et ce sont les images obtenues (diffuse map, normal map, etc.) qui seront exportées vers Godot en tant que textures.
On pourrait se dire que finalement tout cet article et cet engouement pourrait ne servir à rien. Nous n’avons que des images qui seront chargées dans Godot, et non des shaders. Ceci bien sûr, si on veut toujours privilégier l’utilisation de ceux-ci.
Oui… Mais non : En effet, une particularité intéressante de Godot est de savoir transformer des Spatial Materials (les images) en Shader Materials de manière complètement automatique et ce, d’un simple clic (j’en reparlerai plus tard) ! D’après les premiers essais effectués et en ayant sauvegardé les 2 versions des matériaux, il apparaît que ces deux versions des matériaux/ressources sont identiques à l’écran, le bonus, c’est que l’un comme l’autre restent éditables au sein de Godot, donc, avec un peu de pratique et en sachant manipuler les nombreuses options, il est raisonnable de penser qu’on pourrait parfaitement reproduire les rendus des shaders Cycles, de plus, et d’après ce que j’ai pu en voir quand j’ai survolé une première fois les paramètres d’édition, les effets d’éblouissement, flou, etc... apparaîtraient eux aussi parfaitement reproductibles dans ces paramètres au sein de Godot.

Voilà pour les explications générales.
Maintenant, passons aux détails de la méthode que j’ai utilisé :

Import dans Godot :

Note: Si vous n'avez pas de fichier *.exr déjà préparé, voir ici :
Astuce Blender : Réaliser et utiliser une HDRI comme arrière plan.



Ouvrez Godot et créer un nouveau projet (ou éditez votre projet en cours si nécessaire), puis :
1) Ajouter un nœud WoldEnvironment
2) Dans l’inspecteur, créer un nouvel environnement
Image
3) Sélectionner Modifier
4) Aller dans Background → Mode, puis sélectionner « Sky »
5) Dans Sky, sélectionner : Nouveau PanoramaSky
6) Sélectionner Modifier
Image
7) Glisser-déposer le fichier *.exr précédemment créé (que l’on aura prit soin, bien sûr, de replacer auparavant dans l’espace de travail du projet) vers le champ marqué <null>
Image
Sauvegarder la ressource ainsi que la scène pour finir.
C’est fait !

8 ) Si le rendu paraît trop clair, on peut facilement modifier les paramètres de contraste et de brillance :
Revenir dans le panneau d’édition de la ressource puis « Adjustement » → Activer, et modifier les paramètres désiré, les changements apparaîtront en temps réels dans le viewport .
Note: Pour une liste détaillée des options disponibles, voir Environment and Post-Processing dans la documentation Godot. Ne pas oublier de sauvegarder la ressource ainsi que la scène après toute modification.
Image
A Suivre : Importation des objets et de leurs textures
- Le projet"XPlore"
- Tutos Blender
- Tutos Godot Game Engine

“ L'artiste est un malade qui essaie de se soigner en créant, mais plus il se soigne, plus il est malade. Et plus il est malade, plus il est content, vu qu'il n'a aucune envie de guérir." Philippe Geluck

Avatar du membre
keltwookie
Admin du site
Messages : 80
Enregistré le : mer. avr. 04, 2018 5:42 pm
Localisation : Kashyyyk
Contact :

Re: [Débutants] Créer un environnement spatial avec Godot Engine 3

Message par keltwookie » jeu. avr. 05, 2018 4:28 pm

Export → Pré-calculer les textures :

Comme précisé dans l’introduction de ce tutoriel, les exports des shaders Cycles ne sont pas possibles depuis Blender vers Godot pour l’instant. Mais il y a tout de même un moyen de « traduire » ces mêmes shaders pour que Godot les intègre, voici comment j’ai procédé :

Tout d’abord, il faut donc pré-calculer (eng= bake) les textures. Pour ce faire, j’ai partiellement utilisé la méthode décrite par Aidi Burrows de CG Masters :
https://youtu.be/ut-KYKbnj8A

En voici la traduction pour les non-anglophiles :

Dans ce tutoriel vidéo, il y est dit que l’utilisation d’une image pré-calculé permet de réduire le temps de rendu sur Blender. Aidi indique que l’on passerait de 5mn + 20 secondes à 1mn + 25 secondes dans son cas pour un rendu. C’est déjà considérable pour un objet peu élaboré comme une planète, alors imaginons un peu le gain sur un maillage plus complexe !
Comme référence, je vais utiliser le soleil créé ici.

1) Pour adopter un espace de travail confortable, partager son écran comme ceci :
Image
Donc :
viewport du haut : Vue 3D
Viewport en bas à gauche : Editeur de nœuds
Viewport en bas à droite : Editeur_UV/Image

2) Créer une nouvelle image que l’on nommera « yellow.sun.bake » avec une résolution de 2048 x
2048.
Image
Valider puis dans l’éditeur de nœuds :

3) Maj + A → Texture → Texture image . Puis sélectionner notre image précédemment créée :
Image
4) Sélectionner l’objet et passer en mode édition
5) Presser « U » et sélectionner « UV-projection intelligente »
Image
6) Une fois fait, sélectionner l’onglet « Rendu », bien vérifier les paramètres de rendu (principalement « Sortie » et « Performances ») puis faire défiler jusqu’aux paramètres de pré-calculation.
7) Cliquer sur « Pré-calculer »
Note : l’opération peut être longue selon les paramètres de rendu choisis et selon la puissance de calcul de la machine. Une barre de progression nommée « Texture bake »en haut de l’interface Blender indiquera le temps restant.
Image
8 ) Enregistrer l’image - ici : yellow.sun.bake_diffuse. En effet, cette première texture sera utilisée comme texture diffuse dans Godot.
Image
9) Maintenant, dans l’éditeur de nœuds, ajouter une autre Texture image ( Maj + A → Texture →Texture image), charger la texture diffuse nouvellement créée. Puis :
10) Maj + A → Shader → BSDF diffus
11) Relier à la sortie de matériau
Image
On peut constater à l’écran que les couleurs et la texture Voronoï utilisés pour le shader de cette étoile sont présentes. Evidemment, le shader d’émission en est absent, mais celui-ci est parfaitement reproductible dans le moteur de jeu .

L’export proprement dit:

Pour mes premiers essais, j’avais opté pour l’export en *.obj + *.mtl, mais cela ne fonctionnait pas et j’ai utilisé le format *.dae.
Il faudra donc télécharger puis installer Better Collada dans Blender depuis Github. En effet, l’exporteur Collada proposé par défaut dans Blender ne fonctionnerait pas comme il se doit.

Installation :

1. Copier le dossier io_scene_dae vers l’endroit ou Blender stocke les scripts/addons sur votre système (vous devriez voir d’autres répertoires io_scene_ correspondants à d’autres addons). Copiez le répertoire en entier et non juste son contenu
2. Allez dans les préférences utilisateur de Blender, puis dans l’onglet add-ons puis activer le plugin « Better Collada Exporter ».
3. (optionel) Copiez le script godot_export_manager.py dans le dossier scripts/addons de votre système.

Maintenant que le plugin est activé, exporter le mesh et la texture vers un fichier *.dae:
Image
Image

Import dans Godot :

Replacer le fichier *.dae obtenu dans le répertoire du projet Godot en cours ainsi que la texture diffuse précédemment créée (yellow.sun.bake_diffuse.png dans le cas présent).
Ouvrir le projet, puis charger la scène à éditer
Note : Pour plus de clarification , j’ai créé des répertoires supplémentaires (absents dans le premier chapitre) dans le dossier du projet.

On devrait obtenir quelque chose comme ceci à l’écran :
Image
Plutôt que de laisser des fichiers *.dae et *.material, nous allons ré-importer le maillage afin d’alléger le nombre de fichiers présents, ce qui normalement et au fur et à mesure, devrait alléger l’ensemble du projet :

1) Sélectionner le fichier *.dae dans le panneau des ressources
2) Cliquer sur l’’onglet « Importer »
3) Renommer éventuellement
4) Dans la partie « Meshes », aller à « Storage » et sélectionner « Files »
5) Cliquer sur Ré-importer
Image
6) Glisser – déposer le fichier *.mesh obtenu dans le viewport à l’endroit désiré, Un nouveau nœud « MeshInstance » sera automatiquement créé
Note : Ici, le fichier *.mesh est nommé Icosphère.01 car c’est effectivement son nom de maillage dans Blender. On peut bien sûr renommer tout cela sans problème (clic droit ou double clic gauche)
Image
Maintenant, on peut tout à fait effacer les fichiers *.dae et *.material ainsi que les fichiers *.import correspondant (s’il en existe encore) dans le répertoire du projet. Et par la même occasion, on peut renommer les fichiers pour plus de clarté.

7) Aller dans l’inspecteur (en bas à droite) → Material, puis sélectionner « Nouveau SpatialMaterial »
8 ) Sélectionner « Modifier »
Image
9) Glisser-déposer la texture diffuse (ici : yellow sun_diffuse.png) dans le champ marqué « null » dans la partie « Albedo »
Image
10) Puis dans l’inspecteur, remonter vers « Flags » et activer « Unshaded »
Image
Enregistrer cette nouvelle ressource comme fichier *.material et sauvegarder la scène. Voilà pour l’import !

Conversion en ShaderMaterial :

Rien de plus simple :

1) Revenir vers l’édition du « MeshInstance » (cliquer simplement sur le nœud dans le dock « Scene »)
2) Aller à « Material » puis sélectionner « Convertir en ShaderMaterial »
Image
Nous avons maintenant un nouveau shader comme materiau, oui, c’est bien, mais comment l’éditer ?

3) Sélectionner « Modifier »
4) Sélectionner « Modifier »
Image
Image
Sauvegarder cette nouvelle ressource en fichier *.shader.
Quant à l’édition de shaders elle-même, cela fera peut être l’objet d’un autre tuto (mais aucune promesse à ce sujet).
Bien sûr, toute la procédure sera à répéter pour chaque objet ajouté.

Version PDF téléchargeable
- Le projet"XPlore"
- Tutos Blender
- Tutos Godot Game Engine

“ L'artiste est un malade qui essaie de se soigner en créant, mais plus il se soigne, plus il est malade. Et plus il est malade, plus il est content, vu qu'il n'a aucune envie de guérir." Philippe Geluck

Répondre