Texture:Texture Virtuelle

De Celestia wiki

Histoire

Les textures virtuelles permettent à Celestia d'afficher des textures qu'il n'aurait jamais été possible de rendre sur un PC en les découpant en "tuiles" (en anglais : "tiles"). Seules sont donc chargées en mémoire et affichées celles apparaissant à l'écran. Dépassant aujourd'hui couramment les 128k de résolution, l'idée à l'origine était bien plus modeste : pouvoir utiliser les textures Blue Marble 32k fournies par la NASA, alors qu'avec les cartes graphiques d'aujourd'hui on arriverait presque à le faire en brut.

Cette technique est apparue avec la version 1.3.1 de Celestia (cf. le topic de Chris Laurel sur le forum officiel).

Fonctionnement

Il faut tout d'abord se remémorer le fonctionnement d'une texture : c'est une image rectangulaire dont la largeur est le double de la hauteur (comme un tatami !). Lorsqu'on parle d'une texture de 1k, cela signifie que sa résolution est de 1024 pixels en largeur, et de 512 pixels en hauteur.

Les textures virtuelles fractionnent cette résolution, tout en conservant les proportions. Une personne souhaitant effectuer une seule série de textures virtuelles à partir d'une texture de base de 1k, devrait en réalité scinder en 4 la texture de base (sauf pour le premier niveau, voir ci-dessous). On obtiendrait pour résultat 4 "tiles" de 512*256 pixels chacune.

Cette méthode revient à appliquer un fractionnement que nous appellerons horizontal, puisque se contentant de partitionner l'existant en plusieurs morceaux. La deuxième astuce, à combiner à cette première, nous l'appelleront le fractionnement vertical, qui utilise la technique des Levels (niveaux).

Levels

Le fractionnement vertical revient à réduire la résolution de base de la texture, et à en mettre une version à chaque fois de moindre qualité dans des répertoires nommés "Leveln" (n valant 0, 1, 2, 3,..., 12).

Le but étant de partir de la résolution maximale, pour aller vers sa version minimale, une texture de 128k sera fractionnée une première fois horizontalement, puis verticalement une première fois (résultat : 64k), puis verticalement une seconde fois (résulat : 32k) jusqu'à atteindre 2 tiles (c'est le Level0).

Prenons les choses à l'envers : votre texture virtuelle au level0 (le premier, donc) est composée de 2 tiles de 512x512, qui donnent un total de 1024x512 pixels, soit notre fameuse texture de 1k. Le level0 est toujours composé de 2 tiles.

Au niveau suivant, le "level1", nous aurons 8 fois (2 x 4) des tiles de 512x512; au "level2", 32 tiles (8 x 4), et ainsi de suite. Etant entendu qu'au niveau suivant, chaque tile est divisée en 4 de même taille. Un level5 complet comportera ainsi 2048 tiles.

Le nombre de tiles d'un level n complet peut se calculer par la formule suivante : 22n+1

Depuis la version 1.4, Celestia accepte jusqu'à 13 niveaux de fractionnement horizontal (soit du "level0" au "level12"). Pour information, un level12 complet comporterait donc plus de 33,5 millions de tiles !

Utilisation

Il est nécessaire d'indiquer à Celestia que la texture qu'il va devoir afficher est une texture virtuelle. Cela se fait par le biais d'un fichier Ctx obligatoire.

Structure des dossiers de textures virtuelles

Bien qu'il soit possible d'utiliser d'autres schémas, les textures virtuelles devraient être considérées comme des addons et en respecter l'organisation.

L'exemple choisi est la description de l'implantation de la texture virtuelle 64k Earth Mark II de Jestr. On peut trouver cette texture sur Celestia Motherlode à la section Earth: surface maps.

Pour info il s'agit d'une texture de 64k avec des tuiles de 1024x1024. Elle est donc répartie en 6 niveaux nommés level0 à level5.

Voici l'organisation typique des dossiers de textures virtuelles.

Les fichiers de l'addon

Puisque nous avons décidé qu'il était préférable d'utiliser une texture virtuelle comme un addon, nous allons créer un répertoire d'addon dédié à notre texture virtuelle. Dans notre cas ce sera JMII DDS - addon. Parmi les méthodes possibles, une des plus intelligentes consiste à déclarer notre texture en tant que "surface alternative".

Nous allons donc créer dans ce répertoire (JMII DDS – addon) un fichier JMII DDS.ssc qui va se charger d'indiquer à Celestia quelle texture doit être affichée comme une "surface alternative". Voir FICHIERS SSC pour plus de détails à ce sujet.

Nous voyons sur le schéma ci-dessus le contenu minium de ce fichier. Un coup d'oeil nous montre que notre texture sera le fichier "JMII DDS.ctx"

Le fichier ctx

Pour pouvoir utiliser notre texture virtuelle comme une autre texture, il nous faut un fichier qui représente cette texture et qui va se placer comme tous les autres fichiers de texture dans un des sous-répertoires (hires, medres, lores) du répertoire des textures. Ce fichier aura l'extension ctx et sera considéré par Celestia comme un fichier graphique au même titre que les fichiers jpg, png ou dds. Comme les textures virtuelles sont faites pour afficher de grosses textures, il est logique de le placer dans le répertoire hires. On peut voir dans l'illustration ci-dessus un exemple du contenu d'un fichier ctx.

La ligne qui nous intéresse particulièrement ici est ImageDirectory "JMII DDS". Elle indique le nom du répertoire qui contiendra réellement les images de notre texture virtuelle.

Une explication détaillée des différentes lignes de ce fichier est donnée dans le chapitre sur les fichiers ctx.

Le répertoire des textures virtuelles

Le nom de ce répertoire est pointé par le fichier ctx décrit ci-dessus.

Ce répertoire doit être un des sous-dossiers du répertoire textures\hires. Sa seule fonction est d'accueillir les répertoires nommés level0, level1 ...jusqu'à level12 qui contiennent les tuiles de la texture virtuelle regroupées par niveau.

Les répertoires "level" et les tuiles

Ces répertoires sont nommés de level0 à level12. Il n'est pas obligatoire que tous les niveaux soient présents.

Le contenu d'un de ces répertoires ressemble à ceci :

Nous voyons ici le contenu du répertoire level1. C'est un niveau complet qui contient 8 tuiles comme cela a déjà été développé plus haut.

Dans notre exemple les niveaux 0 à 5 sont complets ce qui représente 2730 tuiles en tout.

Le niveau 12 ne peut pas être complet pour des raisons pratiques évidentes (beaucoup trop de tuiles). Ici nous voyons qu'il ne contient qu'un seul fichier qui (comme son nom l'indique) correspond à une vue rapprochée de la Cité du Vatican.

Le nom des tuiles est imposé par Celestia. Il est de la forme :
tx_colonne_ligne.extension

L'extension doit être jpg, png ou dds et décrit le format graphique. La colonne et la ligne sont numérotées à partir de zéro. Ce nom permet à Celestia de placer correctement la tuile en question sur la planète.

Localisation des tuiles

[A compléter]