Skip to content

Checklist d’exportation de Blender vers Unity : échelle, axes, os et animations correctement importés (2026) ​

Dernière mise à jour : septembre 2026.

Un personnage low poly riggé passant d’une vue Blender à une scène Unity en conservant la même taille

Pour importer un modèle Blender dans Unity à la bonne taille, orienté dans la bonne direction et doté d’un rig lisible par Unity, exportez-le au format FBX depuis File > Export > FBX (.fbx) en réglant Apply Scalings sur FBX Units Scale (ou FBX All), Forward sur -Z et Up sur Y, en activant Apply Unit, en désactivant Add Leaf Bones, en réglant Smoothing sur Face et en choisissant Path Mode Copy avec Embed Textures activé. Ne déposez pas le fichier .blend dans Assets et réservez glTF aux accessoires statiques tant que l’importateur glTFast de Unity ne lit pas les animations sans travail supplémentaire. Tout ce qui suit explique pourquoi chaque réglage est important, comment reconnaître un réglage incorrect et comment le corriger dans Blender ou Unity.

Réponse rapide ​

  • Format : FBX pour tout élément riggé ou animé. glTF (.glb) uniquement pour les accessoires statiques, et seulement après l’installation du paquet com.unity.cloud.gltfast. Jamais le fichier .blend brut.
  • Échelle : dans Scene Properties de Blender, réglez Unit System sur Metric et Unit Scale sur 1.0. Dans l’exportateur, choisissez Scale 1.00, Apply Scalings FBX Units Scale et cochez Apply Unit. Dans Unity, réglez Scale Factor sur 1 et cochez Convert Units. Un personnage de 1,8 m doit mesurer 1,8 unité de haut, avec une échelle de 1 sur chaque transformation.
  • Axes : choisissez Forward -Z et Up Y dans l’exportateur (les valeurs par défaut). Dans l’onglet Model de Unity, cochez Bake Axis Conversion afin de faire disparaître la rotation de -90 sur X de la transformation racine.
  • Os : décochez Add Leaf Bones. Cochez Only Deform Bones si vous exportez un rig de contrôle Rigify ou Auto-Rig Pro. Modélisez dans une pose en T et nommez les os d’après les parties du corps afin que l’Avatar Humanoid se mappe automatiquement.
  • Animation : utilisez une Action par clip, ou une bande NLA par clip. Laissez NLA Strips et All Actions activés, ainsi que Key All Bones, avec Sampling Rate réglé sur 1. Dans Unity, les clips apparaissent dans l’onglet Animation, à raison d’un clip par AnimStack FBX.
  • Textures : choisissez Path Mode Copy et activez Embed Textures. Dans l’onglet Materials de Unity, cliquez sur Extract Textures, puis sur Extract Materials. Un matériau rose signifie que le shader ne correspond pas à votre pipeline de rendu, et non que la texture est absente.

Référence rapide ​

Les réglages de l’exportateur FBX de Blender qui comptent pour Unity, avec la valeur à utiliser et sa raison d’être. Les noms et descriptions des options proviennent du manuel de Blender et du code source de l’exportateur.

PanneauRéglagePour UnityPourquoi
IncludeSelected ObjectsActivéLes caméras, lumières et plans de référence ne doivent pas être exportés
IncludeObject TypesArmature, Mesh (Empty si vous utilisez des repères)Les caméras et lumières sont importées comme des composants Unity que vous supprimerez
TransformScale1.00Toute autre valeur inscrit un multiplicateur obscur dans le fichier
TransformApply ScalingsFBX Units Scale ou FBX AllPlace le facteur de conversion mètres-centimètres dans l’en-tête du fichier plutôt que sur chaque objet
TransformForward / Up-Z Forward, Y UpUnity utilise Y comme axe vertical et Z comme axe avant
TransformApply UnitActivéRespecte les réglages d’unités de votre scène
TransformUse Space TransformActivéInscrit la conversion des axes dans les rotations des objets
TransformApply TransformDésactivéL’exportateur lui-même indique que cette option ne fonctionne pas correctement avec les armatures et les animations
GeometrySmoothingFaceUnity a besoin des groupes de lissage pour les normales des blend shapes
GeometryApply ModifiersActivéExporte le maillage évalué (miroir, subdivision, triangulation)
ArmaturePrimary / Secondary Bone AxisY / X (valeurs par défaut)Unity n’en tient pas compte, mais les outils de retargeting, si
ArmatureArmature FBXNode TypeNullValeur par défaut, importée comme GameObject racine vide
ArmatureOnly Deform BonesActivé pour les rigs de contrôle, désactivé pour les armatures simplesÉvite d’inclure les cibles IK et les widgets dans le squelette
ArmatureAdd Leaf BonesDésactivéSinon, chaque chaîne se termine par un os _end visible dans Unity
Bake AnimationKey All Bones, NLA Strips, All Actions, Force Start/End KeyingTous activésUn AnimStack par clip, avec des images clés sur chaque os
Bake AnimationSampling Rate / Simplify1.0 / 1.0Une image clé par frame, avec un léger nettoyage des courbes
MainPath Mode / Embed TexturesCopy / ActivéLes textures sont intégrées au fichier .fbx

Ne déposez pas le fichier .blend dans Assets ​

Unity accepte les fichiers .blend, et c’est justement le piège. La page de Unity consacrée aux formats propriétaires explique ce qui se passe : « Le logiciel de modélisation 3D doit être installé pour importer directement des fichiers propriétaires dans Unity » et « lors de la première importation d’un fichier propriétaire dans Unity, le logiciel de modélisation 3D doit être lancé par un processus en ligne de commande ». Unity exécute en arrière-plan l’exportateur FBX de Blender avec des réglages que vous ne contrôlez pas. Vous obtenez donc les valeurs par défaut de l’exportateur, notamment les os terminaux et la configuration d’échelle à l’origine de la plupart des problèmes décrits sur cette page.

La même page énumère les limites de la méthode .blend : « Les textures et la couleur diffuse ne sont pas attribuées automatiquement » et « Blender n’exporte pas la valeur de visibilité des animations dans le fichier FBX ». La page de Unity sur les formats 3D souligne également le problème pour les équipes : les ressources enregistrées au format .blend « ne peuvent pas être importées si le logiciel de modélisation 3D correspondant n’est pas installé sur votre ordinateur ». Ainsi, « toutes les personnes travaillant sur votre projet Unity doivent avoir installé le bon logiciel », y compris sur la machine de build. Le verdict de Unity est clair : « Dans la mesure du possible, il est recommandé d’utiliser le format de fichier .fbx et de ne pas employer de formats de modèles propriétaires en production. »

Conservez le fichier .blend dans un dossier source situé en dehors d’Assets (ou dans un dossier dont le nom se termine par ~, que Unity ignore), puis exportez le FBX dans Assets.

FBX ou glTF pour Unity en 2026 ​

FBX. L’importateur de Unity lit nativement les formats .fbx, .dae, .dxf et .obj, et sa page sur les formats 3D ne mentionne même pas glTF. La prise en charge de glTF passe par Unity glTFast, un paquet à ajouter via Window > Package Manager > Add package by name avec com.unity.cloud.gltfast. Il s’agit d’un paquet Unity officiel depuis décembre 2023, disponible en version 6.17.0 en mars 2026. Sa page d’installation indique que l’Editor installe la dernière version ainsi que ses dépendances. Une fois le paquet installé, vous pouvez déposer un fichier .glb dans Assets pour l’importer à l’aide d’un ScriptedImporter. Built-in, URP et HDRP sont tous pris en charge.

Trois éléments l’empêchent de devenir le choix par défaut pour les personnages. Sa page des fonctionnalités indique que les animations ne sont entièrement prises en charge que « via l’ancien système Animation » et précise pour Mecanim que « les clips d’animation peuvent être importés dans un format compatible avec Mecanim, mais ils ne sont pas attribués et ne peuvent pas être lus sans travail supplémentaire ». Draco, KTX2 et Meshopt nécessitent chacun un paquet supplémentaire (com.unity.cloud.draco, com.unity.cloud.ktx, com.unity.meshopt.decompress). Enfin, l’importateur de textures de Unity lit les formats BMP, EXR, GIF, HDR, IFF, JPG, PICT, PNG, PSD, TGA et TIFF, mais pas WebP. C’est pourquoi glTFast 6.17 a ajouté un message d’erreur explicite pour les images WebP. Un GLB optimisé pour le Web, avec des textures WebP et une compression Draco, n’est pas le bon fichier pour Unity.

glTF reste pertinent pour les accessoires statiques et pour tout contenu chargé à l’exécution depuis un serveur, domaine dans lequel glTFast excelle. Pour intégrer un personnage riggé et animé dans un Animator Controller, exportez-le au format FBX. Si vous disposez déjà d’un GLB, le visualiseur GLB vous permet d’en examiner le contenu, et Blender l’importe proprement en vue d’une réexportation.

Échelle : pourquoi le modèle arrive 100 fois trop grand, ou avec une valeur de 0.01 partout ​

FBX mesure en centimètres, Blender en mètres. Le code de gestion des unités de l’exportateur tient en une ligne : le facteur de conversion de Blender vers FBX est 100.0 * scene.unit_settings.scale_length, accompagné d’un commentaire indiquant que FBX stocke « l’unité de “référence” d’un fichier dans sa propriété UnitScaleFactor (1.0 signifiant centimètre) ». Chaque exportation en mètres contient donc quelque part un facteur de 100, et le menu déroulant Apply Scalings détermine où il est placé.

La valeur par défaut, All Local, est décrite ainsi : « Applique la mise à l’échelle personnalisée et la conversion des unités à la transformation de chaque objet ; l’échelle FBX reste à 1.0 ». Chaque objet du fichier reçoit une échelle de 100 sur sa transformation. L’onglet Model de Unity applique ensuite Convert Units, qui « convertit l’échelle du modèle définie dans le fichier de modèle vers l’échelle de Unity ». Le prefab paraît alors avoir la bonne taille, mais le maillage porte une échelle de 100 et le fichier une échelle de 0.01 qui l’annule. C’est le fameux 0.01. Tout fonctionne jusqu’à ce que vous attachiez un objet à un os, pilotiez une transformation par code ou effectuiez un retargeting : le facteur 100 dissimulé réapparaît alors.

FBX Units Scale signifie « Appliquer la mise à l’échelle personnalisée à la transformation de chaque objet, et la conversion des unités à l’échelle FBX » : le facteur 100 est déplacé dans l’en-tête d’unités du fichier et chaque objet conserve une échelle de 1. FBX All place à la fois le facteur d’unité et votre valeur Scale personnalisée dans l’en-tête, ce qui produit le même résultat tant que Scale reste réglé sur 1.00. Ces deux options conviennent à Unity. Côté Unity, conservez les valeurs par défaut : la documentation de l’onglet Model indique que Scale Factor existe parce que « le système physique de Unity suppose que 1 m dans l’univers du jeu correspond à 1 unité dans le fichier importé ». Laissez donc cette valeur sur 1 et conservez Convert Units activé.

Un cube d’un mètre, trois arrivéesFBX compte en centimètres : chaque export comporte donc un facteur de 100. Apply Scalings détermine où il va.BlenderUnit Scale 1.0, mètresCube de 1 méchelle 1, 1, 1File > Export > FBXAll Local (valeur par défaut)Le facteur 100 passe dans la transformation de chaque objet. Unity l’annule avec Convert Units.L’apparence est correcte. Échelle de transformation 100, échelle de fichier 0,01.Pose problème si vous parentez des accessoires aux os ou pilotez les transformations par code.FBX Units Scale ou FBX AllLe facteur 100 va dans l’en-tête UnitScaleFactor du fichier. Les objets conservent l’échelle 1.L’apparence est correcte. Échelle de transformation 1, 1, 1.Convert Units désactivé, ou Scale Factor modifié, dans UnityRien n’annule le facteur 100. Le cube mesure 100 unités de côté.100 mCorrection dans Unity : Scale Factor 1, Convert Units coché. Puis réimportez.
L’exportateur écrit toujours un facteur de 100 pour une scène en mètres. All Local le stocke sous forme d’une échelle de 100 sur chaque objet et laisse l’option Convert Units de Unity l’annuler, ce qui explique pourquoi les objets Blender importés affichent 100 et 0,01. FBX Units Scale et FBX All le stockent plutôt dans l’en-tête du fichier, et les transformations sont alors propres.

Deux autres erreurs d’échelle sont courantes. Si vous avez modifié Unit Scale dans les propriétés de la scène afin de travailler en centimètres, l’exportateur multiplie par 100 fois cette valeur Unit Scale. Le manuel de Blender précise que ce réglage « influence uniquement les valeurs affichées dans l’interface utilisateur, et non le comportement interne » : une valeur Unit Scale de 0,01 avec Apply Unit activé peut donc réduire un personnage de 180 cm à 1,8 cm. Par ailleurs, une échelle d’objet différente de 1,0 est intégrée au FBX. Sélectionnez tout et exécutez Object > Apply > All Transforms (Ctrl-A). Le manuel de Blender le confirme : « Il est recommandé d’appliquer les transformations avant le rigging et l’animation. » N’appliquez pas l’échelle à une armature qui contient déjà une animation, car cela redimensionne les images clés.

Axes : d’où vient le -90 sur X ​

Dans Blender, l’axe vertical est Z. Le manuel FBX l’indique clairement : « Blender utilise Y Forward, Z Up (car la vue de face regarde dans la direction +Y). Par exemple, il est courant que des applications utilisent Y comme axe vertical ; dans ce cas, il faut choisir -Z Forward, Y Up. » Dans Unity, l’axe vertical est Y et l’avant correspond à Z. Comme la vue de face de Blender regarde dans la direction +Y, un personnage modélisé face à la caméra avant regarde vers -Y. Les réglages par défaut de l’exportateur, -Z Forward et Y Up, effectuent précisément la correspondance avec l’avant de Unity. Conservez-les.

Même avec les bons axes, l’objet racine d’un FBX Blender affiche dans l’Inspector de Unity une rotation de -90 (souvent -89,98) sur X, avec une rotation compensatoire sur les enfants. Il s’agit de la conversion d’axes stockée sous forme de transformation plutôt qu’intégrée aux sommets. Voici trois méthodes pour la supprimer, par ordre de préférence.

Bake Axis Conversion dans Unity. L’option de l’onglet Model « intègre directement les résultats de la conversion d’axes aux données de l’asset de votre application (par exemple, les données de sommets ou d’animation) lorsque vous importez un modèle utilisant un système d’axes différent de celui de Unity ». Cochez-la : la racine affiche alors 0, 0, 0, sans aucune modification dans Blender.

Appliquer une contre-rotation dans Blender. Une fois toutes les transformations appliquées, faites pivoter l’objet de -90 sur X, appliquez la rotation, puis faites-le pivoter de +90 sur X et exportez sans appliquer cette dernière rotation. L’option Use Space Transform de l’exportateur (« Appliquer la transformation d’espace globale aux rotations des objets ») convertit ce +90 en une rotation nulle dans Unity. Des extensions communautaires automatisent cette opération : le projet blender-to-unity-fbx-exporter donne à chaque objet exporté « une rotation de +90 degrés autour de l’axe X dans sa transformation sans modifier réellement la pose visuelle », puis l’annule après l’export.

Apply Transform dans l’exportateur. Ne l’utilisez pas pour les éléments riggés. Sa propre description se termine par « (AVERTISSEMENT ! option expérimentale, à utiliser à vos risques et périls, connue pour ne pas fonctionner avec les armatures/animations) », et l’exportateur affiche une icône d’erreur à côté. Elle fonctionne pour un accessoire statique, mais vous pouvez tout à fait vous en passer.

Axes de Blender et axes de UnityMême personnage, deux conventions. Le réglage -Z Forward, Y Up de l’exportateur fait le lien.Blenderrepère direct, Z vers le haut, vue de face orientée selon +YUnityrepère indirect, Y vers le haut, Z vers l’avantZ en hautX-Y, l’avant du modèle+YY en hautXZ vers l’avantExportateur-Z ForwardY Up= 90 autour de XUnity stocke ce 90 sous forme de -90 sur la transformation racine, sauf si Bake Axis Conversion est coché.Le Z de Blender devient le Y de Unity. Le -Y de Blender devient le +Z de Unity.
Dans Blender, l’axe vertical est Z et un modèle orienté vers l’avant regarde dans la direction -Y. Dans Unity, l’axe vertical est Y et l’avant correspond à +Z. Les réglages par défaut Forward -Z et Up Y de l’exportateur correspondent exactement à la rotation de 90 degrés autour de X qui fait passer d’un repère à l’autre. Unity conserve ensuite cette rotation sous forme d’un -90 sur la racine ou, lorsque Bake Axis Conversion est activé, l’intègre aux sommets.

Os : os terminaux, orientation et Avatar Humanoid ​

Os terminaux. Add Leaf Bones est activé par défaut et décrit comme suit : « Ajouter un dernier os à l’extrémité de chaque chaîne afin de préciser la longueur du dernier os (utilisez cette option si vous comptez modifier l’armature à partir des données exportées). » L’exportateur nomme chacun de ces os d’après son parent en ajoutant _end. La hiérarchie de Unity se remplit donc de Head_end, LeftHand_end et LeftToeBase_end. Ils sont inoffensifs pour les rigs Generic, mais perturbent la correspondance automatique et les outils de reciblage Humanoid. Décochez cette option. Si vous réimportez le FBX de quelqu’un d’autre, l’option Ignore Leaf Bones de l’importateur les supprime.

Rigs de contrôle. Un rig Rigify ou Auto-Rig Pro possède des centaines d’os qui ne déforment pas le maillage et servent aux contrôles, aux cibles de cinématique inverse et aux mécanismes. Only Deform Bones écrit « uniquement les os de déformation (ainsi que les os sans déformation lorsqu’ils ont des enfants qui déforment le maillage) », ce qui correspond au squelette dont Unity a besoin. Intégrez d’abord l’animation aux os de déformation, car les contraintes du rig de contrôle ne sont pas exportées : seul leur résultat sous forme d’images clés l’est.

Orientation des os. Dans Blender, les os pointent le long de leur axe Y local. Unity lit la pose de référence et les poids de skinning, puis joue les données reçues ; les réglages Primary Bone Axis et Secondary Bone Axis peuvent donc rester respectivement sur Y et X. Ils deviennent importants lorsque le même FBX est envoyé vers un outil qui suppose une convention particulière, comme Unreal ou une extension de reciblage.

L’Avatar Humanoid. L’onglet Rig de Unity propose Generic (« si votre rig n’est pas humanoïde, par exemple un quadrupède ou toute autre entité à animer ») ou Humanoid (« si votre rig est humanoïde, c’est-à-dire s’il possède deux jambes, deux bras et une tête »). Humanoid permet le reciblage entre personnages et impose certaines règles, détaillées sur la page Configuration de l’Avatar. Le squelette doit comporter « au moins 15 os organisés d’une manière qui corresponde approximativement à un véritable squelette humain ». « Si Unity ne parvient pas à créer l’Avatar, une croix apparaît à côté du bouton Configure et aucun sous-asset Avatar n’est créé. » Dans Configure, un os accepté par Unity « apparaît en vert dans l’onglet Avatar Mapping », tandis qu’un os rejeté « apparaît en rouge ». Quant à la pose : « Si l’affectation des os est correcte, mais que le personnage n’est pas dans la bonne pose, le message “Character not in T-Pose” s’affiche. Vous pouvez tenter de corriger le problème en choisissant Enforce T-Pose dans le menu Pose. » Créez donc le rig en pose en T, avec la pose de repos également en T, et nommez les os d’après les parties du corps (pour le mappage automatique, Unity recommande de nommer les os « de manière à refléter les parties du corps qu’ils représentent »). Les noms Mixamo (mixamorig:Hips, mixamorig:LeftArm) sont mappés automatiquement de façon fiable, ce qui explique pourquoi tant de riggers les utilisent dans leurs exports. Si quelques os ne sont pas reconnus, faites-les glisser depuis la Hierarchy vers les emplacements correspondants, puis choisissez Pose > Enforce T-Pose, puis Apply, et enregistrez le résultat sous forme de Human Template (.ht) pour le prochain export du même rig.

Si vous n’avez pas encore de rig, le guide du rigging automatique explique ce dont les outils de rigging automatique ont besoin dans un maillage, et l’extension Cinevva Rig produit une armature humanoïde avec des noms Mixamo directement dans Blender, sur votre propre machine et hors ligne, au prix de lancement unique de 29 $, pour Blender 4.2 et versions ultérieures sous Windows, macOS et Linux.

Root motion ​

Le root motion est le déplacement de la racine du personnage dans le monde, par opposition aux membres qui bougent sur place. La page de Unity consacrée au root motion s’appuie sur un Root Transform qui « est une projection sur le plan Y du Body Transform et est calculé à l’exécution ». Pour chaque clip, vous choisissez d’intégrer la rotation, Y et XZ à la pose ou de les conserver comme mouvement déplaçant le GameObject. Bake Into Pose sur XZ est le réglage habituel pour les animations d’attente afin « de forcer la Position delta (XZ) à 0 » et d’empêcher le personnage de dériver. Pour les rigs Generic, la page précise qu’« au lieu d’utiliser le Body Transform pour calculer/projeter un Root Transform, le transform défini dans Root Node est utilisé », et que Root Node est réglé par défaut sur None dans l’onglet Rig. Sélectionnez-y donc l’os des hanches ou l’os racine, faute de quoi le root motion ne produira aucun effet sans avertissement.

Côté Blender, la règle est la suivante : animez le déplacement sur un os, pas sur l’objet armature. L’exportateur écrit l’objet armature sous forme de nœud Null (Armature FBXNode Type, « similaire à l’Empty de Blender »), tandis que les réglages de root motion de Unity examinent les os sous l’Avatar, et non cet objet vide. Un os racine dédié, placé au niveau du sol, parent de Hips et comportant les images clés du déplacement, correspond à la structure pour laquelle l’option Root Node de Unity est conçue. Les clips créés sur place, dont le déplacement est géré par le code, n’ont besoin d’aucun os racine ; c’est ainsi que la plupart des bibliothèques d’animations sont distribuées.

Animations : actions, pistes NLA et baking ​

Unity lit les AnimStacks FBX et affiche chacun d’eux comme un clip dans l’onglet Animation, où vous pouvez les scinder, les renommer, les mettre en boucle et les raccourcir. Le panneau Bake Animation de Blender détermine le nombre d’AnimStacks obtenus.

Une Action par clip. Lorsque All Actions est activé, l’exportateur « exporte chaque action comme un AnimStack FBX distinct, à la place de l’animation globale de la scène (notez que les objets animés reçoivent toutes les actions compatibles avec eux, tandis que les autres ne reçoivent aucune animation) ». Nommez vos Actions Idle, Walk, Run, Jump, et Unity les répertoriera sous ces noms. Attention toutefois au point mentionné dans cette description : toute Action dont les canaux correspondent à l’armature est considérée comme compatible. Une Action parasite provenant d’un autre rig peut donc s’y rattacher. Supprimez les Actions que vous ne souhaitez pas distribuer.

Une piste NLA par clip. Lorsque NLA Strips est activé, l’exportateur « exporte chaque piste NLA non désactivée comme un AnimStack FBX distinct, le cas échéant, à la place de l’animation globale de la scène ». Transférez chaque Action vers sa propre piste, désactivez celles que vous ne distribuez pas, et vous contrôlerez précisément les plages d’images tout en pouvant exporter un clip qui mélange deux Actions.

Effectuez d’abord le baking lorsque des contraintes sont utilisées. Le manuel FBX de Blender classe les contraintes parmi les éléments qui ne sont pas exportés : « Le résultat de l’utilisation des contraintes est exporté sous forme d’animation par images clés, mais les contraintes elles-mêmes ne sont pas enregistrées dans le FBX. » IK, Copy Rotation et Child Of sont échantillonnés selon le Sampling Rate de l’export. C’est pourquoi Key All Bones (« Forcer l’export d’au moins une clé d’animation pour tous les os ») et Force Start/End Keying doivent rester activés. L’option Bake Animations de Unity n’est « disponible que pour les fichiers Autodesk Maya, Autodesk 3ds Max et Cinema 4D » ; le baking doit donc être effectué dans Blender. Sur une copie, Object > Animation > Bake Action avec Visual Keying et Clear Constraints produit une Action entièrement en FK qui ne risque pas d’être mal interprétée.

Simplify. Le réglage Simplify de l’exportateur (« Niveau de simplification des valeurs calculées par baking ; 0.0 pour désactiver, les valeurs élevées produisant une simplification plus importante ») est réglé par défaut sur 1.0 et convient aux clips de jeu. Si un clip tremble dans Unity, mais pas dans Blender, réglez-le sur 0 et laissez Anim. Compression de Unity réduire les images clés.

Deux habitudes côté Unity complètent le processus. Les fichiers nommés [email protected] sont regroupés automatiquement : selon la page consacrée au fractionnement des animations, « Unity importe automatiquement les quatre fichiers et regroupe toutes les animations dans le fichier dont le nom ne comporte pas le signe @ ». Ainsi, hero.fbx associé à [email protected] produit un seul personnage avec un clip Walk, et vous pouvez réexporter un seul clip sans toucher au maillage. Activez également Loop Time pour les cycles dans l’onglet Animation, car le format FBX ne possède aucune notion de boucle.

CGDive présente le rig d’un personnage Generic dans Blender et les réglages d’export FBX pour Unity, notamment les choix concernant les os de déformation et les os terminaux mentionnés ci-dessus.

Textures et matériau rose ​

L’exportateur FBX de Blender référence les textures par leur chemin, sauf si vous lui demandez de les inclure. Réglez Path Mode sur Copy : l’option Embed Textures devient alors disponible et est décrite ainsi : « Intégrer les textures au fichier FBX binaire (uniquement avec le mode de chemin “Copy” !) ». Le fichier .fbx contient désormais les images. Dans Unity, l’onglet Materials conserve par défaut les matériaux en tant que sous-assets (« Use Embedded Materials »), et deux boutons permettent de les extraire : Extract Textures écrit les images intégrées dans un dossier, tandis qu’Extract Materials transforme les sous-assets en fichiers .mat modifiables. Extrayez d’abord les textures, puis les matériaux, afin que les matériaux extraits pointent vers les textures extraites. Après l’extraction, « les nouvelles importations ou les modifications de l’asset d’origine n’affectent pas les matériaux extraits ». C’est le comportement recherché : vous pouvez réexporter le maillage cent fois sans perdre les ajustements effectués sur les matériaux dans Unity.

Vous récupérez la couleur de base et quelques emplacements. FBX ne possède aucune norme PBR offrant une correspondance exacte avec le Principled BSDF de Blender. Attendez-vous donc à devoir attribuer manuellement les textures de rugosité, de métallicité et de normales dans Unity. Le Material Creation Mode « Import via MaterialDescription » lit la description du matériau intégrée au FBX et offre un résultat plus fidèle que le mode Standard (Legacy).

Passons ensuite au rose. La page de Unity consacrée à l’error shader explique qu’« Unity affiche un objet avec le shader d’erreur par défaut lorsqu’il existe un problème avec le matériau ou le shader de cet objet », par exemple lorsque le shader ne compile pas ou n’est pas pris en charge, et que « le shader d’erreur par défaut est magenta (rose vif) ». Dans le cas particulier des imports : « Si votre projet utilise l’Universal Rendering Pipeline (URP), Unity peut afficher un objet avec le shader d’erreur par défaut si cet objet utilise un shader de la Built-In Render Pipeline. » Les matériaux FBX importés utilisent par défaut des shaders Built-in ; dans un projet URP ou HDRP, ils apparaissent donc en rose. Les textures manquantes ne rendent pas un matériau rose, mais gris ou blanc.

La correction se fait à l’aide d’un seul menu. Sélectionnez les matériaux roses et exécutez Edit > Rendering > Materials > Convert Selected Materials to URP, ou ouvrez Window > Rendering > Render Pipeline Converter, choisissez Built-in Render Pipeline to URP, cochez Material Upgrade et lancez la conversion, conformément à la documentation du convertisseur. Seule restriction : « Ce convertisseur ne prend pas en charge les matériaux utilisant des shaders personnalisés », ce qui n’est jamais le cas des matériaux FBX importés. HDRP propose l’équivalent sous Edit > Rendering > Materials.

Lissage et normales ​

Le menu déroulant Smoothing de Blender propose quatre options, dont l’une compromet une fonctionnalité de Unity. Normals Only exporte « uniquement les normales, sans écrire les données de lissage des arêtes ou des faces », et le manuel indique que « si l’importateur prend en charge les normales personnalisées séparées, Normals Only est généralement l’option la plus précise ». Face écrit le lissage des faces, Edge celui des arêtes, et Smoothing Groups écrit des groupes de faces lissées ensemble. Unity importe correctement les normales dans tous les cas (son réglage Normals utilise Import par défaut). Toutefois, sous Import BlendShapes, l’onglet Model de Unity avertit : « L’importation des normales de blend shapes nécessite des groupes de lissage dans le fichier FBX. » Si vous exportez avec Normals Only un visage comportant des shape keys, les cibles de morphing arriveront avec un ombrage plat ou incorrect.

Face constitue le choix par défaut le plus sûr pour Unity, tandis que Smoothing Groups convient si vous envoyez également le fichier vers des outils de type 3ds Max. Si vos arêtes dures proviennent du modificateur Smooth by Angle, cochez Apply Modifiers, faute de quoi elles disparaîtront. Si un maillage paraît facetté dans Unity alors qu’il est lisse dans Blender, réglez Normals sur Calculate et Smoothness Source sur From Angle dans Unity pour effectuer une vérification rapide, puis corrigez l’export.

Symptôme, cause, correction ​

Symptôme dans UnityCauseCorrection
Modèle minuscule ou 100 fois trop grandScale Factor modifié, Convert Units désactivé, ou Blender Unit Scale autre que 1.0 avec Apply Unit activéUnity : Scale Factor 1, Convert Units activé. Blender : Unit Scale 1.0, Scale 1.00
Taille correcte, mais l’échelle indique 100 et File Scale 0.01Apply Scalings laissé sur All LocalChoisissez FBX Units Scale ou FBX All pour Apply Scalings, puis réimportez
Racine tournée de -90 (ou -89.98) sur XConversion d’axe enregistrée comme un transformCochez Bake Axis Conversion dans l’onglet Model
Personnage tourné vers l’arrière ou sur le côtéModèle orienté vers +Y ou +X dans BlenderOrientez-le vers -Y dans Blender (vue de face) et conservez Forward -Z
Os Head_end, Hand_end supplémentairesAdd Leaf Bones laissé activéDécochez Add Leaf Bones
Des centaines d’os, de cibles IK et de widgets dans la hiérarchieRig de contrôle exporté dans son intégralitéCochez Only Deform Bones et effectuez d’abord le baking vers les os de déformation
Croix à côté de Configure, aucun AvatarMoins de 15 os requis reconnus, ou os non identifiésRenommez les os d’après les parties du corps, vérifiez les 15 os requis et effectuez le mappage manuellement
« Character not in T-Pose »La pose de repos est une pose en A ou une pose relâchéePose > Enforce T-Pose, ou corrigez la pose de repos dans Blender
L’animation se joue, mais le personnage ne se déplace pasRoot Node est réglé sur None avec un rig Generic, ou le déplacement comporte des images clés sur l’objet armatureDéfinissez Root Node dans l’onglet Rig et animez le déplacement sur un os racine
Un seul clip importéNLA Strips et All Actions désactivés, ou Actions sans fake userActivez les deux options, avec une Action ou une piste par clip
Les membres dérivent ou sautent aux endroits où l’IK était utiliséeContraintes exportées sous forme de clés échantillonnées avec une valeur Simplify trop élevéeEffectuez Bake Action dans Blender, avec Simplify à 0
Matériaux rose vifShaders Built-in dans un projet URP ou HDRPUtilisez Convert Selected Materials to URP (ou HDRP)
Matériaux gris, textures manquantesPath Mode n’est pas réglé sur Copy, Embed Textures est désactivéUtilisez Copy avec Embed Textures, puis Extract Textures dans Unity
Ombrage des blend shapes plat ou incorrectSmoothing réglé sur Normals OnlyUtilisez Face ou Smoothing Groups pour Smoothing
Rendu facetté alors qu’il était lisse dans BlenderModificateur Smooth by Angle non appliquéCochez Apply Modifiers
Tous les membres de l’équipe rencontrent une erreur d’importationFichier .blend dans Assets et Blender absent de leur machineExportez en FBX et conservez le fichier .blend hors d’Assets
Six questions, dans l'ordre qui fait gagner du tempsCorrigez la taille avant la rotation, et les os avant l'animation, car chaque vérification suppose les précédentes réussies.nonnonnonnonnonnonLa taille est-elle correcte, avec une échelle de 1 ?un personnage de 1,8 m mesure 1,8 unitéApply Scalings : FBX Units Scale. Unity : Convert Units activé.Unit Scale 1.0 dans Blender, Scale 1.00 à l'exportLa rotation racine est-elle à 0, 0, 0 ?et le modèle regarde-t-il vers +Z ?Cochez Bake Axis Conversion dans l'onglet Model d'Unity.Gardez -Z Forward, Y Up. Orientez vers -Y dans Blender.La liste ne contient-elle que le squelette déformant ?aucun os _end, aucune cible IK ni aucun widgetDécochez Add Leaf Bones. Cochez Only Deform Bones.Bakez d'abord le rig de contrôle sur les os déformantsLe mapping de l'Avatar Humanoid est-il vert ?aucune croix près de Configure, aucun message de pose en TNoms anatomiques, 15 os requis, repos en pose en T.Pose > Enforce T-Pose, mappez à la main les os rougesTous les clips sont-ils présents et animés ?un clip par Action ou piste, root motion fonctionnelleNLA Strips + All Actions et Key All Bones activés.Rig Generic : définissez Root Node. Bakez l'IK avant l'export.Les matériaux sont-ils texturés, ni roses ni gris ?rose = mauvais pipeline, gris = textures absentesConvert Selected Materials to URP. Copy + Embed Textures.Puis Extract Textures, puis Extract Materials
Descendez le long de la colonne de gauche. Une réponse négative vous envoie à droite vers l'unique réglage responsable. La taille vient en premier, car une échelle de 100 sur l'armature se dissimule derrière tous les autres problèmes ; les os précèdent l'animation, car un clip ne peut pas être lu sur un squelette qu'Unity n'a pas reconnu.

La checklist en 10 étapes ​

Suivez ces étapes dans Blender sur une copie du fichier, puis dans Unity.

  1. Nettoyez la scène. Supprimez les caméras, les lumières, les images de référence et tout ce qui ne sera pas livré. Fusionnez les maillages qui partagent un matériau lorsque c'est pertinent, et vérifiez que chaque maillage devant se déformer est parenté à l'armature avec un modificateur Armature.
  2. Vérifiez les unités. Scene Properties, Units : Unit System Metric, Unit Scale 1.0, Length Meters. Consultez le panneau Dimensions (N) de votre personnage : de 1,6 à 2,0 m pour un humain.
  3. Appliquez les transformations. Sélectionnez les maillages, puis Object > Apply > All Transforms. Faites de même pour une armature sans animation. Pour une armature animée, ne l'appliquez pas et vérifiez que son échelle est déjà à 1.0.
  4. Corrigez la pose et les noms. Utilisez une pose de repos en T, orientée vers -Y (la vue de face). Donnez aux os des noms anatomiques, avec des paires .L et .R ou Left et Right. Ne créez pas vous-même d'os _end.
  5. Préparez les clips. Créez une Action par clip avec un utilisateur fictif, ou une piste NLA par clip. Bakez tout mouvement piloté par l'IK ou des contraintes avec Object > Animation > Bake Action, en activant Visual Keying.
  6. Exportez. File > Export > FBX (.fbx). Activez Selected Objects. Pour Object Types, choisissez Armature et Mesh. Scale 1.00, Apply Scalings FBX Units Scale, Forward -Z, Up Y, Apply Unit activé, Use Space Transform activé, Apply Transform désactivé. Smoothing Face, Apply Modifiers activé. Pour les rigs de contrôle, activez Only Deform Bones et désactivez Add Leaf Bones. Activez Bake Animation ainsi que Key All Bones, NLA Strips, All Actions et Force Start/End Keying, avec Sampling Rate 1.0 et Simplify 1.0. Path Mode Copy, Embed Textures activé. Enregistrez ces réglages comme préréglage d'opérateur (le + en haut du panneau).
  7. Importez. Déposez le fichier .fbx dans Assets. Onglet Model : Scale Factor 1, Convert Units activé, Bake Axis Conversion activé, Import BlendShapes activé si vous utilisez des clés de forme. Cliquez sur Apply.
  8. Configurez le rig. Onglet Rig : Humanoid pour un bipède, Generic dans les autres cas. Avatar Definition Create From This Model. Cliquez sur Configure et vérifiez que les os sont verts et qu'aucun message relatif à la pose en T n'apparaît. Pour Generic, définissez Root Node si le clip doit déplacer le personnage. Cliquez sur Apply.
  9. Configurez l'animation. Onglet Animation : vérifiez qu'il existe un clip par Action. Activez Loop Time pour les cycles. Activez Root Transform Position (XZ) Bake Into Pose pour les animations d'attente. Cliquez sur Apply.
  10. Configurez les matériaux. Onglet Materials : utilisez Extract Textures vers un dossier Textures, puis Extract Materials vers un dossier Materials. Dans un projet URP ou HDRP, sélectionnez les matériaux extraits et choisissez Edit > Rendering > Materials > Convert Selected Materials to URP. Faites glisser le prefab dans une scène et comparez son échelle, son orientation et son rendu à ceux de Blender.

La méthode en un clic ​

Si vous préférez ne pas mémoriser l'étape 6, le module complémentaire Cinevva Rig propose une carte d'exportation avec un préréglage Unity qui applique exactement cette recette : FBX, Forward -Z, Up Y, échelle unitaire appliquée avec FBX All, aucun os terminal, lissage Face, textures incorporées et limitées à 2 048 px. Avant de cliquer sur Export, son analyse de taille répartit l'estimation du fichier entre la géométrie, les textures, l'animation et les clés de forme. Vous pouvez ainsi constater que les 60 Mo proviennent de trois textures 4K plutôt que du maillage. Comparés à une simple exportation GLB depuis Blender, les préréglages ont produit des fichiers 68 %, 89 %, 92 % et 98 % plus petits sur quatre vrais modèles, presque entièrement grâce à la limitation et au réencodage des textures. L'exportation s'exécute localement, sans clé, sans compte et sans connexion réseau. La partie payante du module concerne le rigging : un achat unique au prix de lancement de 29 $, du rigging local illimité après un téléchargement initial du moteur d'environ 2,4 Go, sur Blender 4.2 et versions ultérieures, ainsi que 260 clips d'animation CC0 retargetés sur le rig dans Blender, qui sont ensuite exportés sous forme d'Actions comme décrit ci-dessus.

La solution payante de référence pour les allers-retours FBX est Better FBX Importer & Exporter de Mesh Online, avec plus de 12 800 ventes sur Superhive. Il s'agit d'une implémentation FBX entièrement nouvelle fondée sur le SDK FBX officiel d'Autodesk, « compatible avec toutes les versions de FBX, d'ASCII à binaire, de FBX 5.3 à FBX 2020 », dont les exportations ont été « vérifiées dans Unity Engine 2021, Unreal Engine 4/5 et Godot Engine v4.1.1 », selon sa page produit. Ses deux fonctions phares sont l'orientation automatique des os à l'importation — les axes d'os que l'importateur de Blender laisse tordus — et une exportation « Optimize For Game Engine » qui écrit les armatures avec une « échelle unitaire et des rotations nulles ». Si vous importez de nombreux fichiers FBX provenant d'autres artistes ou effectuez des allers-retours avec Maya ou 3ds Max, il est rentabilisé dès la première semaine. Si vous exportez uniquement vos propres créations Blender vers Unity, les réglages de cette page donnent gratuitement le même résultat.

Questions fréquentes ​

Comment exporter de Blender vers Unity ? ​

Exportez un fichier FBX, pas le fichier .blend. Utilisez File > Export > FBX (.fbx) avec Selected Objects activé, Scale 1.00, Apply Scalings FBX Units Scale, Forward -Z, Up Y, Add Leaf Bones désactivé, Smoothing Face et Path Mode Copy avec Embed Textures activé. Dans l'onglet Model d'Unity, cochez Convert Units et Bake Axis Conversion, puis extrayez les textures et les matériaux depuis l'onglet Materials.

Pourquoi mon modèle Blender a-t-il une échelle de 0.01 ou 100 dans Unity ? ​

Le format FBX compte en centimètres ; l'exportateur de Blender multiplie donc par 100 une scène définie en mètres. Avec la valeur par défaut All Local pour Apply Scalings, ce facteur 100 se retrouve dans la transformation de chaque objet, et l'option Convert Units d'Unity le compense avec une échelle de fichier de 0.01. Choisissez plutôt FBX Units Scale ou FBX All : le facteur sera placé dans l'en-tête du fichier et toutes les transformations resteront à 1. Si le modèle est 100 fois trop grand, Convert Units est désactivé ou Scale Factor a été modifié dans Unity.

Pourquoi mon FBX Blender a-t-il une rotation de -90 sur X dans Unity ? ​

Dans Blender, l'axe Z pointe vers le haut, tandis que dans Unity il s'agit de l'axe Y. L'exportateur enregistre la rotation de 90 degrés entre les deux comme une rotation sur l'objet racine, qu'Unity affiche à -90 — souvent -89.98. Cochez Bake Axis Conversion dans l'onglet Model d'Unity : la rotation sera intégrée aux sommets et la racine affichera zéro. N'utilisez pas l'option Apply Transform de l'exportateur sur un modèle riggé, puisque sa propre description indique qu'elle ne fonctionne pas correctement avec les armatures et les animations.

Comment exporter des animations de Blender vers Unity ? ​

Créez une Action par clip — ou une piste NLA par clip —, bakez tout mouvement piloté par l'IK ou des contraintes avec Bake Action, puis exportez avec Bake Animation, Key All Bones, NLA Strips, All Actions et Force Start/End Keying activés. Chaque Action arrive sous forme de clip dans l'onglet Animation d'Unity, avec son nom Blender. Pour un rig Generic, définissez Root Node dans l'onglet Rig si vous souhaitez utiliser la root motion, et activez Loop Time pour les cycles.

Dois-je utiliser FBX ou glTF pour Unity ? ​

Utilisez FBX pour tout modèle riggé ou animé. Unity importe nativement le FBX, tandis que glTF nécessite le paquet com.unity.cloud.gltfast, dont l'importation des animations n'est complète que pour l'ancien système Animation et demande encore du travail pour Mecanim. De plus, Unity ne peut pas lire les textures WebP. glTF constitue un bon choix pour les accessoires statiques et les modèles chargés à l'exécution depuis un serveur.

Pourquoi mes matériaux sont-ils roses dans Unity après une importation depuis Blender ? ​

Le rose correspond au shader d'erreur d'Unity et, lors d'une importation, cela signifie presque toujours que le matériau utilise un shader du Built-in Render Pipeline dans un projet URP ou HDRP. Sélectionnez les matériaux et exécutez Edit > Rendering > Materials > Convert Selected Materials to URP, ou utilisez Window > Rendering > Render Pipeline Converter. Les textures manquantes rendent un matériau gris, et non rose : dans ce cas, exportez avec Path Mode Copy et Embed Textures, puis cliquez sur Extract Textures dans Unity.

Pourquoi Unity ne parvient-il pas à créer un Avatar Humanoid à partir de mon rig Blender ? ​

Unity a besoin d’au moins 15 os obligatoires qu’il peut reconnaître, ainsi que d’une pose en T. Une croix à côté de Configure signifie que l’association a échoué, les os rouges dans l’onglet Mapping sont ceux qu’il n’a pas pu placer, et « Character not in T-Pose » signifie que la pose de repos est incorrecte. Nommez les os d’après les parties du corps (les noms Mixamo sont toujours reconnus), décochez Add Leaf Bones afin que les os _end ne créent pas de confusion, faites glisser manuellement les os rouges à leur place, puis utilisez Pose > Enforce T-Pose.

À lire aussi ​