Changer l'environnement

Désormais, vous êtes en mesure de créer des scènes simples en utilisant des objets primitifs. Mais une scène n'est pas seulement composée d'objets. Il y a plus de choses qui font partie d'une scène complète. Certaines d'entre elles vont être décrites maintenant. Ce chapitre est vraiment facile, parce Ultimate 3D fait tout automatiquement. Il vous suffit de lui dire ce que vous voulez.

Eclairage ambiant

L'éclairage ambiant est la lumière présente partout. Si vous regardez autour de vous, dans la pièce où vous êtes vous noterez probablement, qu'il n'y a pas un endroit qui soit totalement sombre. Même si quelque chose n'est pas directement éclairé, il y a toujours suffisamment de lumière pour le rendre un peu clair. Bien entendu tout est en fait éclairé par quelque chose d'autre. Les objets réflechissent la lumière, et c'est ce qui éclaire les objets qui ne sont pas directement éclairés par des sources de lumières. Cependant simuler ce comportement prendrait une terrible quantité de temps de calcul. Pour cette raison, nous utilisons la lumière ambiante.

L'éclairage ambiant est la forme d'éclairage la plus simple que l'on peut imaginer. Tout est éclairé par cette dernière avec la même intensité et la même couleur. C'est pourquoi l'éclairage ambiant est composé d'une seule couleur. Cette couleur peut être modifiée par la fonction suivante:

SetAmbient(
R,
G,
B
)

R, G, B
La nouvelle couleur de la lumière ambiante. Les valeurs de ces paramètres doivent être comprises dans une fourchette allant de 0 à 255.

Par défaut, l'éclairage ambiant est la couleur (128 | 128 | 128). Donc, si vous écrivez SetAmbient(255,0,0) tout s'illuminera en rouge. Si vous écrivez SetAmbient (0,0,0) tous les objets, sauf pour ceux qui ont un matériau émissif deviendront totalement noirs. En changeant la luminosité ambiante, vous pouvez influer fortement sur l'ambiance de votre jeu. Vous pouvez alterner entre le jour et la nuit, ou vous pouvez créer une atmosphère apocalyptique à l'aide de la lumière rouge.

Configuration des images de fond 3D

Une autre chose très importante pour l'atmosphère est l'image de fond (background). Ultimate 3D supporte trois différents types de backgrounds. Actuellement, vous avez utilisé le premier en couleur unie. La couleur de fond peut être modifiée en changeant les valeurs des variables control.BG_r, control.BG_g et control.BG_b. Vous pouvez leur donner des valeurs comprises dans la fourchette allant de 0 à 255.

Le deuxième type d'image de fond est appelé skysphere. Dans ce cas, vous avez une image 2D qui contient une image 360° de l'environnement. Cette image est utilisée comme la texture d'une sphère qui entoure la scène. L'inconvénient des skysphere est que vous obtenez d'étranges distorsions dans la partie supérieure. Tous les degrés de latitude se rencontrent en un point. Ce n'est pas très joli. Mais dans la plupart des jeux il n'est généralement pas nécessaire de regarder tout droit verticalement. Donc, la plupart du temps les skyspheres sont utiles quand même.

Mais qu'en est-il des jeux où le fond est bon à regarder dans toutes les directions? Le meilleur exemple en ce sens est un space shooter. Des mots tels qu'en haut ou en bas n'ont pas de signification dans l'espace. Pour les cas comme celui-ci, Ultimate 3D supporte un autre type de fond qui ne conduit pas à des distorsions: un skycube. Un skycube n'est pas composé d'une image 2D, mais de six images du second degré qui se mettent ensemble dans un cube. Comme dans la sphère, le cube entoure la scène entière. Créer les images nécessaires aux skycubes est plus difficile que de créer des cartes sphèriques. Toutefois les résultats n'en sont que meilleurs.

Maintenant que vous savez quels types de backgrounds sont supportés, passons à la réalisation pratique. Il n'y a qu'une seule fonction pour charger des backgrounds:

Cette fonction charge soit une sphère map ou six textures pour une cube map en fonction du paramètre donné.

LoadBackground(
File
)

File
Vous devez saisir une chaîne pour ce paramètre. Si la chaîne contient seulement un nom de fichier, ce fichier sera chargé et utilisé comme texture pour le ciel-sphère. Si le fichier contient le signe * dans sa chaîne de caractères, ce signe sera remplacé par la mention "Front", "Back", "Top", "Bottom", "Left" et "Right". Donc Ultimate 3D charge six différents fichiers. Ils seront utilisés pour un skycube.

Si vous ne voulez plus utiliser un fond, vous pouvez appeler UnloadBackground(). Suite à quoi, la couleur unie sera à nouveau utilisée.

Configuration du brouillard

Un épais brouillard est rare dans la plupart des régions du monde. Dans les jeux sur ordinateur, il se produit plus souvent. Mais en réalité, il y a presque toujours un peu de brouillard. Les jours de pluie tout ce qui est loin devient gris et incolore. Les très chaudes soirées, tout ce qui est loin a un ton orangé très foncé. Ainsi, vous pouvez presque toujours utiliser le brouillard, il semble généralement assez sympa. Il participe à l'impression d'une réelle profondeur. Cependant, utiliser trop de brouillard fera penser aux gens que vous ne pouviez pas offrir une plus grande portée visuelle. Dans certains cas, cela peut effectivement être le cas. Dans ce cas, le brouillard est le moindre des deux maux. C'est toujours mieux que de voir tout le décors simplement disparaître lorsque celui-ci est trop éloigné de la caméra.

Configurer le brouillard n'est pas plus difficile que de créer une image de fond. Il y a une fonction pour l'activer et une pour le désactiver. Voici celle qui l'active:

SetFog(
R,
G,
B,
StartDistance,
EndDistance
)

R, G, B
La couleur du brouillard. Les valeurs de ces variables doivent être comprises dans une fourchette allant de 0 à 255.

StartDistance, EndDistance
Les valeurs de la distance du brouillard. Tout ce qui est plus proche de la caméra que StartDistance ne sera pas influencé par le brouillard. Tout ce qui est plus éloigné de la caméra que EndDistance aura la couleur du brouillard. Ultimate 3d interpolera linéairement tous les éléments présents entre ces valeurs.

Si vous voulez désactiver le brouillard, appelez simplement DisableFog().



© Christoph Peters. Certains droits réservés. (Traduction FR 04/2008, Franck Vernel / Damien Buhl).

Creative Commons License XHTML 1.0 Transitional