Création d'un modèle 3D pour TMUF avec Blender

Ce tuto a pour but de vous initier à la création d'un modèle 3D avec Blender pour Trackmania United Forever.

J'ai commencé à travailler avec Blender en 2007 avant de me sentir capable de réaliser ce tuto. Autant vous dire que la PATIENCE sera le maître mot de votre création.

Logiciels nécessaires


- Ce tutoriel a été créé avec Blender 2.49b Download

- Script d'export .3ds pour TMU download

- Pour des problèmes de transparence dans le jeu, il existe une alternative de conversion .3ds => TM avec Deep Exploration 3.5 (version d'évaluation)

- Un logiciel 2D supportant le format .tga. Personellement, j'utilise Photoshop cs4, mais il existe Gimp qui est gratuit

- DXTBmp pour la gestion et la création des fichiers .dds Download


Tutoriels utilisés pour la réalisation de ce tuto

Tuto by Chupa sur carpark | TM Wiki | Vidéos de Furyjin (fr) | le manuel fr de blender | Tuto 3D de Nadeo (TMN powa) | Création de skin par RM Peper | Conversion pour TMU | Illum.dds by Starbuck

Installation

- Blender: ce logiciel s'installe comme tout bon logiciel qui se respecte: suivant...ok... suivant...etc. A la fin de l'installation, il vous est demandé d'installer Python Script. Faîtes-le (version 2.6 au moment de cette publication). Sinon c'est par

- Script de conversion pour TMUF: Je travaille sous Windows 7 x64, donc si le dossier d'installation est different pour une OS différente, une simple recherche "*.py" vous permettra de le retrouver

vous devez d'abord faire apparaitre les dossiers cachés

dossier d'installation: collez le script dans C:\Users\moncompte\AppData\Roaming\Blender Foundation\Blender\.blender\scripts

remplacez "moncompte" par votre compte utilisateur

- DXTBmp ? naan, ça c'est facile ;)


Allez go c'est parti 5 4 3 2 1 0 BANZAIIIIIIIIIIIIIII :)


Je ne m'étendrai pas sur la céation du modèle à proprement parlé, il existe suffisamment de tutos pour blender (dont ceux cités plus haut), mais plutôt sur ce qu'il est important de faire pour que le modèle soit compatible avec TMUF, ainsi que sur les problèmes que l'on peut rencontrer.


Trucs et astuces avant de commencer


Les calques

Blender vous permet de travailler sur plusieurs calques, pour une plus grande facilité de manipulation des objets.

En mode "Objet", sélectionnez un objet, m, choisissez un calque, entrée

Par habitude, j'utilise les calques de gauche pour la présentation (lumières, caméra, sol, etc) et les calques de droite pour les objets

Calques

Transparence

C'est LE gros point noir de Blender. Même si le bouton double sided est coché , il ne gère qu'une seule face.

Généralement, on ne modélise qu'un seul côté du véhicule, puis on le duplique pour faire l'autre côté.

dans Blender on "voit" le véhicule entier, mais dans TM, vous aurez un côté normal et l'autre transparent :s(p1)

Vous pouvez également voir ce phénomène lorsque les details ne sont pas assez nombreux pour cacher la vue au travers des vitres (p2)

transparence

Pour éviter le problème p1, sélectionnez tous vos objets, puis cliquez sur Alt+z (mode textured).

Vous verrez alors apparaitre les meshs qui posent problème. (Alt+z pour revenir au mode précédent)

Sélectionnez les un par un, puis en mode édition, sélectionnez les faces "retournées" et cliquez dans l'onglet "Mesh tools" sur "Flip Normals"

Une autre méthode consiste, en mode édit, à sélectionner tous les vertices, puis ctrl+n, "recalculate normal outside". Attention cette méthode n'est valable que si toutes les faces sont inversées

flip normals

Pour le problème p2, il faut créer vos détails interieurs de manière à "camoufler" toute vue transparente, ou doubler vos meshs mais cette solution va produire un nombre tres important de vertices

Il existe une alternative, en important votre modèle dans Deep Exploration, qui lui gère mieux le double sided, mais à ce jour je n'ai pas encore trouvé le moyen de gerer les pivots des objets qui nécessitent un placement précis


nb: le mode textured vous permettra de vérifier vos textures sans avoir à ajouter de materiaux sur vos objets car votre modèle doit être dépourvu de materiaux pour la conversion dans TM




On entre dans le bois dur :)

la maxbox

La Maxbox est un cube imaginaire qui détermine les limites phisiques de votre véhicule.

Dans blender, il n'existe pas "d'unité de mesure" comme on les connait (mêtre), j'ai donc importé tous les véhicules (un par enviro) disponibles sur carpark, pour vous mettre à disposition une maxbox type que vous pourrez importer dans blender

Download max.3ds

Sinon vous pouvez, comme moi, importer un des modèles.3ds dispo sur carpark, selon l'enviro que vous désirez

nb: Les objets "LightFProj" et "ProjShad" peuvent dépasser de la maxbox et ne seront pas visibles dans le jeu

Renommer les objets

Les différents noms des objets doivent être précis (respectez les majuscules) pour éviter d'avoir un code d'erreur dans TM

Dans Blender, menu "Editing(F9)", onglet "Link and Materials"

Vous pouvez mettre plusieurs mesh (ME) par objet (OB) mais l'idéal est de n'en mettre qu'un et de renommer ME et OB avec le même nom

noms des objets

Liste des noms

la liste complète des noms est ici

la minuscule devant un nom: "s" pour un objet modifiable dans le painter de TM, "d" pour un objet non-modifiable dans le painter et "g" pour un objet transparent dans TM (non-modifiable dans le painter)

Exemple: si je renomme mes roues dXXWheel (XX = FR/FL/RR/RL) elles ne seront pas modifiable dans le painter, mais si je les nomme sXXWheel, elles le seront

Toujours sur les roues, vous pouvez créer un objet dXXWheel pour les pneus (non-modifiable dans le painter) et un objet sXXWheel pour les jantes (modifiable dans le painter)

Basse et haute résolution

- Votre modèle en basse réso (lowpoly) est ce que verront les autres joueurs en PC0/2, ainsi que l'affichage de votre modèle sur le podium final si vous finissez après la 3eme place

Cette réso ne doit pas contenir plus de 3600 vertices ET 11 objets

Une fois converti en Gbx par TM, vous nommerez en "MainBody.Gbx"


- Votre modèle en haute résolution (highpoly) est ce que vous et les joueurs en PC3 verrez dans TM, ainsi que l'affichage de votre modèle sur le podium si vous ètes dans les 3 premiers

officiellement, cette réso ne doit pas contenir plus de 20 000 vertices et 40 objets, mais j'ai des modèles qui fonctionnent avec un peu moins de 100 000 vertices (mais pas plus de 40 objets)

Une fois converti en Gbx par TM, vous nommerez en "MainBodyHigh.Gbx"

Les Pivots

Le placement

Contrairement aux idées reçues, le placement des pivots est très simple ET très pointu

Pour les objets qui nécessitent un placement précis (LightFProj, les suspensions, cardants, etc...) tout se joue en mode "objet",avec le curseur (que l'on déplace avec le clic gauche de la souris), le zoom (zoom à fond pour une précision "chirugicale") et les vues par defaut (1,3,7 du clavier numérique)

Une fois le curseur placé à l'endroit voulu, on sélectionne l'objet, puis il suffit de cliquer dans l'onglet mesh, sur "center cursor"

Pour les objets "centre scene" (carosserie, details, vitres), cliquez sur alt+c (ça remet le curseur au centre de la scène) puis "center cursor"

Pour les roues et phares, qui nécessitent un pivot au centre de l'objet,sélectionnez l'objet et cliquez sur "center new"

pivot1

L'orientation

Par défaut, les pivots sont orientés convenablement

Cependant, il se peut que vous ayez à modifier leur orientation pour les lumières arrières (mais le script d'export semble le faire pour vous)

Si le cas se présente, ou si vous créez des suspentions et autres parties mobiles apparentes, cliquez sur "global" et choisissez "local"

pivot2

En mode objet, vous allez pouvoir effectuer une rotation de l'objet ET du pivot (pensez à revenir en mode global si vous avez d'autres objets à modifier)

puis en mode edit, replacez votre objet en position intiale

Les textures

Bon on s'accroche, car après la création du modèle, c'est la partie la plus longue à effectuer

Tout d'abord vous devez effectuer les "découpes".

en mode edit, basculez en "sélection par arrète" selection par arretes

sélectionnez votre ligne de découpage puis, ctrl+e, markseam. Prennez le temps de bien faire vos découpes sinon vous risquez d'importantes déformations de texture

une fois que c'est fait, ouvrez une deuxieme fenêtre (clic droit sur la barre de séparation entre la fenêtre principale et le menu, split area), et choisissez l'affichage "UV/Image editor"(1). sélectionnez dans la première fenêtre, toutes les arretes, u, unwrap. Dans la deuxieme apparait alors votre dépliage

tout ce que vous ferez dans cette 2eme fenêtre ne sera actif que si vous étes en mode edit dans la première.

Cliquez sur view(2), view properties, UV Strech (3).uv1

Cela vous permet de voir le niveau de déformation de votre dépliage (ce système est visuellement opaque, donc enlevez le s'il vous gène) plus vous êtes bleu foncé moins votre dépliage est déformé et inversement plus vous êtes dans le rouge plus il l'est, en passant pas le vert et le jaune

uv2

Réordonnez votre mesh de manière à obtenir un futur diffuse ou details utilisable par le commun des mortels (c'est là que selon votre modèle, ça peut être très long.... patience, restez cool ;) )

Cliquez sur UV, Scripts, Save UV Face Layout, pour extraire les UV avec les réglages ci-dessous

uv3

réglages

uv4

Vous obtenez une image votremodèle.tga dans le dossier où vous avez enregistré votre modèle

A ce stade, je vous conseille d'éditer cette image dans votre logiciel 2D, d'écrire dessus et de la recharger dans blender afin de vérifier que le dépliage ne se soit pas inversé que vous soyez obligé par la suite de faire votre Diffuse.dds ou votre Details.dds "à l'envers"

pour cela,dans la fenêtre des UV (fenetre2) cliquez sur image, open, et rechargez l'image modifiée. puis dans la fenetre 1 (celle de votre modèle) passez en mode "textured" (alt+z) et vérifiez que tout est bien à l'endroit

sinon, dans la fenetre 2 sélectionnez les vertices qui posent problème, cliquez sur m et choisissez l'axe a changer (x ou y), si le texte est en mirroir, ou modifiez avec les commandes habituelles si le texte est juste "la tête en bas"

Ça parait simple car je vous montre l'exemple du Diffuse. Pour les détails, il faudra créer une image à partir de plusieurs dépliages, éditez l'image à chaque nouveau dépliage et rechargez l'image de manière à placer le dépliage suivant afin qu'ils ne se chevauchent pas. (les roues, les details interieurs, les vitres, etc), le principe reste le même

uv6

Au final, cette opération produit les "wireframe" que vous fournirez avec le modèle, très utiles pour les futurs skinneurs

Le ProjShad et les prelights

Avant cela, vous devez avoir fait le dépliage de tous les objets, puis avoir chargé une image "texture" pour chaque objet(voir paragraphe Textures), sans cette image "texture", le "bake" ne peut s'effectuer

- le ProjShad (projection de l'ombre)

On va commencer par créer une image (taille= multiple de 2), par exemple 1024x512

Prévoyez l'objet "plan de projshad" (en bleu sur l'image précedente) assez grand car les réglages vont produire une "ombre assez "baveuse". Vous pouvez vérifier, en posant une lumiere au dessus de la voiture et en faisant un rendu image (F12) (ça vous donnera une idée du rendu final)

Puis on déplie l'objet que j'ai nomé "plan de projshad". cet objet ne doit pas être placé dans le modèle final, mais va servir à produire le ProjShad.dds.

On passe dans le menu scene(F10) et dans l'onglet Bake

Sélectionnez "Ambiante occlusion" puis "Normalised"

Cliquez sur le bouton "BAKE" (le gros au milieu ^^) et patientez jusqu'à ce que le rendu bake soit fini (vous voyez apparaitre petit à petit le rendu dans la fenetre 2)

Fenetre 2, vous cliquez sur "image", save as

Il ne reste plus qu'à éditer cette image pour mettre un cadre blanc sur le tour (l'image doit etre blanche à 4px du bord) puis à l'enregistrée en dds (DXT1 noalpha, avec mipmaps

- Les prelight (ombrage de la voiture)

le procédé est le même, mais cette fois vous l'appliquez au sBody

Editez l'image obtenue, car les réglages de Blender produisent une image assez sombre. Une réduction de l'opacité sera la bienvenue :)

Vous pouvez l'appliquer sur tous les objets pour un modèle encore plus réaliste, mais carpark ne demande pas ce niveau de détail

L'export

Bon... si vous etes satisfait de votre modèle, et que vous avez passé toutes ces étapes avec succes, sélectionnez tous vos objets, cliquez sur file, et si vous avez placé le script d'export au bon endroit, vous voyez dans le menu "export" l'option "3ds for trackmania", clic :)

Faîtes le pour les 2 poly (high et low), et renommez-les comme il se doit (MainBodyHigh.Gbx pour le high et MainBody.Gbx pour le low)

créez vos Diffuse.dds/DiffuseDirty.dds(dxt5+mipmaps), Details.dds/DetailsDirty.dds(dxt5+mipmaps), Icon.dds, Illum.dds ( je ne m'étends pas sur ce sujet car ce n'est pas spécifique à Blender


Zippez le tout, vous etes prêt à Uploader sur Carpark :)

Special Thanks To

Un énorme merci à Chupa, qui m'a relancé au début quand j'allais abandonner, et qui m'a apporté un soutient de tous les instants (j'espère ne pas avoir été trop boulet ^^). C'est promis, je viendrai te poutrer sur les vagues de l'ile de beauté ;)

Merci à Jambon, Glaucobacchi, Furyjin, Pepper, ugghost.com, toute l'équipe de Carpark, Starbuck, ainsi qu'à tous ceux qui ont fait des tutos pour Blender et TM :)

un gros merci à deezer et jamendo, pour l'animation musicale, pendant toutes ces heures... que dis-je... tous ces mois de modélisation

Commentaires et aides

Si vous avez des soucis, vous pouvez poser vos questions sur le forum fr de TM (lien)