Environnement dans le BGE : Jour/nuit, Feu, Pluie, Eau

Posté par cray le 28/1/2009 14:17:46
j'espère que ce fil de discussion pourra servir de ressource

Bonjour,

je cherche à rassembler des informations liées à la création d'un environnement vivant (pluie, jour/nuit, saisons, feu) et des méthodes pour les implémenter dans un jeu.
J'ai cherché longtemps sans trouver d'informations précises, je souhaiterais donc rassembler les différentes méthodes qui existent ici, partager des liens que j'ai trouvés.

Si certains peuvent nous faire part de leur méthode, ce serait très instructif pour chacun d'entre nous. Merci!


..................................................

LE FEU


Particules : feu/flame/fumée

1. Basic


Proposé par Sioux
BLEND

Proposé par Granarc
BLEND

2. Flamme de bougie


Proposé par Granarc
BLEND

Proposé par Sioux
BLEND


3. Feu


Proposé par Granarc
BLEND

Proposé par Sioux
BLEND


4. Feu avec fumée


Proposé par Granarc
BLEND




..................................................

LES NUAGES
Proposé par Granarc
Pour les nuages, il ne faut pas les modéliser, une simple skybox suffit (à moins qu'ils soient très près du sol).

SKYBOX
Proposé par Blob4
Pour les skyboxes, l'excellentissime Mike Pan (encore lui) offre une magnifique collection de textures en haute résolution :

Lien
"these high resolution sky boxes can be used for any non-commercial purposes with or without credit."
Note : Ne semblent pas accessibles actuellement

Autres liens
Free high res skymaps

Skymaps, TutorialsforBlender3d



..................................................

JOUR/NUIT

Ressources
Videos : Video 1


Méthode 1 : Plan en alpha - Ipo

Proposé par Granarc
Il y a un plan devant la caméra (qu'il faut parenter si la caméra bouge). J'ai créé une simple courbe IPO sur l'alpha qui représente l'évolution de la lumière selon les heures. La frame correspondante à l'heure (que l'on peut changer dans cette démo avec la flèche du haut) est chargée, et donc on a de moins en moins de transparence (donc de plus en plus de lumière car le plan est noir).

A faire :
- une anim plus longue pour une meilleure transition
- gérer aussi les couleurs du plan pour plus de réalisme (bleu la nuit, jaune à midi, et plus ou moins rose le matin)

BLEND


Méthode 2 : Courbes Ipo sur les lampes

Proposé par Monster_Kill
Le contenu est simple : Vous avez une structure simple qui reçoit la lumière, puis une lampe servant de source lumineuse. Lorsque vous allez sur le panneau Lamp Buttons après avoir sélectionné la lampe. Vous avez un paramètre permettant de régler l'énergie de la lampe.

Dans le blend d'exemple, à la frame 1 j'ai mis l'énergie à 1.0 puis j'ai entré une clé d'animation en utilisant la touche "i" SACHANT QUE LE POINTEUR DE VOTRE SOURIS DOIT ETRE DANS LA ZONE DES BOUTONS (et non pas dans la fenêtre 3D) puis "Energy". A la frame 30 j'ai mis l'énergie à 0.0 puis validé en insérant une clé.

Ensuite, je suis allé sur le panneau Logic toujours sur la lampe et me suis arrangé pour que l'animation joue un effet jour/nuit comme demandé.

BLEND


Méthode 3 : script Python
Proposé par Granarc
La méthode de Mk pour le jour/nuit est, je pense, largement suffisante. Après, voilà deux solutions pour faire changer la lampe en fonction de l'heure (pour pouvoir par exemple reprendre au moment exact où on s'est arrêté) :
- faire une animation d'au moins 24 étapes et contrôler l'avancement avec un Actuator IPO en Property
- changer dynamiquement l'énergie et la couleur de la lampe en Python (voir la doc)

Bien sûr, ça peut être optimisé, parce que l'éclairage par lampe peut consommer beaucoup pour un grand terrain (c'est recalculé à chaque frame je crois).
Donc le truc ça serait de baker les ombres sur les Vertex Colors (voir tuto de l'île dans le BAM #7) puis de faire une genre de texture masque en niveau de gris sur tous les objets, ou pourquoi pas même directement sur la caméra. (edit: je viens de trouver cette vidéo qui peut être intéressante)

Enfin bon, à cogiter


Autre suggestion
Proposé par _tibo_
Chercher une solution du côté de l'Actuator 2D Filter Sepia.
Il faut utiliser un filtre de type "Custom", associé à un script Python. Je ne connais pas du tout le scripting pour ce genre de truc, mais en modifiant des scripts trouvés sur le net ("Blender custom 2d filter") on peut avoir de bons résultats.
Je ne parlais pas de modifier dynamiquement le filtre. A vrai dire, j'ignore si c'est possible ? Je parlais d'utiliser plusieurs filtres différents : un pour le jour, un pour la nuit. Ou un pour chaque saison.





..................................................

LA PLUIE



Ressources
- Discussion sur BlenderArtists

Deux solutions différentes

Méthode 1 : Plans en alpha

A-Edge


Méthode 2 : Les gouttes sont modélisées et indépendantes

Killer

Avis
Cray
La première solution semble bien moins gourmande, mais la deuxième donne accès à certaines interactions intéressantes (gouttes qui s'éclatent sur une pierre, qui s'éclatent différemment selon les matières qu'elles rencontrent, qui créent des ondes dans l'eau, qui viendraient remplir un conteneur, etc...).

..................................................

LA NEIGE

Voir solutions proposées pour la pluie ou les feuilles.

Ressources
- Suggestion de Granarc :
Pour la neige qui s'accumule c'est peut-être faisable avec des textures Stencil




..................................................

LES FEUILLES

Méthode 1 : Empty qui sert d'emitter
Proposée par Granarc



Mise à jour 12/02/09

- maintenant les feuilles se posent et s'entassent.
- Petite optimisation proposée par ebrain, les feuilles sont maintenant remplacées par des feuilles à 1 face une fois au sol.
Explication : les feuilles ont toujours 6 faces pour la collision, mais elles sont désormais remplacées par des feuilles identiques à 1 face, car une fois au sol, elles n'ont plus besoin de gérer la collision

BLEND



07/02/09
- les feuilles ne bougent plus avec une IPO (trop lourd à mettre en place) mais tombent naturellement en Dynamic avec une rotation permanente (le paramètre AngV de l'actuator Add Object) combinée à une Force ; cela permet d'avoir une rotation plus ou moins en forme de spirale
- le centre des feuilles est placé sur le bord pour plus de réalisme
- le script de création des feuilles est désormais plus souple, car il s'adapte à la forme de n'importe quel objet. Pour cela, je me base sur la position d'un vertice pris au hasard, ainsi les feuilles tomberont toujours de la branche Par souci de réalisme, je donne également une orientation aléatoire à chaque feuille lors de leur création.




..................................................

LE VENT

Soft bodies oui.
Ipo? (limite la complexité des animations mais allège le tout je pense?)
Bones?



..................................................

LE BROUILLARD


Ressources
Proposé par Granarc
Nodes / GLSL / Mist Multicolore [Yo Frankie]

Proposé par Blob4
Mike Pan a un exemple sympa de fog en realtime :

http://www.archive.org/download/mikepanblendergameenginedemo_0/gt4f_packed.blend

Miroir

Son site : http://mikepan.homeip.net/

Suggestions

Proposé par Cray
En accédant au Mist avec Python je crois que c'est assez simple.
Je ne sais pas si c'est lourd ou pas, car je n'ai fait que des essais basiques.
Et comme Granarc l'a dit, c'est aussi possible avec les nodes (avec un contrôle plus simple des couleurs plus ou moins éloignées).
Il y a aussi une autre video avec Suzanne, à propos du LOD.


..................................................

LES SAISONS


Suggestion
Cray
J'imagine que la méthode utilisée doit être semblable à 'jour/nuit', en remplaçant certains mesh (arbres fleuris au printemps, pierres enneigées en hiver).



..................................................

REFLEXION, REFRACTION EN TEMPS REEL


Suggestion
Proposée par Blendman
Il faut utiliser le module VideoTexture.
Vosu trouverez une compilation sur graphicall.org qui fonctionne nickel :

http://www.graphicall.org/builds/builds/showbuild.php?action=show&id=890
C'est la svn 17735

Discussions sur BlenderArtists
Video Texture player
Mirror and Water Reflection (Reflective, Wrap and GLSL water now)

utile pour créer :
- des miroirs
- de l'eau (en mouvement)
- des effets (flou sur une partie de l'image)
- lire une vidéo (TV, écran, ou cinématique entre les scène du jeu par exemple, etc...)
- et d'autres choses bien sûr






Suggestion
Proposée par Cray

Vu dans la section 'Screenshot Extra! Extra! sur BA.

slukas a proposé deux captures d'écran :

Test de réflexion/réfraction d'après les recherches de vitorbalbio
Framerate au maximum

(Cliquez pour agrandir)

Sans ralentissement avec le DOF shader de Mike Pan à droite.


..................................................
MOTION BLUR




Suggestion
Proposée par Blendman
All kinds of Blur - Killer



..................................................
EXPLOSIONS

Proposé par EmpereurBlend
Le hic est que la technique employée ne gère que les alpha, et je ne sais pas comment convertir une couleur dans une vidéeo en alpha (il doit exister des logiciels, si vous savez ... ).

Si ça ne prend pas trop de place, on peut faire aussi avec tout ce qui est effondrements, intempéries et autre effets...

LIEN

Note
Pour la faire marcher vous devez avoir ça :
http://www.graphicall.org/builds/builds/showbuild.php?action=show&id=890



Proposé par Granarc


Pour les explosions et autres gerbes d'eau (splash !), la technique utilisée dans YoFrankie marche très bien
LIEN


..................................................

Pour ceux qui voudraient participer, les solutions à base de Python sont préférées car elles permettent plus de clarté et de flexibilité à mes yeux.

J'espère que les plus expérimentés partageront leurs méthodes et que ce fil de discussion sera une ressource basique mais instructive.

Merci!

Cette contribution était de : http://blenderclan.tuxfamily.org/html/newbb/viewtopic.php?forum=3&topic_id=17882&post_id=222724