Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

SW3D + 3DSmax : "baking" de textures

Compatible Director MX2004. Cliquer pour en savoir plus sur les compatibilités.Par Cerebral, le 03 octobre 2005

Présentation

Un grand merci à Cerebral qui a réalisé ce tuto et le partage avec nous !

Shockwave 3d ne génère pas d'ombre. Il existe cependant un procédé pour afficher des ombres sur un modèle 3d: le texture baking, ou baking de textures.

Le baking consiste à précalculer l'éclairage d'une scène afin que les matériaux appliqués aux modèles incluent les ombres.
Cette opération, décrite ci dessous, une fois réalisée, nous permettra ensuite après quelques manipulations d'exporter nos modèles et de les retrouver visuellement identiques dans Director.

Le résultat :

Avant d'entrer dans les détails de manipulations, je tiens à rappeller qu'il ne s'agit pas de la seule façon de faire pour obtenir des ombres dans Director.
Il est en effet possible de jouer avec les couches(layers) de textures de Shockwave 3d en mixant par exemple la texture diffuse d'un matériau avec une autre couche dont la texture affiche l'ombre.
On parle dans ce cas de lightmaps.

Enfin, il est évident que tous les processus précités ne vous permettront pas d'avoir une ombre temps réel puisque l'ombre fera partie intégrante du matériau.
Cela conviendra parfaitement à des objets fixes.
On pourrait toutefois rendre l'ombre un peu plus vivante en l'animant (en changeant l'image ou l'acteur de la texture dans l'enterFrame par exemple).

Trève de blabla, voyons à présent comment faire du baking avec un logiciel de modélisation assez répandu, 3ds Max (testé sous 3ds max7, devrait être fonctionnel au moins à partir de la version 6).
Je vous propose d'abord 2 vidéos au format Flash completées par quelques explications.

Réalisation

Ci dessous, 2 liens vers des vidéos pour montrer comment faire du baking sur des objets sans coordonnées multiples (1) et sur plusieurs canaux via unwrap (2):

Chaque démo video (captivate, ca va devenir une mode) pèse 1.1 Mo.

Vous pouvez aussi télécharger la totale des fichiers (max,dir,dcr,htm).

Ce qu'il faut en retenir

Dès qu'on manipule plusieurs canaux de textures, il faut, via le renderToTexture:

  • créer un matériau de type Shell
  • sauver les coordonées dans un fichier .uvw
  • supprimer les modificateurs ajoutés (flattened uvw et uvw map dans mon exemple)
  • supprimer la référence à tout matériau/coordonnées de texture via l'outil adhoc
  • créer un nouveau matériau et y placer la planche tga dans le slot diffuse
  • et enfin, appliquer un unwrap et y charger l'uvw précédemment sauvé.

Important

⇒ Pour éviter le bug d'affichage de sw3d avec des textures comportant des canaux alpha, il faut penser, lors du rendu des maps(du baking koi) à choisir un fichier de 24bit au lieu de 32 et à décocher l'option premultiplied alpha.
Voici un exemple de ce que ca donne quand on laisse 32bits par défaut (click&drag la box pour voir les problèmes) :

Erreur pour l'affichage d'un fichier director:
Impossible de trouver le media .:backing_texture:baked_example_zSortingBug.dcr

⇒ Pour que les textures ne soient pas soumises à l'influence des spots dans Director, il faut penser à mettre la valeur emissive des shaders à color(255,255,255).
Cela se configure soit via Lingo (comme dans mon fichier source) soit, il me semble que c'est aussi possible via les propriétés définies sur chaque objet dans max (mais je ne connais pas la syntaxe pour ce type d'éléments).

Voila