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.

Custom skin creation tutorial

(version française ici)

It’s pretty easy for anyone to add  their own skins for BOMB and here’s a tutorial detailing how to do it.

Notice: This tutorial is not made from an artistic point of view, but  solely a technical how-to.

The list below links all the planes from the game to its a template containing a full texture set. The second name, the one with the link is the internal (in engine) name of the plane.

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

Their respective folders are found in game_installation_directory/BOMB/Media/objets/aircrafts

Use your favorite image editor software (we are using GIMP here because it’s freely available for everyone, but basically any editor with layer and TGA support can get the job done).

Let’s start with a skin for the King KAC-B, which is the main plane in the game.

Download and extract the P_PLANE_F.7z archive anywhere you choose. It contains several TGA files, always organized as:

  • mask.tga : a general mask showing the plane’s parts (for editing help purpose only, it’s not used in game)
  • lines.tga : structure lines (the separations between parts)
  • rivets.tga : plane’s rivets (you know… lots of them)
  • structlines.tga: Not used directly for skin creation. We’ll speak more about that file later.
  • internals.tga (optional): radiators, glass and landing gear parts.

Open the  mask.tga  file and save it as a GIMP workspace file (.xcf extension).

0

In this workspace, open lines.tga et rivets.tga as new layers (file > open as layer). For better display, set them in multiply mode:

1

Duplicate the mask layer, put the new one on top of the stack and set it in multiply mode.

2

Just above the first layer, create a new one labeled as “camo”.

As I said, this tutorial is not for artistic purpose, so assume that I choose a few colors and paint my skin with them, leading to:

3

We can achieve quickly an used look.

  • duplicate the rivets layer
  • on the original one, apply a 2 pixels gaussian blur: filters > blur > gaussian blur

4

  • set the duplicate one in divide mode with a 75% opacity:

5

  • duplicate the structure lines layer
  • apply a 10 pixels gaussian blur on
  • set the original one with a 20% opacity:

6

Open internals.tga as a new layer if it exists and move it on top of the stack:

7

Voilà ! Our first skin is done.

Now we need to export the image as a TGA file named P_PLANE_F_MySkin.tga, in 32 bit mode. It’s very important that the skin has an alpha layer because it contains a specular mask (i.e. light reflection mask). By default, setting this alpha layer to white or gray is sufficient, but to provide the best example, here’s what a worked out specular mask looks like:

specmask

Convert the TGA file in DDS file format with DXT5 compression using one of the many existing tools (e.g. a GIMP export plugin).

Even an online converter exists. In this one, choose DXT5 mode and click on generate mip maps.

Copy the dds file in BOMB/Media/objects/aircrafts/[MODEL]/skins, in our example it is: BOMB/Media/objects/aircrafts/P_PLANE_F/skins

skinfolder2

Finally, launch viewer.exe, which is a minimal BOMB build to quickly start a skirmish. This program is located next to the BOMB main executable, in BOMB/bin/release.

You can switch between available skins by pressing the up and down keyboard keys.

skin0

To better understand how it works, you can find below the purpose of every color channel in every texture.

[MODEL]_Structline.dds :

  • The R channel contains structure lines.
  • The G channel contains the baked ambiant occlusion, also used for lighting.
  • The B channel contains the canon’s lightmaps, used to light them in a convincing way while shooting.
  • The A channel contains reflective zones i.e. metallic or glass looking parts. A 255 value means no reflection at all and a 0 value means a total one.

[MODEL]_Normal.dds

The normal map

[MODEL]_Damages.dds

Used when the plane is damaged.

  • The R channel contains the minor damages.
  • The G channel contains minor + major damages.
  • The B and A channels are currently unused.

NOTE: The [MODEL]_StructLines.dds is unique for all the skins of one plane. However it’s possible to surcharge it for a particular skin by creating a new one named as the skin with the _StructLines suffix.

For example, Bilby’s skin:

AI_PLANE_11_racer_metal.dds

has its own StructLines map:

AI_PLANE_11_racer_metal_StructLines.dds

This feature is also available for the normal map but is not currently for the damage map.