Last updated: 06/10/2024, 02:17

Current Project: Rejuvenation of Hellkeeper.net

Le Tarquin Extruder Builder Brush

Je voudrais vous parler d'un modèle de brush à la fois puissant et simple d'utilisation dont voici l'admirable portrait :

Paramètres du Tarquin Extruder

Oui, j'ai dit simple d'utilisation. Je vous assure que malgré la liste de paramètres abscons et intimidants, il n'est pas très compliqué à comprendre et vous fera gagner pas mal de temps.

Le Tarquin Extruder Builder Brush permet de dessiner un polygone en plaçant ses sommets, d'établir un certain nombre de points de passages dans UnrealEd et d'extruder le polygone le long de ce chemin pour créer des câbles, des bordures, des tunnels, etc. Il garde aussi les textures relativement bien alignées sur chacune de ses faces et rend donc le travail des textures plus simple qu'avec le vertex editing.

Le Tarquin Extuder Builder Brush a été mis à jour pour la dernière fois par Tarquin en mai 2001, il s'agit donc d'un outil vieux et relativement inconnu, comme la plupart des outils personnalisés d'UnrealEd. Il faut que cela change. Bien que Tarquin l'ait de tous temps qualifié d'expérimental, il est parfaitement stable et ne devrait donc pas vous causer d'ennui.

Un exemple d'utilisation

Où le trouver et comment l'installer ?

Depuis la fermeture de PlanetUnreal et la disparition du site de Tarquin qui y était hébergé, la documentation de l'auteur et les liens vers l'outil ont pour la plupart disparus. Heureusement, il a été hébergé à pas mal d'endroits. Vous pouvez télécharger le Tarquin Extruder Builder Brush au pied de cette page, en choisissant la version correspondante au jeu que vous utilisez. La version pour UT99 fonctionne avec UnrealEd 2.0, 2.1 et 2.2 mais pas avec UnrealEd 1.0 qui utilise un système totalement différent. Elle est donc compatible avec le jeu Unreal original s'il a été correctement patché.

Une fois le package téléchargé et dézippé, placez le fichier BBTarquinExtrude.bmp dans le dossier System\editorres d'Unreal, et le fichier .u dans le dossier \System. Ouvrez ensuite dans un éditeur de texte le fichier Unreal.ini, UnrealTournament.ini ou UT2004.ini (ou équivalent suivant le jeu que vous utilisez), et cherchez les lignes "EditPackages=" ; Il devrait y en avoir une petite liste vers le milieu du fichier, dans le chapitre [Editor.EditorEngine]. À la fin de cette liste, ajoutez EditPackages=TarquinExtrudeBuilder, sauvez le fichier et fermez-le.

Modification de Unreal.ini

Cela permettra à UnrealEd de prendre en compte le fichier TarquinExtrudeBuilder.u lors de sa prochaine ouverture, et rendra l'outil disponible. Lancez donc UnrealEd. Le Tarquin Extruder Builder Brush (que j'abrègerai désormais TEBB) est visible à la suite des autres modèles de brush, avec une icône violette.

Icône du Tarquin extruder builder brush

Comment ça marche ?

Faites un clic-droit sur l'icône pour ouvrir la cascade de propriétés montrée plus haut. Si vous faites un clic gauche, un avertissement devrait surgir, expliquant que l'outil nécessite deux PathPoints. Nous verrons pourquoi.

Les deux propriétés les plus importantes du TEBB sont les listes ShapePoints et PathPoints. Chaque liste peut contenir jusqu'à 16 (0-15) coordonnées pour définir les sommets d'un polygone et les points de passages de son extrusion. En dessous se trouvent ShapeFactor et PathFactor, réglés par défaut sur 64. Ces deux paramètres indiquent à combien d'unités correspond "1" dans une des listes. Ainsi, dessiner un carré pour l'extruder le long d'un chemin signifie que vous aurez besoin de 4 coordonnées ressemblant à 000,100,110,010, chaque suite de trois chiffre étant une coordonnée XYZ :

Détail des coordonnées d'un cube

Un point aux coordonnées X = 0, Y = 1, Z = 0 sera placé à 64 unités du pivot du brush sur l'axe Y, si Shape Factor est 64. De même, si le chemin possède un point situé à "4" sur l'axe X, la forme sera extrudée sur 4 x 64 = 256 unités sur cet axe. Bien sûr, vous pouvez utiliser des nombres non-entiers, comme 0.5, pour bouger de 32 unités au lieu de 64. Cela signifie aussi que vous pouvez rapidement doubler ou diminuer de moitié l'échelle de votre brush en modifiant le ShapeFactor, ou l'échelle du chemin avec PathFactor.

Le point 0,0,0 est le pivot du brush. En général, le pivot sera au même point que votre premier sommet (qui possède aussi, par défaut les coordonnées 0,0,0), mais vous pouvez facilement décider de bouger votre premier sommet ailleurs, pour que le pivot en soit parfaitement distinct. Dans la majorité des cas, cela ne devrait cependant pas être très utile ou nécessaire.

Sous les Factors se trouve le paramètre ExtrudeType. EX_ThirdWay et EX_Tangential semblent à peu près similaires, mais EX_Transational est tout à fait différent. Utiliser Tangential et ThirdWay vous donnera généralement un résultat où la forme du brush fait face au chemin et est extrudée sur sa longueur. Cela signifique que votre polygone fera toujours face (à chaque point de votre trajectoire) au prochain point de passage, chaque section du "serpent" aura la même largeur, et les coins de votre forme seront bien définis:

Un brush incliné de manière normale

Voici une vue dans le viewport top. Bien que le polygone soit défini sur un plan X/Y, il est tourné pour faire face à la direction du chemin le long duquel il est extrudé, et donc dessiné sur le plan Y/Z. Remarquez que le virage est bien délimité, la forme fait toujours face à la prochaine direction. Si maintenant nous choisissons, EX_Translational :

Une translation simple

Le brush se transforme en purée de sommets et d'arêtes. Pourquoi ? Le polygone est un trapèze défini sur le plan X/Y, auquel est appliqué une simple translation sur le plan X/Y. Si l'on analyse le brush, on voit que le résultat est précisémment ce que nous avons demandé :

Details de la translation

On voit en bleu les trois positions du polygone originel, qui a été déplacé mais jamais altéré ou tourné. Pour avoir un meilleur résultat (plus semblable à la version obtenue avec Tangential et ThirdWay), il faudrait définir le brush non sur le plan X/Y, mais sur le plan Y/Z, afin qu'il fasse face à la première section du chemin et soit donc extrudé de manière similaire. Là où le brush fait un virage, le polygone serait simplement déplacé, et ne subirait pas de rotation : chaque sommet serait déplacé selon les données de PathShape, et le résultat serait relié à la dernière section. Tangential et ThirdWay, au contraire, appliquent une rotation du polygone dans le sens du prochain PathPoint. Tangential sera sans doute le mode le plus utile, mais je peux facilement imaginer des situations où Translation serait utile.

Sous l'ExtrudeType, ShapeSource vous propose trois polygones prédessinés : Square (carré aux côtés de longueur 1, donc à modifier avec ShapeFactor), Circle, un polygone circulaire à 8 faces utile pour les tubes, tunnels et tuyaux, MrPointy, une forme complexe faite de deux flèches se croisant (utile pour se rappeller quel axe est X, Y ou Z), et enfin, Vectors, qui vous permet d'utiliser une forme que vous dessinez vous-même avec ShapePoints. Par défaut, il est à SO_Square, donc vérifiez ce paramètre en priorité si vos ajustements sur les ShapePoints ne semblent pas avoir d'influence. Juste en dessous se trouve PathSource. Ce paramètre important vous permet de décider à quoi les coordonnées de chaque PathPoint (dans la liste du même nom) seront relatives. Par défault, ce paramètre est réglé sur SO_Vect_Abs(olute). Dans ce cas, chaque PathPoint sera défini relativement à l'origine de votre brush. SO_Vect_Rel(ative), au contraire, définit chaque point relativement au point précédent dans la liste :

Coordonées absolues et relatives

Comme vous le voyez, l'ensemble bleu montre trois points ayant des coordonnées relatives à l'origine du brush (le point 0,0,0): ils utilisent des coordonnées absolues. Le deuxième vertex est à "7" de l'origine sur l'axe Y, mais le troisième est à "12" sur le même axe Y et à "8" sur l'axe X. L'ensemble rouge a des coordonnées relatives : chaque vertex est défini par rapport à son prédecesseur : le deuxième vertex est toujours à "7" sur l'axe Y, mais le troisième est à 8X et 5Y du précédent : sa position n'est pas dépendante de la position de l'origine mais de celle du point précédent. Les deux ensembles donnent les trois mêmes sommets

Chaque méthode a des avantages et des inconvénients. Des coordonnées absolues permettent de modifier facilement une section de la forme complète, alors que le moindre changement dans des coordonnées relatives affecte non seulement cette section, mais aussi toutes les sections suivantes. Les coordonnées relatives sont cependant plus faciles à calculer et à manipuler. Leur utilisation dépendra de votre préférence personnelle et des situations.

PresetMetrics est une variable qui interagit avec le paramètre ShapeSource. Si vous utilisez le Square (carré), seuls les champs [0], [1], [2] et [3] sont utilisés ; [0] détermine la largeur du carré sur l'axe X, [1] sa longueur sur l'axe Y. Ces nombres sont multipliés par la valeur de ShapeFactor pour créer le polygone final. Les PresetMetrics [2] et [3] sont utilisés pour excentrer le polygone sur les axes X et Y par rapport à son origine.

Utilisé avec la ShapeSource Circle (cercle), [0] est le nombre de côtés du cercle pour 360°. Cependant, des valeurs supérieures à 16 vous donneront des résultats de plus en plus incorrects au fur et à mesure que vous augmenterez, donnant des cercles visiblement tronqués. [1] définit combien de ces côtés seront utilisés, par exemple 4 sur 8 pour, par exemple, créer des demi-cercles (ou quarts de cercles, etc.) [2] et [3] permettent à nouveau d'excentrer le polygone sur les axes X et Y par rapport à son origine, mais [4] vous permet maintenant de choisir si le cercle est "aligned" (aligné) (1) ou non (0). Un cylindre "aligné" est calculé un peu différemment (Vous pouvez tester ce paramètre sur un cylindre normal pour comprendre la manière dont cela affecte les brushes).

ClosedPath est un paramètre important : si votre brush a au moins trois PathPoints, vous pouvez mettre cette variable à Vrai, et le dernier PathPoint sera automatiquement relié à la première section, pour créer une boucle fermée. Si moins de trois PathPoints sont utilisés, le TEBB refusera la manipulation.

MergeCoplanars signifie "fusionner les faces coplanaires ", et fait exactement ce qu'il suggère : si vous avez un long tunnel sans variation de hauteur, le sol sera fait de plusieurs faces coplanaires, une par section du chemin d'extrusion. En mettant ce paramètre à vrai, ces faces seront fusionnées, ce qui donnera un meilleur éclairage et des textures plus facilement alignées.

SheetPolys vous permet de créer votre brush non pas comme un brush solide, mais comme un ensemble de feuilles 2D : Le brush sera visible de l'intérieur et de l'extérieur, ne sera pas fermé, et n'aura pas de collision. Son intérêt est assez limité.

InvisibleFinal est une fonction difficile à expliquer : Elle permet de construire votre brush sur votre chemin d'extrusion, mais en omettant la dernière section. L'utilité de cette fonction est qu'elle prend tout de même en compte la dernière section non dessinée pour orienter la dernière section dessinée.

The InvisibleFinal

Nous avons de gauche à droite, une forme normale avec deux points sur le chemin d'extrusion, la même avec un troisième point surle chemin, et l'équivalent de cette seconde forme avec InvisibleFinal : comme vous le voyez, bien qu'elle ne soit pas dessinée, la dernière section a une influence sur la section qui la précède, qui se plie de la manière appropriée.

les deux paramètres suivants, Randomiser et RandomiserCaps s'utilisent pour ajouter une marge aléatoire au placement de chaque vertex : en entrant une valeur (par exemple 0.5) dans le champ correspondant à un axe, les vertices sur cet axe verront leurs coordonnées augmentées d'une valeur aléatoire (dans cet exemple, entre 0 et 0.5). Le Randomiser affecte les vertices qui se trouvent sur le chemin, alors que RandomiserCaps affecte les polygones au début et à la fin du brush.

Maths détermine la façon dont le chemin est calculé. Comme il ne reste rien de la documentation "officielle ", il s'agit d'un champ assez mystérieux. Mieux vaut laisser tout cela sur MA_Quaternion, car Matrix est censé causer des problèmes.

GroupName permet de donner un groupe au brush final. Enfin, _COMMAND contient quelques commandes qui sont exécutées en cliquant sur "Build ". C_None est la commande par défaut et ne fait rien. C_ResetPath et C_ResetShape sont de loin les plus utiles car ils permettent de remettre instantanément à zéro les listes PathPoints et ShapePoints (en les remplissant de zéros à votre place). C_ShowShape vous permet de créer votre polygone comme une feuille 2D, ce qui peut être utile lorsque vous êtes encore en train de construire le polygone source. C_ShowJoint créé votre brush en ne laissant que les joints : votre polygone, à chaque point du chemin d'extrusion:

Utilisation des joints

C_MoveShape, C_ScaleShape et C_RotShape permettent respectivement d'excentrer, de changer l'échelle et de tourner votre forme selon les paramètres du champ _Parameters. Pour ce qui est de C_ScaleShape (l'échelle), les paramètres [0] et [1] définissent le coefficient multiplicateur de l'échelle sur les axes X et Y. Pour C_MoveShape (déplacer), ils définissent de combien sera l'excentrage sur les axes X et Y. Pour C_RotShape (rotation), seul le paramètre [0] est utile, et il définit l'angle de rotation. Gardez à l'esprit que contrairement aux habitudes d'UnrealEd, cette rotation utilise de vrais degrés (180 degrés étant un demi-tour), et non les degrés d'UnrealEd (où 360° = 65536).

C_MakeArc ressemble un peu à l'outil revolve du 2D Shape editor, mais seulement un peu : il est censé vous permettre d'extruder votre forme en arche. Vous aurez besoin de trois PathPoints pour l'utiliser. Les trois derniers points du chemin seront utilisés pour créer une arche selon des formules rien de moins que byzantines qu'on ne peut que qualifier de cauchemar mathématique. Voici les explications de Tarquin lui-même:

"Le builder regarde les trois derniers PathPoints; appellons-les A,B,C dans l'ordre, ce qui fait que C est le dernier PathPoint. L'arc commence au point A. B et C sont utilisés pour la taille et l'orientation de l'arche et seront écrasés. B est le centre de l'arche, et C est un point placé au quart du cercle complet. On peut se le représenter en imaginant que AB va de midi au centre de l'horloge, et que BC va du centre à 3h sur cette même horloge.
Notez que si AB et BC ne sont pas égaux, l'arche sera une section d'ellipse et non de cercle."

Pour faire court, donc, les trois derniers PathPoints seront utilisés pour définir, dans cet ordre : 1) la position actuelle de votre forme, au départ de l'arche. C'est un peu l'équivalent du gros vertex orange dans le 2D Shape editor, le centre du brush ; 2) Le centre, ou pivot, autour duquel vous allez faire un arc de cercle. C'est l'équivalent du gros vertex vert du 2D Shape editor, c'est lui qui sera au centre du cercle dont vous allez dessiner une portion ; 3) la position d'un point arbitrairement désigné comme équivalent à un quart de cercle.

La commande C_MakeArc utilise aussi les champs _Parameters : [0] détermine le nombre de côtés pour 360°, [1] est le nombre de ces côtés qui sont utilisés et [2] vous permet de choisir entre "aligné" (1) ou non (0). Donc si vous mettez dans [1] un nombre qui est le quart du nombre que vous avez mis dans [0], vous dessinerez un quart de cercle, qui partira du point A et finira au point C, autour du pivot B. Si vous mettez un nombre équivalent à la moitié de [0] dans [1], vous aurez un demi-cercle, et C sera précisémment au milieu de ce cercle, etc. Comme le dit Tarquin lui-même, si les distances AB et BC ne sont pas identiques, votre "cercle" sera plus large que long (ou vice versa) et sera donc une ellipse.

Enfin, la commande C_MakeMirror vous permet de créer un miroir de votre forme selon le plan au niveau de votre dernier PathPoint utilisé :

Miroirs simples

Le paramètre [0] peut alors être utilisé : il spécifie le comportement de votre dernière section. Avec une valeur de 0, la dernière section de votre brush est supprimée totalement, et ne sert qu'à définir le plan de l'avant-dernière section, qui sert d'axe de symmétrie. Avec une valeur de 1, la dernière section est préservée : l'image miroir commence à la fin de cette section. Avec une valeur de 2, la dernière section est elle-même dans le miroir, et est donc doublée avant l'ajout du miroir.

Ayant maintenant lu les explications de cette immense liste de paramètres compliqués, il est temps de commencer à en faire usage. Nous ne verrons que les fonctionnalités de bases, celles que vous utiliserez le plus sûrement. Des choses très complexes peuvent être tirées du TEBB, mais vous n'en aurez sans doute pas l'utilité avant d'avoir une compréhension et une habitude d'UnrealEd suffisante pour appréhender vous-mêmes les subtilités de l'outil.

Utiliser le Tarquin Extruder.

Observez cette scène:

DmRiot, une map pleine de facilités prises avec le Tarquin Extruder Builder Brush

Il s'agit de DmRiot. La plupart des structures (fenêtres et bordures), courent tout le long de la pièce et sont des formes fermées en anneaux. Exactement le genre de choses que le TEBB rend plus faciles : de longues bordures avec de nombreux virages, se mordant finalement la queue. Construisons donc une pièce de ce genre pour tester notre superbe outil :

Une salle pour tester

Imaginons que vous avez besoin d'une bordure le long de cette pièce. Il faudrait créer un polygone carré extrudé le long des murs. Nous voulons une bordure épaisse de 32 unités d'épaisseur. Commençons donc par ouvrir le TEBB et par choisir un ShapeFactor de 32. Nous n'avons aucune idée des angles et des dimensions dont nous aurons besoin pour cette pièce. Choisissons donc un PathFactor de 32 aussi, assez petit pour nous permettre un peu de précision, mais assez haut pour ne pas avoir à manipuler des valeurs énormes. ShapeSource peut-être laissé à Square, et comme nous ne ferons rien de très complexe, choisissons un PathSource en SO_Vect_Rel. Avant de cliquer sur "Build ", nous avons besoin d'au moins deux PathPoints. Le premier peut très bien être 0,0,0, mais comme il nous en faut un autre, réglons le PathPoint [1] à 0,5,0:

Paramètres de base

Notez de quel côté du brush se trouve le pivot. Dans mon cas, il est dans le coin supérieur-gauche. Il s'agit d'un point important, car dans un virage, certains vertices se trouveront hors de la grille pour garder la largeur du polygone toujours égale.

Un brush tordu. Les vertices à l'intérieur du virage sont hors de la grille

Sur cette image, vous pouvez voir que le vertex (et même les vertices) à l'intérieur du virage, ne sont plus sur la grille, alors que ceux à l'extérieur du virage sont toujours accrochés dessus. Ceci est déterminé par la façon dont votre brush est bâti: tous les vertices du côté du pivot (le vertex à 0,0,0) seront alignés, alors que ceux de l'autre côté seront hors de la grille. Si votre polygone est excentré et qu'aucun vertex ne partage les coordonnées de l'origine, il se peut que tous les vertices soient hors de la grille :

Exemple des différentes situations des vertices sur et hors de la grille

Dans mon cas, je veux que les vertices accrochés à la grille soient ceux à l'extérieur de ma bordure, pour qu'ils correspondent parfaitement à mes murs. La bordure ressortira alors de 32 unités vers l'intérieur de ma pièce. Comme nous utilisons les coordonnées du plan X/Y, il est préferable de s'assurer que vous avez réinitialisé la rotation de votre brush avant d'entrer les premières coordonnées. Faites un clic-droit sur le brush (créez un brush cubique au besoin) et faites Reset => Reset Rotation (ou même Reset All). Puis, dans vos PathPoints, laissez le point 0 à ses coordonnées initiales de 0,0,0, et choisissez X = 5 dans le PathPoint1. Le brush devrait s'étendre depuis son origine vers la droite. Placez l'origine contre le mur à l'intérieur de votre salle.

Placement du TEBB

À partir de là, votre travail ne consiste plus qu'à entrer les coordonnées des PathPoints suivants jusqu'à ce qu'une boucle soit faite jusqu'au dernier coin avant celui où se trouve votre origine. Les coordonnées peuvent être non entières, ou même négatives, pour revenir en arrière sur un des axes : 0.5 avec un PathFactor de 32 vous permettra de déplacer les prochaines coordonnées de 16 dans une direction donnée. Calculer les coordonnées suivantes deviendra vite très facile.

Une bordure complète, à qui ne manque que son dernier segment

Une fois qu'il ne vous manque plus qu'une section, choisissez simplement de mettre ClosedPath à vrai et cliquez sur Build. Une dernière section sera ajoutée, reliant votre dernier polygone au premier.

Brush fermé

Ajoutez votre brush et appliquez-lui une texture. Remarquez le parfait alignement de la texture (il ne vous faudra peut-être qu'une rotation de 90°, comme dans mon cas).

le bordure complète

C'était cool, où est le piège ?

Les avantages du Tarquin Extruder Building Brush sont nombreux: création rapide de bordures longues et complexes, avec presque aucun travail demandé pour les textures, ce qui peut fortement accélérer votre travail, possibilité de garder précisément la largeur d'une poutre ou d'une bordure, ce qui veut dire que vous ne devrez pas jongler avec les décimales de l'échelle de votre texture... Il vous permet aussi d'utiliser moins de brushes, ce qui rend les modifications de pièces complexes plus faciles. La sélection sera plus facile dans tous les viewports. Vous perdrez moins de temps à faire un vertex editing laborieux et ingrat sur des dizaines de brushes pour coller aux limites d'une porte ou d'une salle. Vous pourrez créer facilement câbles et courbes... L'un dans l'autre, le TEBB est un outil très pratique.

Gardez cependant à l'esprit que le TEBB crée des brushes dont plusieurs vertices sont totalement hors de la grille, ce qui rend le BSP d'une pièce plus complexe et moins robuste. Empiler des brushes de ce type sans modération autour d'un BSP déjà déséquilibré finira forcément par corrompre toute la géométrie et vous laissera des HOMs, des trous BSP, des polygones invisibles et d'autres artefacts de ce genre. Si vous n'y pouvez pas grand-chose, cela vous forcera au moins à garder le reste de votre géométrie propre et alignée sur la grille pour limiter les problèmes possibles. Si votre géométrie de base est saine, le TEBB ne devrait pas causer de problèmes.

© 2005-2024, by Hellkeeper.

Valid XHTML 1.1 & CSS 3