Post

Oblivion Texture Upscale

Comment améliorer visuellement certaines textures dans Oblivion

Oblivion Texture Upscale

Oblivion et modding

Jeu de rôle en monde ouvert sorti en 2006, après Morrowind (2002) et avant Skyrim (2011). De nombreux outils et mods ont été publiés depuis son lancement. La page Nexus Oblivion Mods recense 32955 mods.

Parmi tous ces mods, certains améliorent le rendu des textures d’origine soit en les recréant totalement, soit en augmentant la résolution des images de base. Pour cela il existe depuis quelques années des modèles d’IA qui sont de plus en plus performants et qui peuvent ajouter de nombreux détails à des textures en basse résolution.

J’ai choisi l’objet “Fleshy Pod” que l’on trouve dans les plans d’Oblivion pour tester le processus d’upscaling de texture.

Fleshy Pod Vanilla Fleshy Pod

Les outils indispensables, les outils optionnels

Afin d’accéder aux ressources du jeu et les modifier, plusieurs logiciels sont nécessaires. Voici une liste non exhaustive de ceux que j’ai utilisés :

  • BSA Browser : pour l’extraction des textures du jeu
  • GIMP ou Paint.NET: pour l’édition, la création de “normal maps”, et la conversion dds/png
  • Upscaling, différentes options :
    • chaiNNer : open source, gratuit, prise en main relativement simple, permet des opérations complexes, supporte beaucoup de modèles
    • Upscayl - AI Image Upscaler : open source, gratuit. Le nom est assez explicite, très simple d’utilisation.
    • Topaz Gigapixel : propriétaire, simple, efficace, et … payant !
  • 7-Zip : pour la compression des fichiers textures en “mods” installables
  • Mod Organizer 2 : pour l’installation des mods
  • SkyBSA : invalidation des fichiers qui seront installés par le mod
  • Optionnels :
    • Texture Tools Exporter : pour les infos de format des textures originales, également pour la conversion vers DDS ou la création de normal maps, simple et efficace
    • xNormal : pour la création des normal maps et la prévisualisation du rendu 3D
    • ShaderMap - Normal Map Generator : pour la création des normal maps et la prévisualisation du rendu 3D
    • NifTools Project : visualisation / édition des mesh du modèle
    • Blender : édition des modèles 3D, logiciel pro qui dépasse largement le spectre des modifications de texture, permet le rendu en 3D des modifications.

Les étapes

Extraction textures/mesh

La texture que je souhaite modifier est celle de l’objet appelé Fleshy Pod dans le jeu. Depuis BSA Browser, après avoir ouvert l’archive Oblivion - textures - compressed.BSA située dans le dossier Data du répertoire d’installation du jeu, je fais une recherche du terme flesh et en double-cliquant sur le nom des textures le logiciel affiche une fenêtre de rendu. On y voit la résolution et le format de compression, ici 512x512 et DXT1.

Captureshot BSA Browser DDS window

Quand la texture correspondante est trouvée, cliquer sur ‘Extract with folder’ pour garder une trace du chemin d’accès d’origine. Par exemple pour le fichier fleshsack.dds il s’agit de textures\oblivion\exteriorcitadel\traps\. La procédure est la même pour extraire les mesh, ce qui peut être utile pour déterminer les différentes textures utilisées lorsqu’il y en a plusieurs combinées. J’organise mes repertoires de la sorte :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
├──Modding Oblivion
  ├──Vanilla
    ├──textures
	  ├──creatures
	    ├── ...
	  ├──oblivion
		├──exteriorcitadel
		  ├──traps
		  ├──...
	  ├──meshes
		  ├──...
  ├──PNGs
  ├──1X
  ├──2X
  ├──4X

Il existe plusieurs plusieurs fichiers textures dans le dossier ayant le même nom mais une extension différente, on a dans l’exemple : fleshsack.dds, fleshsack_n.dds, fleshtendons.dds et fleshtendons_n.dds.

Ces fichiers avec le suffixe _n sont des “normal map” : il s’agit de la même texture traitée différemment afin de donner des instructions de détail et de profondeur et permettre ainsi au modèle d’avoir du relief et de réagir aux sources de lumière dans le jeu.

Ces fichiers sont importants, sans la “normal map” l’objet est plat et ne renvoie pas la lumière.

Conversion en PNG

Certains des logiciels pour l’upscale par IA n’acceptent pas le format dds comme entrée, c’est le cas par exemple de l’application Upscayl ou encore Topaz Gigapixel. J’utilise XnConvert pour convertir par lot au format png (pour une compression sans perte de qualité, “lossless”).

Upscaling de la texture principale

Il existe beaucoup de modèles différents, entrainés sur des datasets divers et avec des fonctionnalités d’upscale ciblées. Le site OpenModelDB contient une large collection de modèles et permet de les trier selon les fonctionnalités voulues. La plupart sont utilisables dans chaiNNer. Pour cet exemple précis, le “Fleshy pod”, j’ai trouvé que les meilleurs résultats sont donnés par le modèle “Low Res” de Gigapixel, cependant les résultats avec Upscayl sont très corrects.

Seamless maker

Le logiciel Seamless maker permet de transformer les bords de la texture afin de la rendre “tileable”. L’utilisation de cette technique évite d’avoir des raccords de texture apparents en jeu. L’application permet d’ajuster avec finesse les zones de raccord.

Conversion en DDS

Le moteur de jeu d’Oblivion supporte les formats de texture BC1/DXT1 et BC3/DXT5. Le premier est utilisé pour la texture principale sans canal alpha (transparence) et le deuxième pour les “normal map” et les “glow map” qui elles ont un canal alpha.

Il est important de cocher la case Genérer les mipmaps pour éviter des artefacts de raccordement de texture en jeu.

Via GIMP

Fichier > Exporter sous, fleshsack.dds, OK puis dans la liste déroulante choisir BC1.

Via Paint.NET

Fichier > Enregistrer sous, fleshsack.dds, OK puis dans la liste déroulante choisir BC1.

Via Nvidia Texture Tools Exporter

Nvidia Texture Tool

Création de la normal map

Plusieurs possibilités : Gimp, Paint.NET, xNormal, Shader Map 4, Crazy Bump, Materialize…

Gimp inclut de base une fonctionnalité de génération de normal map dont les contrôles sont assez limités. Le plugin pour Paint.NET est plus abouti et permet des réglages plus fins avec prévisualisation. Crazy Bump et Materialize donnent de bons résultats et permettent des réglages plus poussés.

Pour le plugin de Paint.NET : le télécharger depuis la page Height to Normal Map et l’installer en suivant les instructions Install Plugins. Après avoir désaturé la texture, lancer la génération depuis Effets > Styliser > Height to Normal Map. Une fois créée et ajustée exporter via Enregistrer sous fleshsack_n.dds puis sélectionner BC3 (linéaire, DXT5).

Le passage en noir et blanc est important pour la qualité de la normal map.

Sans passage Noir et blanc Sans l’étape Noir et Blanc

Avec passage Noir et blanc Avec l’étape Noir et Blanc

Créer le mod et l’installer

Compresser le dossier textures (dans lequel se trouvent les fichiers édités) en 7z avec 7z-gui, lui donner un nom identifiable, par exemple Fleshsack1K_GigapixelRecover.7z. La structure du dossier à compresser est textures\oblivion\citadelexterior\traps\[fleshsack.dds,fleshsack_n.dds].

Installer depuis Mod Organizer 2 (Ctrl M), activer le mod et lancer le jeu.

Résultat

Fleshy Pod Upscaled Fleshy Pod

Cet article est sous licence CC BY 4.0 par l'auteur.