Home - Forums - Documentation - Gallery - Bugs

Contents

Bonnes pratiques pour les Artistes

Échelle

Utilisez une échelle appropriée et commune à tous les modèles. Coordonnez-la avec avec votre développeur. Habituellement, 1 unité de dessin correspond à 1 mètre.

Pivot

Gardez le centre de l'objet au milieu du mesh ou au sol, mais pas dans une position arbitraire. Souvenez-vous que la rotation et le déplacement des modèles sont calculés à partir du point de pivot.

Vous pouvez le faire automatiquement en cliquant le bouton Centre dans Editing Onglet Mesh.

Transformation

Les déplacements, rotations et échelles sont réservés à la conception de niveaux. Si vous modélisez un seul objet, n'utilisez pas de transformations. Gardez votre objet dans une position et une rotation neutre. Si vous avez fait des transformations, alors utilisez les options pour les appliquer à la position des sommets.

Faites : Transform → Clear/Apply → Clear Location et Transfrom → Clear/Apply → Apply Scale/Rotation [Ctrl+a]

Direction

Dans la vue de face, vous verriez le dos de votre modèle. La caméra CEL est spécifique, si vous l'utilisez, les personnages principaux qui utilisent la caméra vous feront face.

Nommage

N'utilisez pas de noms aléatoires, tels que Object_031, mesh13_, blackblack_23_, 01_-_material_new2. Mettez-vous en relation avec votre développeur pour les noms.

Si votre projet utilise le Gestionnaire de Zone ou si vous gardez toutes vos maps chargées en mémoire en une fois, alors souvenez-vous qu'il vous faudra utiliser des noms différents dans la totalité de votre projet. Si vous utilisez des noms en double, vous aurez la garantie d'avoir des conflits. Il est préférable d'utiliser un nom unique pour chaque chose que vous pouvez nommer dans la totalité de votre projet, même s'ils sont dans des maps séparées.

Soyez attentif à la convention de nommage par défaut qu'utilise Blender pour vos fabriques de mesh.

Textures

Utilisez le format .png, il est compressé, il est sans perte et il utilise un canal alpha (transparence) sur 8bits (256 tonalités).

N'utilisez pas de .jpg, excepté pour les textures qui ne requièrent pas énormément de détails, mais sachez que dans ce cas, il est préférable de garder l'image source en .png sinon vous perdrez de la qualité à chaque édition de la texture. Arrangez-vous avec votre développeur, il décidera quelles textures pourront être compressées avec pertes ou non.

Entre chaque partie dépliée de votre modèle, laissez un espace d'environ 2 pixels de large, particulièrement aux endroits de fort contraste. Autrement vous obtiendrez des couleurs baveuses sur les objets éloignés.

Habituellement il est préférable de créer ses textures à la résolution finale, celle que vous souhaiter utiliser, de cette façon elles apparaîtront de meilleure qualité. Le redimensionnement n'est pas toujours optimal et peut détruire certains détails qui peuvent être faits au pixel près.

Les textures photographiques contiennent couramment trop d'informations d'éclairage et sembleront très probablement étranges avec l'application des éclairages de map. Imaginez un cube avec la même texture sur toutes les faces : avec les infos d'éclairage, toutes les faces n'auront pas les mêmes informations sur la direction de l'éclairage. Pour amenuiser ces différences, prenez vos photographies pendant que les jours où le soleil est plus diffus et faites quelques retouches.

Utilisez aussi des textures avec des tailles en puissance de 2. Par exemple 256x128, mais pas 256x130. Dans ce dernier cas, Crystal Space redimensionne cette texture en interne ce qui, parfois, rendra plutôt moche.

Au moment d'éditer le jeu, basculez les en .dds avec la compression dxt. Je ne pense pas que le dxt5 soit nuisible dans tous les cas, il peut manipuler les couches/mipmaps, possède un transparence 8bits, et le plus important, c'est le même format que les cartes graphiques utilisent, cela signifie que vos textures se chargeront plus vite.

Type de compression DDS :

  • DXT1 : opaque - ratio de compression 8:1 - à utiliser pour les textures standards.
  • DXT3 : alpha net - ratio de compression 4:1 - pour les textures avec une transparence marquée.
  • DXT5 : alpha adouci - ratio de compression 4:1 - pour les textures avec une transparence interpolée.

A la date d'aujourd'hui (mars 2007), il n'existe pas de chipset graphique pouvant stocker de texture plus grande que 4096x4096 (1024x8192 ne fonctionne pas tout le temps). Ne vous préoccupez pas des textures trop grandes, si elles n'entrent pas dans la mémoire alors Crystal Space les réduira automatiquement.

Vous pouvez avoir image.png et image.dds dans le même dossier, utilisez le fichier .png pour Blender dans la vue 3D, et à l'exportation, Blender2Crystal prendra le fichier .dds.
DDS plugin : gimp 1.2 (lecture seule) et un meilleur pour gimp 2.0.
DDS plugin: Nvidia Photoshop Tools

Matériaux

Chaque matériau éclairé par pixel nécessite une normalmap. Si vous n'en avez pas fait pour votre modèle, vous pouvez utiliser une fausse normalmap plane (une simple image avec la couleur 127,127,255).

Transparence

Vous pouvez utilisez deux modes de transparence.

  • Transparence adoucie.
Conduit à un adoucissement continu de la transparence, mais peut causer un problème dans l'ordre d'affichage, où votre objet apparaîtra quelquefois derrière des objets qui devrait derrière lui. Dans ce cas, vous devez définir le zmode en ztest ou alors utilisez la transparence binaire.
  • Transparence binaire : tout opaque / tout transparent.
Le mode binaire est plus rapide (utilisation : <alpha><binary/></alpha>). Pour marquer des pixels comme transparents, vous pouvez utiliser le support de la transparence dans un format comme le .png ou le keycolor (couleur clé qui apparaîtra comme transparente). Pour le keycolor, on utilise d'habitude la couleur crazy pink (Rouge = 255, Vert = 0, Bleu = 255).

Pour éviter d'horribles entourages (effet halo) dans les textures transparentes, utilisez l'alpha prémultipliée. Trouvez cette option dans votre programme 2D/3D.

Les panneaux transparents seront rendus en éclairage par sommet avec un rendu fixe. A noter que les ombres en temps réel ne respectent pas votre canal alpha, il fera apparaitre la forme entière du mesh. Pensez à cela avant de concevoir votre jeu.

Si vous faites un rendu de vos panneaux avec de la transparence, utiliser Scene [F10] → bouton [Premul].

Essais

Généralement, lors de la construction de grands niveaux, vous voudrez construire des objets séparément, ainsi la personne chargée de la composition des niveaux peut facilement assembler des pièces ensemble dans l'éditeur de niveau. Ceci signifie que chaque objet s'assemble correctement ensemble (souvent en ayant une taille distincte) et les centres des objets seront appropriés. Les textures seront carrelées correctement sur les objets.

Soyez attentif aux trous entre les objets et le terrain. Dans les objets comme les arbres ou les maisons, c'est une bonne idée de préparer une base à environ 0,5m sous la surface du sol.

Pour faire une texture carrelée utilisez le built-in Make seamless ou mieux le plugin Resynthesizer.
Pour faire une texture carrelée utilisez le filtre : Filter → Other → Offset filter, définir l'horizontale et la verticale à la moitié de la taille de votre texture et contrôler la Wrap Around box.

Vitesse

10 objets avec 10000 polygones chacun, est plus rapide que 10000 objets avec 10 polygones chacun. La même chose s'applique aux matériaux, utilisez une grande texture avec plusieurs faces dépliées, c'est meilleur que plusieurs textures. Bien sûr, il sera parfois impossible notamment si vous avez besoin d'un shader pour la vitre et d'un autre shader pour la carrosserie par exemple.

Chevauchement

Éviter le chevauchement de surfaces. En rendu temps réel, il apparaîtra un horrible effet de clignotement appelé z-fighting. Au lieu d'intersections, il est préférable d'ajouter une paire de faces de connexions entre les surfaces.

Normales

Il n'existe pas de surfaces à double face. Chaque polygone possède une face déterminée par sa normale. Vérifiez que vos normales pointent dans la bonne direction. Si vous avez besoin d'une surface à deux faces, alors copiez et inversez vos polygones. Dans ce cas, ne faites pas attention à la règle précédente, le chevauchement de polygones pointe dans une direction différente et ne cause pas de problème de z-fighting.

Vous pouvez doubler toutes vos faces automatiquement en paramétrant Render en Twosided
Vous aurez souvent besoin d'avoir des faces spécifiques à double côté dans le même mesh. Pour ce faire, en mode edit, sélectionnez les faces que vous voulez doubler, dupliquez-les [Shift+S] et basculer les normales à l'opposé ([W] pour le menu -> Flip Normals). Si le modèle n'est pas encore fini, vous pouvez souhaiter séparer les faces opposées ([P] -> Separate Selected) pour un travail plus facile avec le maillage.
Blender ne propose pas de support pour la création de surfaces double face. Lorsque vous avez besoin de quelques surfaces d'un mesh en double face, vous pouvez trianguler les surfaces [Ctrl+T] et alors recréer les triangles du côté opposé et inverser leurs normales.

Éventails de triangle

Éviter les éventails de triangle et les polygones fins. C'est moche dans un rendu temps réel. La forme idéale devrait s'approcher de celle d'une grille.

Vous pouvez essayer la réorganisation optimale automatique de vos faces en utilisant Edit → Faces → Beauty Fill [Alt+F]

Trous

Parfois pour des raisons d'optimisation, les objets doivent être fermés. Certains shaders (ombres en temps réel avec des normalmaps) requiert des objets fermés pour un rendu propre. Mettez vous en relation avec votre programmeur pour les objets fermés.

Pour trouver les faces internes, basculer en mode de rendu Solide et basculer en mode sélection de face [F]. Celà devrait vous offrir quelques indices en teintant les faces en couleur or.

Groupes lissés

Si vous avez besoin d'une couture visible sur votre mesh, alors séparez les sommets des polygones. Mais si ce n'est pas nécessaire, ne doublez pas vos sommets.

Pour séparer un sommet en deux, faites Edit → Vertices → Rip [V]. Pour effacer les sommets en double, faites Edit → Vertices → Remove Doubles [W] [5]

Déformation des joints dans un mesh

Pour la modélisation d'appendice, que vous aurez besoin de déformer par une animation, rappelez-vous qu'au moins deux anneaux qui encerclent le diamètre sont indispensable pour maintenir le volume. Le premier exemple possède trois anneaux sur le devant, qui se réunissent en deux sur le derrière. Le dessus apparaît comme lié à 100% avec le bone du haut, le dessous 100% lié avec le bone du bas, et le milieu est partagé équitablement entre les deux. C'est la meilleure solution pour une utilisation en low-poly. Si vous devez obtenir encore moins de polygones, deux anneaux complets sont nécessaires comme dans l'exemple du milieu. Le dessus est lié au bone du haut, le dessous au bone du bas. Ceci assure que les deux parties du joint maintiennent leur volume. Le dernier exemple est ce qu'il faut éviter. Ce sont deux anneaux qui se réunissent en un sur l'arrière. La partie réunie est partagée à 50/50, et vous pouvez voir que les volumes s'effondre à l'endroit du joint. Maintenez toujours deux anneaux si possible.

Image:ArtistLimbDeformationForAnimation.gif

Terrain

Les terrains ignorent vos UVs. Ils sont générés en interne par le moteur. Basemap et Materialmap recouvre simplement votre mesh terrain, et pour les Splats, les UVs font un grille normale. L'échelle de cette grille est définie dans la variable du shader.

Si vous faites un mesh terrain et générez une heightmap, alors le résultat dans le jeu sera toujours un petit peu différent de votre mesh original, spécialement sur les pentes. Vérifiez également les limites de votre heightmap, il y a parfois des trous.

Encodage d'une heightmap : Rouge*65536 + Vert*256 + Bleu.

Utilisez le plugin de feuillage pour faire de l'herbe, il peut utiliser une Materialmap pour choisir où sera l'herbe, les arbres et les pierres. Utilisez une Materialmap pour choisir quelle texture sera affichée sur le sol, à quelle place, et dans la plupart des cas, plus de 4 ou 5 textures tueront probablement votre taux d'images par seconde.

Vous pouvez facilement faire votre Materialmap en réduisant vos couleurs de Basemap au nombre de Splats.

Blender2Crystal créera automatiquement une heightmap, basée sur le mesh que vous aurez étiqueté terrain.

Format

Pour la géométrie, Crystal Space utilise son propre format de fichier et quelques formats populaires : 3ds, cal3d, md2. Si vous voulez utiliser 100% des fonctionnalités, il est préférable d'utiliser le format natif de Crystal Space. Actuellement, l'exportation à partir de Blender est la mieux supportée. Si vous travailler dans une équipe et que les membres utilisent plusieurs programmes 3D, échangez vos modèles entre vous dans n'importe quel format populaire comme Collada ou Obj Wavefront.

Si vous basculez souvent entre les applications, Obj devrait être la meilleure solution, c'est très simple, il est supporté par la plupart des applications. Collada est basé sur du XML et supporte pas mal de choses. Son inconvénient est qu'il est difficile d'écrire un parser pour ce format et du fait qu'il soit récent, toutes les applications ne le supportent pas encore. Toutefois en dernier point, il est supposé être LE format d'échange.

Le plugin Collada est en cours.
Plugin Collada : http://www.feelingsoftware.com/

Auteurs

Darek, Genjix, Jorrit, Orogor, DistantShores


Langage: EnglishBrazilianChineseEspañolEsperantoFrançaisMagyar
Make a translation

| Article | Discussion | View source | History |