--------------------------------------------------------------------------------

 

4 Convertir le .map en .bsp (BSP Stage)

 

      4.1 Nouveautés apportées par Q3Map2

 

            4.1.1 -meta

 

Le paramètre majeur apporté par q3map2 est sans conteste le switch -meta.

 

Celui-ci va optimiser la map en analysant la découpe triangulaire. S'il trouve deux triangles coplanaires ayant une arête commune, il va les fusionner.

Par conséquent, il y'aura moins de surfaces dans la map et donc moins d'arêtes. Cela va alléger l'étape VIS et le polycount.

La fusion reste néanmoins limitée en vue d'éviter la formation de larges surfaces, ce qui aurait pour effet l'application de lightmaps de basse résolution (en effet, le samplesize inchangé devient élevé -cf Chapitre sur l'étape LIGHT-). Faites attention car vous pouvez maintenant créer des maps avec plus de 150 lightmaps qui pourraient échouer à l'étape LIGHT. Attention à l'entité _lightmapscale (Plus d'informations dans le Chapitre sur l'étape LIGHT).

 

Q3Map2 peut également fusionner 2 triangles non-coplanaires les transformant en une surface concave, très utile pour réduire le nombre de polygones. Les applications sont nombreuses, comme la simulation d'une surface rocheuse ou d'un terrain accidenté. Pour cela, il vous faut ajouter au shader la directive q3map_nonplanar.

 

NOTE: Si vous utilisez l'utilitaire BSPC, ajoutez le switch -forcesidesvisible devant le -bsp2aas. Sans le -forcesidesvisible, les bots auront un comportement hasardeux.

 

Voici un screenshot vous montrant l'efficacité de -meta.

 

 

            4.1.2 -debugportals

 

Comme son nom l'indique, ce switch est ici à des fins de debug. Vous voulez contrôler le placement des portails de votre map in-game ? Une fois votre map compilée avec ce paramètre, votre map sera parsemée de longs polygones translucides symbolisant l'emplacement des portails.

Au terme de l'étape BSP, les portails auront chacun une couleur différente; par contre, si vous compilez avec -vis et -light, les portails auront la couleur du sky de la map (mais ils sont tout de même facilement repérables).

(A noter que vous pouvez obtenir les mêmes résultats grâce au plug-in Portal Viewer de Geoff DeWan inclus dans GTKRadiant)

 

Voici quelques screenshots vous montrant le -debugportals en action.

 

Etape BSP seulement

 

Etape BSP + LIGHT

 

            4.1.3 -debugsurfaces

 

Utilisé à des fins de debug, le -debusurfaces au terme de l'étape BSP va colorer tous les polygones d'une couleur différente, permettant d'identifier rapidement où se trouvent les découpes hasardeuses.

Si l'étape LIGHT est exécutée, les lightmaps seront colorés.

 

Screenshot du -debugsurfaces (étape BSP uniquement):

 

            4.1.4 -flat

 

Ce paramètre permet d'uniformiser la couleur d'une texture (FlatShading) en étirant/alignant la texture sur le pixel qui correspond le plus à la couleur moyenne de la texture. Il peut être utilisé pour des maps en cel shading, mais il est fortement recommandé de travailler directement avec des textures unies.

 

            4.1.5 -flares

 

Ce switch n'est plus utilisé, ni avec Quake 3, ni avec RtCW. Il servait à l'origine à créer des coronas(pour simuler l'éblouissement) autour des sources de lumière dans Q3test. La dernière release de Q3test et toutes celles de Quake 3 ne s'en servent plus et les ignorent totalement, tout comme RtCW. RtCW utilise pour sa part des flares sous forme d'entité.

 

Jedi Knight 2 et Soldier of Fortune 2 s'en servent, c'est pourquoi ce switch est toujours là...Remarquez que lorsque vous lancez une compilation pour ces deux jeux, -flare est automatiquement appliqué.

 

            4.1.6 -patchmeta

 

L'équivalent de -meta pour les surfaces courbes. Ce paramètre s'occupe également de la pré-tesselation des patches dans le bsp. Il fusionne ensuite

Les ploygones coplanaires sont réduits fortement grâce à cette technique, et les groupes de triangles (triangle strips) voient leurs triangles non-conformes supprimés.

 

Merges a set lod into a surface (subdivision of 8).

 

            4.1.7 -texrange <entier>

 

-texrange est l'outil idéal pour les possesseurs de cartes vidéos un peu vieillotes (comme les voodoo de feu 3Dfx) ne pouvant pas gérer des textures plus grandes que 256*256. En effet, il va convertir les textures trop grandes en une taille que l'on passe en paramêtre ( -texrange 128 va convertir toutes les textures ayant une taille supérieure à 128*128 en textures ayant une taille maximale de 128*128 ).

Non testé : le cas de la conversion d'une texture 256*128.

 

--------------------------------------------------------------------------------

 

      4.2 Les autres paramètres

 

Les paramètres suivants sont issus de Q3Map 1.x

 

            4.2.3 -nowater

 

Les brushes texturés avec des shaders d'eau, de slime et de lave ne sont pas compilés et ne seront pas affichés in-game.

 

            4.2.4 -nodetail

 

Les detail (non structural) brushes ne sont pas compilés et ne seront pas affichés in-game.

 

            4.2.5 -nohint

 

Les Hint Brushes sont ignorés. Ils n'entraineront pas de découpes supplémentaires et donc pas de création de portails.

 

            4.2.6 -onlyents

 

Les entitées sont mises à jour à partir du .map dans le .bsp.

 

            4.2.7 -nosubdivide

 

Le compilateur ne subdivise pas les surfaces pré-tesselées par le mot-clé shader "TessSize".

La tesselation est la subdivision d'une surface en polygones. Le moteur de Quake III Arena tessele toujours en triangles.

Un TessSize de 128 oblige le compilateur à découper (tesseler) les surfaces visibles d'un brush ad-hoc toutes les 128 unités.

Dans Q3DM7, la lave est tesselée toutes les 128 unités.

 

            4.1.8 -nofog

 

Les surfaces visibles qui pénètrent dans les bordures du brouillard (fog) ne seront pas découpées le long de ces bordures.

In-game, cela se traduit par des surfaces sur lesquelles le fog n'a pas d'effet (assez moche mais surtout peu réaliste).

 

            4.2.9 -nocurves

 

Les surfaces courbes ne sont pas compilées et ne seront pas affichées in-game.

 

            4.2.10 -notjunc

 

Qu'est ce qu'une T-Junc (Jonction en T) ?

On suppose le cas de figure suivant :

 

 

Le grand carré est formé d'un rectangle à gauche et de deux petits carrés à droite.

On voit clairement ici la jointure en forme de T d'où vient le nom T-junc entre l'arète formée par les deux petits carrés et celle du rectangle qui touche cette arète.

Lors de la compilation, l'arète du rectangle en vert va être 'coupée' en deux, ce qui va permettre l'introduction d'un nouveau sommet au niveau de cette coupure, ceci afin d'acceuillir le sommet de l'arète bleue formée par les deux carrés.

 

La réparation des T-junc n'entraîne pas de découpes supplémentaires, c'est simplement un problème de géométrie dans l'espace.

 

Si la réparation des T-Junc est désactivée (par le switch -notjunc ou bien par le shader q3map_notjunc), un effet curieux se produira sur la map : une fissure dans la "coque" de la map se trouvera à l'endroit de l'arète qui n'a pas été coupée en deux, sans pour autant créer un Leak. Cela se traduit par l'impression qu'une surface brillante se trouve derrière la fissure.

 

            4.2.11 -leaktest

 

La compilation est arretée dès qu'elle rencontre un leak (un trou entre le vide et la map pour les deux du fond).

 

            4.2.12 -verboseentities

 

La console affiche des informations détaillées sur la compilation des models-entités (mapbojects) de la map

 

            4.2.13 -tmpout

 

En cours de détermination.

 

            4.2.14 -fakemap

 

Génère à partir du fichier source un fichier fakemap.map avec tous les brushes non-texturés et l'entité worldspawn. Les curves et les autres entités ne sont pas incluses.

 

            4.1.15 -custinfoparms (scripts/custinfoparms.txt)

 

Ce switch active les attributs de surface personnalisés (custom surface flags). Lorsque vous mappez pour un mod de Quake III Arena, les codeurs ont pu avoir modifié/ajouté certains surfaceparms pour par exemple simuler les traces de pas dans la neige. Ces modifications/ajouts conduisent à la création de nouveaux surfaceparms que vous pourrez utiliser dans vos shaders scripts. Ces codeurs vous ont fourni (par une release, un mapping pack, une alpha privée...) le fichier custinfoparms.txt se trouvant dans le répertoire scripts/.

Ces attributs de surfaces personnalisés sont de deux types :

Contenu : Lorsque le joueur entrera dans le volume formé par le brush, il subira l'effet.

Surface : Lorsque le joueur marchera sur une face du brush, il subira l'effet.

 

Je fais délibérément l'impasse sur les explications techniques de ces custom info parameters car elles ne satiferont que les codeurs qui veulent ajouter de nouvelles surfaceparm. Si vous voulez toutefois de plus amples informations, lisez "New or Revised Q3map Shader Commands" disponible avec la dernière version de GTKRadiant.

 

            4.2.16 -fulldetail

 

Les detail brushes sont convertis en structural brushes. Ils entraineront donc des découpes supplémentaires.

 

            4.2.17 -samplesize <entier>

 

-samplesize change la taille du pixel lightmap (plus d'information dans le chapître 3) en <entierxentier> unités. Par défaut, sa taille est de 16x16.

 

--------------------------------------------------------------------------------