Tutorial de création d’un skin personnalisé

(english version here)

Il est assez facile de rajouter ses propres camouflages (skins) pour BOMB et voici une sorte de tutoriel présentant la fonction des différentes textures, et également comment créer une skin simple.

Tout d’abord, voici un petit tableau présentant les correspondances entre les noms des avions et leur nomenclature, avec en lien des archives contenant différentes textures de bases.

VB-42 Calamari : AI_PLANE_10

MM.3803 Bilby: AI_PLANE_11

CK50 Kani: AI_PLANE_12

KGP XVII Puffin: AI_PLANE_FB

VB-37 Astore: AI_PLANE_HF

S.N.A.F Rorqual: P_PLANE_B

King KAC-B: P_PLANE_F

S&E P.10 Libelle: AI_PLANE_1

Les dossiers relatifs à ces avions sont dans BOMB/Media/objets/aircrafts

ATTENTION: ceci n’est pas un tutoriel à vocation “artistique”, mais juste un explicatif technique sur la façon de procéder.

ATTENTION 2: C’est la première fois que je fais un tutoriel, donc il n’est pas forcément très clair.

Lancez votre éditeur d’images préféré (nous utiliserons GIMP ici puisqu’il est gratuit et donc accessible au plus grand monde. Mais à peu près n’importe quel outil fera l’affaire, même MS Paint. Non, bien sur, pas MS Paint. Il faut au minimum une gestion des calques.)

Nous allons créer une skin pour le King KAC-B, avion phare du jeu.

Une fois l’archive P_PLANE_F.7z téléchargée, décompressez là où vous voulez.

Celle-ci contient plusieurs fichiers tga, qui sont les mêmes pour tous les avions, à savoir:

  • mask.tga : comme son nom l’indique, c’est l’image de masque général, qui permet de voir quelles parties de la texture sont utilisées
  • lines.tga : ce sont les lignes de structures de l’avion.
  • rivets.tga : ce sont les rivets de l’avion.
  • structlines.tga: celle-ci est un peu plus compliquée et ne sert pas pour la création de skin directement, sauf cas particuliers, nous y reviendrons plus tard.
  • Éventuellement un fichier internals.tga contenant les parties relatives aux radiateurs,  vitres, et aux trains d’atterrissage.

Ouvrez l’image mask.tga, et enregistrez la sous la forme d’un workspace GIMP  (extension .xcf);

0

Dans ce workspace, ouvrez lines.tga et rivets.tga en tant que nouveaux layers (file / open as layer)

Pour y voir plus clair, passez ces deux layers en mode multiply:

1

Dupliquez le calque de masque,mettez le masque nouvellement créé tout en haut de la pile, puis passez le également en multiply.

2

Juste au dessus du premier calque, créez un nouveau calque que nous appellerons “camouflage”.

Maintenant on peut commencer.

Comme je l’ai dit, ce tutoriel n’a pas vocation à être artistique, donc je vais choisir quelques couleurs et barbouiller ma skin avec, ce qui va donner ça:

3

Pour plus de réalisme on va rajouter un peu de “patine” rapidement.

Premièrement dupliquons le calque de rivets. Sur le calque original, on va appliquer un léger blur : menu filters/blur/gaussian blur.

Mettre la taille du blur à 2 pixels:

4

Passer le calque de rivets précédemment dupliqué en mode divide avec une opacité de 75%, ce qui donne ceci:

5

Maintenant, dupliquer le calque des lignes de structures, et appliquer un gaussian blur de 10 pixels sur celui-ci.

Enfin, changer l’opacité du calque de lignes de structures original à 20%:

6

Ouvrir si elle existe la texture “internals.tga” en tant que calque et placer ce calque tout en haut de la pile:

7

Voilà ! Notre première skin est faite.

Il ne reste plus qu’a exporter notre image en tga sous le nom P_PLANE_F_MySkin.tga, en mode 32 bit. Il est important d’avoir une couche alpha sur la skin, car celle-ci contient un masque de spéculaire, c’est à dire le masque de réflexion de la lumière. Par défaut, laisser cette couche alpha en blanc ou en gris suffit, mais pour exemple, voila à quoi ressemble un masque de spéculaire un peu travaillé:

specmask

Convertissez le fichier tga en dds DXT5 en utilisant un des nombreux outils existant (on peut rajouter un plugin à GIMP pour exporter directement en dds).

Il existe  même un convertisseur en ligne. Dans celui ci, choisir le mode DXT5 et cliquez sur “generate mip maps

Copier le fichier dds dans le dossier BOMB/Media/objects/aircrafts/[MODEL]/skins, dans notre cas ça sera BOMB/Media/objects/aircrafts/P_PLANE_F/skins

skinfolder2

Enfin, lancez le “viewer.exe” qui est une version minimale de BOMB permettant de lancer rapidement un skirmish. Ce programme se trouve à côté de l’executable de BOMB, dans le dossier “BOMB/bin/release”.

Faits défiler les skins de l’avion avec les touches “haut” ou “bas”, et vous verrez votre skin sur l’avion.

skin0

Pour finir, nous allons préciser quel rôle a chaque texture utilisée par un modèle d’avion, et surtout le rôle des différents canaux utilisés dans chacune d’entre elles.

Tout d’abord, la texture [MODEL]_Structline.dds :

  • Le canal R contient les lignes de structures, en version très claire, ce qui permet de les appuyer légèrement lors du rendu.
  • Le canal G contient l’occlusion ambiante de l’avion, utilisée pour l’éclairage également.
  • Le canal B contient les lightmap des canons, utilisées pour éclairer l’avion de façon plus convaincante quand les canons tirent.
  • Le canal A contient les zones de réflexion. C’est à dire les parties de l’avion ayant un aspect “métallique” ou alors les parties vitrées. Dans ce channel, une valeur de 255 signifie aucune réflexion, une valeur de 0 signifie réflexion totale.

Ensuite nous avons la normal map, celle-ci est nommée [MODEL]_Normal.dds

Et enfin, la texture de dégâts, nommée

[MODEL]_Damages.dds

Dans celle-ci

  • Le canal R contient les dégâts mineurs
  • Le canal G contient les dégâts mineurs + lourds
  • Les canaux B et A ne sont pas utilisées pour le moment.

NOTE: Normalement, la texture [MODEL]_StructLines.dds est unique pour toutes les skins de l’avion. Cependant, il est possible de la surcharger pour une skin en particulier en en créant une nouvelle qui a pour nom de base celui de la skin, suivi suffixe _StructLines.

Par exemple, la skin du Bilby nommée

AI_PLANE_11_racer_metal.dds

possède sa propre map StructLines

AI_PLANE_11_racer_metal_StructLines.dds

Cette possibilité de surcharge existe aussi pour la normal map, mais n’est pas présente actuellement pour la damage map.