Mat ID des FBX depuis 3dsmax

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6208
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Mat ID des FBX depuis 3dsmax

Message par boubouk50 » 21 Août 2015 10:04

Ceci n'est pas une question mais une info concernant la réorganisation/l'agencement des ID matériaux des meshs des fichiers FBX exportés depuis 3dsmax. Je n'ai pas poussé plus loin pour savoir si c'est inhérent au FBX ou bien à Unity, je fais juste le rapport de ce que j'ai résolu pour ceux qui seraient dans le même cas que moi.
Les ID matériaux servent aux multimateriaux c'est à dire à avoir plusieurs matériaux sur le même mesh.
Je me suis rendu compte que les IDs entre 3dsmax et Unity sont différents et peuvent être source de soucis dans certains cas.
En effet, les IDs matériaux sont remaniés entre les 2 logiciels (où exactement, je n'ai pas creusé) en fonction du numéro de la face. Ainsi, la première face de votre mesh aura automatiquement l'ID 1. l'ID 2 sera ensuite attribué à la prochaine face de la liste possédant un ID différent de la première et ainsi de suite.
Ex: Un cube avec les faces 1, 2 et 4 en ID 3, les faces 3 et 6 en ID 2, la face 5 en ID 1 dans 3dsmax.
Selon l'ordre de construction, on commence donc par la face 1. Celle-ci dans Unity aura l'ID 1 (U). La face 2 partage le même ID (max) donc elle aura également l'ID 1 (U). la face 3 possède un ID (max) différent donc se verra attribuer l'ID 2 (U). La face 4 aura l'ID 1. La face 5 l'ID 3 (U) car encore un nouvel ID (max) et enfin la face 6 l'ID 2 (U) car identique à la face 3.
Ainsi un cube avec faces dans 3dsmax:
1,2 et 4 ID 3
3 et 6 ID 2
5 ID 1
deviendra dans Unity
1,2 et 4 ID 1
3 et 6 ID 2
5 ID 3

Ce nouvel agencement des IDs peut devenir un problème lorsque vous travaillez avec les MeshFilters. Si vous décidez de changer le MeshFilter d'un gameObject au lieu de tout le gameObject, alors il faut que l'agencement des IDs matériaux soient identiques pour que le multimatériau appliqué concorde bien.

Exemple pratique: Un sélecteur de voiture pour un showroom.
Au lieu de charger les voitures entières avec tout le tintouin, vous pouvez simplement changer le MeshFilter du gameObject. Ainsi vous gardez toutes les propriétés du GameObject, seul le mesh change. Le matériau appliqué reste donc le même que sur le mesh de la voiture précédente. Si les IDs matériaux réagencés du nouveau mesh ne concorde pas avec l'ancien mesh, alors vous risquez de vous retrouver avec le matériau de phares à la place du pare-brise, la peinture sur les pneus et un intérieur entièrement chromé.

Pour faire en sorte que les IDs correspondent entre les logiciels, la solution est simple: faire le tri dans le logiciel de modélisation.
Pour ce faire, il faut reconstruire la liste des faces en détachant chaque élément par ID. Ainsi, vous vous retrouverez avec plusieurs objets ayant chacun un seul ID. Ensuite, vous attachez un à un ces objets en commençant par l'ID le plus bas vers le plus haut. Donc vous prenez l'objet qui ne possède que des ID 1, vous attachez l'objet avec que des ID 2, puis 3, puis 4, etc. Ainsi, la liste sera triée.

La bise.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
Bouiss
Messages : 91
Inscription : 27 Fév 2014 16:19

Re: Mat ID des FBX depuis 3dsmax

Message par Bouiss » 21 Août 2015 10:59

J'avais jamais fait attention pour les IDs ,merci pour l'info.

Avatar de l’utilisateur
flaviat
Graphiste
Graphiste
Messages : 79
Inscription : 13 Mai 2013 16:49
Localisation : Provins
Contact :

Re: Mat ID des FBX depuis 3dsmax

Message par flaviat » 21 Août 2015 11:33

Pas encore rencontré le problème, mais merci de l'info ;)
Lead Environment Artist - Freelance
Mon portfolio : https://www.artstation.com/florianboue

Répondre

Revenir vers « Unity le logiciel »