Exporter "plusieurs" canaux de textures sous Virtools (Explication
Transcription
Exporter "plusieurs" canaux de textures sous Virtools (Explication
Exporter plusieurs canaux de textures sous Virtools Introduction Virtools ne permet l’exportation que de deux canaux de textures, le canal diffuse, et le canal de lumière. Comment faire, sous 3DS Max 5+ pour obtenir « plusieurs » canaux de textures diffuses. Pour l’exemple, nous prendrons un objet relativement complexe. (il s’agit du mur de scène d’un théâtre romain) Mur de scène d’un théâtre romain Nous ne pouvons appliquer un Mapping UVW simple sur cet objet, sachant qu’il a 2 demis cylindre sur ces bords. Pour mapper cet objet, le plus simple sous 3DS est d’appliquer plusieurs Mapping UVW avec des canaux de textures différents et d’appliquer la bonne texture. Cependant, si on exporte l’objet sous Virtools, deux canaux seront exportés. Par contre, 3DS Max offre la possibilité d’appliquer un mapping localement, ce qui est beaucoup moins connu… Il donne donc la possibilité d’appliquer un modificateur Mapping UVW sur une partie de l’objet et ce, avec le canal désiré. Voila comment procéder. Procédure Sur votre objet, repérez les éléments solidaires (par exemple le cylindre gauche, le droit, et le mur central), puis appliquer des ID matériaux différents (1 pour le centre, 2 et 3 pour le cylindre gauche et le cylindre droit par exemple), cela rends plus simple la création d’un canal de texture complexe. Cylindre gauche du mur Partie centrale du mur Après cela, nous avons plusieurs ID matériaux mais toujours pas de coordonnées de textures. Ajoutons à notre objet un modificateur « Select. Maillage », puis sélectionnez un ID matériaux dont vous voulez appliquer un Mapping UVW. (Ici, l’ID n°10 correspondant au cylindre gauche du mur de scène) Ensuite, Tout en restant en mode sousobjet, ajoutez un mapping UVW, et placez le comme vous le voulez. Ici, un mapping Cylindrique à été placé. Sélection du maillage par ID matériau Il suffit de continuer comme cela pour chaque ID Matériau de l’objet, en ajoutant un modificateur « Select. Maillage » et un mapping UVW, bien sur ayant le même canal de texture. Pour la texture diffuse, prenez le canal 1. Tout vos mapping « sous-objet » doivent avoir le même canal, le 1. Après avoir créer les canaux de texture pour chaque ID matériau, ajouter un dernier modificateur « Select. Maillage » pour revenir au mode objet. Ajoutez un modificateur « Développer UVW » et laissez le sur le canal 1 (le même que la texture diffuse). Appuyez sur le bouton éditer pour voir le résultats de vos mapping locaux. Application locale du mapping UVW Sur cette image nous voyons des polygones « dépassant » le rectangle de mapping [1,1], ce qui est normal. Il faut imaginer que la texture se répète en hauteur et en longueur. Si des polygones sont à l’extérieur, ce n’est pas grave, il s’agit d’un mapping qui ne recouvre pas la totalité de l’élément (par exemple, un mur de brique de 100m de long, ayant un mapping de 5m*5m…) Résultats des mapping locaux dans l’éditeur UVW Nous pouvons restreindre l’affichage des polygones en sélectionnant les ID matériaux. Voici l’ID 10 que nous avons mappé avec notre cylindre : Affichage du developpement UVW par ID matériau Conclusion Il faut maintenant appliquer un matériau multi sous-objet. Pour chaque ID matériau, il faut appliquer la texture voulue, bien sur en laissant le canal de texture à 1 pour chaque texture. Pour conclure, voici un maxscript qui permet la création automatique des matériaux de fusion pour Virtools. Il créer un nouveau matériau fusion, applique dans le premier slot la texture courante de l’objet et dans le second, va chercher la texture de lumière à partir des informations contenues dans le script de rendu en texture. macroscript CreerMateriauxFusion ButtonText:"Creation Materiaux Fusion" category:"Virtools" internalcategory: "Creation Materiaux Fusion" toolTip:"MateriauxFusionVirtools" ( --retire le système d'instances. --Chemin des fichiers, a partir de la configuration du rendu de texture local bakeMtlMappingsIniFile = "$plugcfg/BakeTextureMappings.ini" local iniFile = "$plugcfg/BakeTexture.ini" local chemin = getINISetting iniFile "FileOutput" "FilePath" if chemin == "" then chemin = (getdir #image) extension = getINISetting iniFile "FileOutput" "FileType" if extension == "" then extension = ".tga" i=0 out_name = ((GetDir #export)+"/plantage.txt") out_file = createfile out_name matt = meditMaterials[21] for g in selection do ( --Copie du materiau d'origine if(g.ishidden!=true) then ( MateriauOrigine = copy g.material --MateriauOrigine=g.material MateriauFusion = blend(); MateriauFusion.map1=materiauOrigine MateriauFusion.map1.name="CollectionDiffuse" MateriauFusion.map2=standardMaterial() materiauFusion.map2.name=g.name+"_MateriauLumière" materiauFusion.map2.diffuseMap=bitmapTexture() materiauFusion.map2.diffuseMap.name=g.name+"TextureLumière" materiauFusion.map2.diffuseMap.coords.mapchannel=2 materiauFusion.map2.diffuseMap.filename=chemin+"\\"+g.name+"TextureLumières"+ext ension g.material=materiauFusion try( --select g --exportFile (g.name+".nmo") #noprompt selectedOnly:true ) catch ( format "%" g.name to:out_file format "\n" to:out_file ) --g.material=matt --delete g ) ) close out_file)