Dernière mise à jour : 22/06/2017 à 15h37

Current Project : ...

Index des tutoriaux

Skybox

Actuellement, mon Terrain est parfait, texturé, modelé, et mes lacs sont réalistes et peaufinés à 100%. Mais il reste un énorme défaut à ma map : là où devrait se trouver le ciel, se trouve cette horrible texture bleu et blanche marquée "SKY". Impossible de jouer là dessus où de faire croire que ma map a été prévu pour cela. Il faut donc créer un ciel réaliste.

Certains, j'en suis sur, se contenteraient de mettre des textures de ciel sur les faces du grand cube et de considérer la map comme finie. Mais cela ne marcherais pas. Laissez-moi-vous expliquer.

Lorsque vous vous promenez à pied et que vous regardez le ciel, vous avez l'impression que le ciel vous "suis" : en effet, la grande distance donne l'air immobile aux nuages et au soleil. Bien entendu, il est impossible, en appliquant simplement une texture sur une surface, de donner cet effet. Il va falloir faire appel à un procédé simple mais très efficace et assez spécial : la Skybox.

Créer le ciel

La Skybox est quelque chose de très simple : c'est une petite boite texturée avec des textures de ciel photoréaliste, et au milieu duquel on place un actor appelé "skyzoneinfo". Cet actor agit comme une sorte de camera avec un angle de 360°. Ce qui est vu par la Skybox est retransmis sur les surfaces que nous définissons en modifiant une de leur propriété.

Commençons par créer la Skybox : soustrayons un cube de 256*512*512 à l'écart de votre terrain. Attention, ce cube ne doit être en contact avec aucun autre brush de la map.
Note : Ceux qui font un ciel pour agrémenter un terrain seront certainement effrayé de voir leur terrain disparaitre aussitôt le cube soustrait, qu'ils ne s'inquiète pas, c'est un bug normal de l'éditeur, et il suffit de rebuilder pour le faire revenir comme il était avant.

Soustraction de la skybox

Maintenant, il va falloir texturer ce ciel. Il y a des textures photorealistes dans le package SkyRender.utx.

Il y a moyens de prendre une texture pour chaque surface, de les appliquer, de les mettre à la bonne taille et puis basta, mais je vais vous montrer comment faire quelque chose de plus complexe.

Comme je veux qu'il ne fasse pas beau sur ma carte. Aussi, je vais appliquer sur le "plafond" de ma Skybox, une texture tirée du package "skyline-epic". Elle n'est pas très nuageuse, mais elle me permettra de mettre un soleil assez puissant tout en ayant un temps de chien. Sur les autres faces du cube, je vais placer une texture entièrement blanche car ces faces ne seront pas visibles vu que je vais mettre des Static-Mesh ronds qui ne laisseront voir que le haut de la Skybox. Je vais donc utiliser la texture "white" du group "solidcolours" du package Ucgeneric.

Textures de base de la skybox

Maintenant, je vais placer des Static-Mesh que certains mappers appellent des "fogring", littéralement, anneau de brouillard. Ces Static-Mesh cylindriques portent en général une texture unie qui devient peu à peu transparente vers le haut. Cela permet de donner l'impression d'un horizon noyé dans le brouillard ou les nuages.

Pour faire cela, je vais cherche un Static-Mesh placé dans le package "skyline-meshes-epic", group "skyeffects", et qui se nomme "skyline-skyringero".

Un FogRing

Je le place dans ma Skybox, au centre. Puis, je place ma camera au milieu et je regarde vers le haut :

Effet actuel de la skybox

Comme on le voit, le fog ring permet de dissimuler les cotés blancs disgracieux. Je vais placer une deuxième fog ring moins large à l'intérieur de l'actuelle fog ring, et lui assigner une texture de temps encore pluvieux, afin de donner une meilleure impression. Pour cela, je vais commencer par dupliquer ma fog ring et lui assigner la texture que je veux (qui se trouve dans le groupe "sky" du package "cp_Wasteland").

Une deuxième FogRing avec une autre texture

Maintenant, je vais réduire sa taille grâce aux trois cases "drawscale 3d" situées dans le coin inferieur droit de l'écran d'UnrealEd. Elles sont par défaut à 1, ce qui signifie que si vous entrez 0.5 dans les trois cases, votre Static-Mesh n'aura plus qu'une taille de 50%. Je vais entrer 0.75, 0.75 et 0.5 pour que mon fog ring ne mesure que les trois quarts de sa taille en largeur et en longueur, mais seulement la moitié en hauteur. Puis, je place ce fog ring au milieu de l'autre dans mon cube :

Composition de la skybox avec deux FogRings

Inutile de s'occuper du bas de la Skybox, vu que les joueurs seront sur le terrain, ils ne pourront pas voir ce qui se trouve tout en bas, seulement sur les cotés et le haut.

Pour que votre Skybox fonctionne, il y a encore deux choses à faire. La première est de sélectionner les faces de votre grand cube (celui dans lequel se trouve le terrain), et dans les propriétés des surfaces, onglet "flags", cochez la case "Fake Backdrop". Ainsi le moteur saura sur quelles surfaces projeter la Skybox :

FakeBackdrop

Il ne reste plus qu'à faire le plus important qui est aussi le plus simple : placer l'actor qui servira de camera. Dans l'actor browser, cliquez sur le petit "+" à coté de "info", puis sur celui à coté de "zoneinfo", et sélectionnez "Skyzoneinfo" :

Positionnement de la SkyZoneInfo dans l'actor browser

Placez cet actor (qui ressemble à s'y méprendre à une Zoneinfo) au milieu de votre Skybox :

Skybox complète

Rebuildez, puis, dans votre vue 3d, cliquez sur la barre grise au dessus de la fenêtre, et dans "view", cliquez sur "show Backdrop", ou appuyez sur K pour voir le résultat :

Projection du ciel dans une carte

Le résultat est presque parfait. Pour peaufiner le résultat nous allons éclairer le terrain en faisant appel à un des actors qui se marient le mieux avec la Skybox : la Sunlight.

Comme son nom l'indique, le sunlight est un actor créé pour imiter l'éclairage du soleil : c'est un spot aux rayons parallèles qui ne fonctionne que s'il est placé dans une Skybox. Il se trouve dans l'actor browser : cliquez sur le petit "+" à coté de Light pour le trouver :

Sunlight dans l'actor browser

Placez cet actor dans la Skybox, et pivotez-le dans tous les sens que vous voulez, pourvu qu'il pointe vers la Skyzoneinfo. Profitez-en pour sélectionner toutes les faces de votre Skybox et dans leur propriétés, onglet "flags", cochez "Unlit" pour qu'elles soient uniformément éclairées en blanc. De même, sélectionnez les Fogring et dans leurs propriétés, onglet "display", mettez bUnlit à Vrai (true). Vous pouvez mettre votre Sunlight derrière les FogRings, ces derniers ne projettent pas d'ombre. Ensuite, rebuildez et passez en mode "dynamic light" pour observer votre terrain :

Effet de la sunlight

C'est pratiquement parfait, mais tout le monde sait que dans la réalité, le soleil éclaire de telle façon que les ombres ne sont jamais totalement noires. Or dans notre carte, le contraste est très important. Dans les propriétés de la Zoneinfo dans le cube qui contient le terrain, allez dans l'onglet "ZoneLight" et mettez "Ambiant Brigthness" à 20, puis rebuildez :

effet final avec un léger ambiant brightness

Je rajouterais une dernière chose concernant le package SkyRenders. Il contient des textures adaptées à des Skybox, qui permettent de faire des paysages complets à 360 degrés. L'un des inconvénients de ces textures est que si vous les appliquez à un cube, elles ne voudront jamais s'adapter parfaitement et laisseront toujours apparaitre les bords du cube. Pour contrer cet effet, je recommande, comme expliqué sur Unreal-design, de sélectionner les surfaces où sont appliquées les textures, et d'y appliquer un scaling de 1.01. Cela agrandira juste assez les textures. Il ne vous restera plus qu'à décaler certaines faces d'un pixel ou deux sur un seul axe pour que l'effet soit parfait. Couplées à un sunlight adapté, ces textures permettent de très beau ciel à l'atmosphère très marquée.

2005-2016, by Hellkeeper.

Valid XHTML 1.1 CSS 2.1