Options d'Ultimate 3D

Il y a un certain nombre d'options dans Ultimate 3D pour modifier la façon avec laquelle il charge les données, il calcule le rendu des scènes et la façon dont il gère les erreurs. Quelques-unes de ces options doivent être définies avant qu'Ultimate 3D soit initialisé, tandis que d'autres peuvent être changées n'importe quand en utilisant les fonctions correspondantes. Celles qui doivent être définies avant qu'Ultimate 3D soit initiliasé sont définies dans le script Ultimate3DOptions(). Ce script n'est pas prévu pour être appellé par l'utilisateur. Il sera appellé une fois qu'Ultimate 3D sera initialisé, c'est tout. Le fait que ce soit un script plutôt qu'un certain nombre de constantes Game Maker résulte en un avantage pour vous, parce que de cette manière vous pouvez charger les options depuis un fichier. Actuellement il y a six options qui sont définies par des variables dans le script Ultimate3DOptions():

global.u3d_splash_screen_file
Il vous faudra définir cette variable comme string. Si vous ne souhaitez pas qu'Ultimate 3D n'affiche un écran pendant le chargement des ressources, vous pouvez définir cette variable à une chaîne vide (""). Sinon, si vous souhaiter afficher une image durant le chargement des ressources, il vous suffira de définir cette variable au nom de fichier, en y incluant le chemin du fichier, pour cette variable.

global.u3d_z_buffer_format
Cette variable peut avoir soit la valeur 16 ou 32. Si vous la définissez à 32, Ultimate 3D tentera de créer un périphérique utilisant un z-buffering de 32 bits. Le Z-buffering est une technique utilisée pour éviter que les objets qui sont devants d'autres objets soient couverts par les objets dérrière eux. Si vous le définissez à 16 Ultimate 3D utilisera un z-buffering de 16 bits, bien entendu.

global.u3d_multi_sample_type
Ce variable peut prendre une valeur entière allant de 2 à 16, ou bien 0. Elle définit le nombre d'échantillonages qui seront utilisés pour l'antialiasing. Dans le cas où elle est égale à 0 aucun antialiasing ne sera utilisé. Plus la valeur est élevée, plus fort sera l'antialiasing. Notez que le nombre d'échantillonage diffère de carte graphique en carte graphique. Certains périphériques graphiques ne supportent même pas l'antialiasing. Une autre chose que vous devriez noter est que l'antialiasing n'aura aucun effet si les post screen shaders sont activés. 

global.u3d_device_type
Si vous n'avez pas une bonne raison de ne pas le faire, vous devriez définir cette variable à 0. Ultimate 3D créera ensuite l'interface la plus efficace et rapide qui offre toutes les fonctionalités requises. Si vous la définissez à 1, Ultimate 3D créera une interface qui calculera les vertex à l'aide du logiciel. Cela signifie que cela sera le processeur principal (CPU) qui calculera les données des vertex, plutôt que le processeur graphique. Habituellement cela n'a pas du tout de sens. L'unique cas dans lequel vous devriez utiliser cette option est lorsqu'il y a un bug dans les drivers du périphérique graphique, qui donne lieu à un crash lors de l'utilisation de fonctionnalités particulières avec le calcul de vertex supporté matériellement. J'ai connu cela avec un driver ATI en utilisant le vertex tweening. Pour finir vous pouvez initialiser cette variable à 2 pour créer une interface complètement logicielle (en utilisant la couche Direct 3D de référence). Cela vous donnera un frame rate extrêmement lent mais toutes les fonctionalités (cube mapping, shadow casting et les modèles de pixel shader 1.4) seront correctements prises en charges.  

global.u3d_log_file
Cette variable peut être définie avec un chemin de fichier d'un fichier texte, par exemple "LogFile.txt". Si elle est initialisée en tant que string, Ultimate 3D créera un fichier de journal, pendant que l'exécutable fonctionnera. Beaucoup d'informations utiles sortiront dans ce fichier de journal (en particulier, tous les messages d'erreur et d'avertissement, les informations à propos du périphériques et de ses capacités et quelques données à propos du succès de certaines opérations). Si vous même, ou un utilisateur d'une de vos applications basées sur Ultimate 3D a des problèmes avec votre application, le fichier de journal rendra la résolution du problème bien plus aisée.  

global.u3d_few_message_output
Cette variable peut être définie à true, afin de réduire le nombre de messages d'erreur qu'Ultimate 3D affichera à l'écran. Si elle est définit à true, Ultimate 3D affichera seulement les messages d'erreur, s'ils sont cruciaux et s'ils sont suceptibles de faire crasher l'application. Le fichier de journal n'est pas affecté par ce paramétrage.

Comme je l'ai déjà dit, les autres options peuvent être changées à n'importe quel moment en utilisant des fonctions. La première option disponible est vraiment facile à comprendre. Si vous êtes en train d'utiliser Ultimate 3D, il vous est nécessaire de savoir qu'il recherche les textures des modèles dans le dossier "gfx" par défaut. Si vous souhaitez qu'Ultimate 3D les cherche ailleurs, vous pouvez utiliser la fonction suivante, pour donner un nouveau chemin (en incluant le slash de fin).   

Cette fonction modifie le dossier dans lequel Ultimate 3D cherche les textures des modèles.

SetTexturePath(
TextureDirectory
)

TextureDirectory
Le dossier contenant les texture, en y incluant le slash à la fin de l'adresse.

La fonction suivante ne change pas vraiment une option, mais désactive le rendu de sortie d'Ultimate 3D pour permettre à Game Maker d'afficher sur la view[0]. Elle s'appelle SwitchView() et ne prend aucun paramètre.

La fonction suivante change la méthode de filtrage utilisée pour le niveau de texturage donné. La méthode de filtrage définie comment Ultimate 3D calculera une couleur d'une texture et une coordonnée de texture. La méthode de filtrage par défaut, est le filtrage linéaire.

Cette fonction définie une nouvelle méthode de filtrage pour le niveau de texturage donné.

SetFilter(
TextureFilter,
TextureStage
)

TextureFilter
Le filtre qui est destiné à être utilisé pour filtrer les textures. Voici une liste des significations des différentes valeurs que vous pouvez entrer pour cet argument:
1: Filtrage par les points les plus proches: La couleur des texels les plus proches seront utilisés.
2: Filtrage Linéaire: La couleur des quatres texels les plus proches sera interpolée pour obtenir un résultat plus lisse.
3: Filtrage Anisotropique: Une méthode de filtrage plus complexe qui peut amener à de meilleurs résultats. Ce n'est pas supporté par certains périphériques graphiques. 

TextureStage
Le niveau de texturage pour lequel vous souhaitez définir le filtrage de texture. Cela peut être une valeur entière arbitraire allant de 0 à 7. Par défaut chaque niveau de texture utilise le filtrage linéaire. Si vous passez 1 pour ce paramètre, le filtre de texture spécifié sera utilisé pour afficher les textures DrawTex(en utilisant (...) et DrawTexEx(...)). En définissant un filtrage par les points les plus proches pour l'affichage des textures, vous pouvez éviter une perte de qualité.

La fonction suivante définit combien de mip maps sont à créer pour les textures qui seront chargées. Créer des mip maps consiste à créer des versions de résolution plus basse pour chaque texture qui peut être utilisée, dépendemment de la distance de l'objet qui l'utilise. Chaque mip map aura une résolution moitié moins grande que la résolution de la mip map précédente. (ex.: Un nombre de Mip map définit à trois, donnera: 512*256; 256*128; 128*64).

Cette fonction définit le nombre de mip maps à créer pour les textures qui seront chargées.

SetMipMapCount(
NewMipMapCount
)

NewMipMapCount
Le nouveau nombre de mip maps, et donc de copies à des résolutions plus basses qui doivent être créées pour chacune des textures qui seront chargées.

Vous pouvez aussi spécifier de quelle façon Ultimate 3D doit interpoler les mip maps entre elles. Par défaut le filtrage par le point le plus proche est utilisé à cette fin. Cela signifie que chaque pixel utilise seulement une mip map. Entre les mip maps il y des de changements soudains, qui se voient parfaitements, particulièrement sur les textures détaillées. Vous pouvez dire exactement quand est-ce que le programme doit cesser d'utiliser une mip map et doit en prendre une plus basse. Définir un filtrage linéaire pour interpoler les mip maps entre elles, peut permettre d'éviter cet effet indésirable.

Cette fonction définit le filtre, destiné à être utiliser pour interpoler les mip maps au niveau de texturage donné.

SetMipMapFilter(
TextureFilter,
TextureStage
)

TextureFilter
Le filtre destiné à être utilisé pour l'interpolation des mip maps entre elles. Par défaut, le filtrage par le point le plus proche est activé (1). L'alternative commune est le filtrage linéaire (2). Pour une liste détaillée de tous les filtres disponibles, référez vous à la description de SetFilter(...).

TextureStage
Le niveau de texturage pour lequel vous souhaitez définir le filtre de mip map. Cela peut être un nombre entier arbitraire allant de 0 à 7.

Pour finir, il existe une fonction pour qu'Ultimate 3D passe en mode de rendu fil de fer (wireframe) pour des objets spécifiques. Le rendu en mode fil de fer, consiste à ne calculer que le rendu des contours des triangles. Cette fonctionnalité est prévue pour être utilisée par des choses telles que les editeurs de niveaux. Utiliser le rendu en mode fil de fer pour implémenter un effet ingame, ne rend habituellement pas très bien.

Cette fonction peut être utilisée pour activer ou désactiver le rendu en mode fil de fer pour un modèle, un terrain ou un objet primitif, appelant cette fonction.

SwitchWireFrameMode(
EnableDisable
)

EnableDisable
Si vous passez true pour cet argument, le rendu en mode fil de fer sera activé, sinon, il sera désactivé.

Si vous utiliser Game Maker 6.0 ou supérieur il y a une variable supplémentaire qu'il vous faut connaître. Vous avez pu remarquer qu'Ultimate 3D n'affiche par le curseur, même si l'option correspondante dans Game Maker est activée. La raison de ce comportement est que Game Maker 6.0 ou supérieur (à l'instar de Game Maker 5.x) n'offre pas la possibilité de déterminer si il affiche le curseur ou non. Pour cette raison il vous faut donner l'information manuellement. Cela peut être fait en changeant la valeur de control.show_cursor. En la définissant à true, Ultimate 3D affichera le curseur, en la définissant à false Ultimate 3D désactivera le curseur.

 


© Christoph Peters. Certains droits réservés. (Traduction FR 04/2008, Franck Vernel / Damien Buhl).

Creative Commons License XHTML 1.0 Transitional