Régler l’orientation des modèles importés depuis Blender

Suzanne

Le pipeline d’Unity facilite énormément l’import d’assets dans un projet. Les fichiers Blender sont par exemple utilisables directement dans Unity. Dans le cadre du prototypage ou du développement précoce, c’est très pratique. Si vous modifiez directement vos modèles 3D depuis le dossier d’assets, les modifications sont répercutées instantanément dans Unity.

L'Atelier de Drakulo déménage vers Esprit Unity

Disclaimer

Cet article a été originalement écrit le 27/12/2013 sur mon précédent blog. Certaines informations présentées ici peuvent donc ne plus fonctionner telles quelles.

Des référentiels différents

Il y a cependant un petit « soucis » avec les modèles .blend importés directement dans Unity. Essayez donc. Créez un cône dans Blender : SHIFT + A > Mesh > Cone

blender

Maintenant, importez-le dans Unity et placez le cône sur votre scène. Vous devriez… ne rien voir de suspect ! A première vue en tout cas. Sélectionnez le cône et jetez un oeil à l’inspecteur, du côté des rotations.

unity import

Le GameObject s’est vu attribuer une rotation de -90 en x. Ce n’est pas extrêmement grave en soi. Pour des objets statiques, cette rotation n’est pas un problème. En revanche, cette rotation peut être une belle épine dans le pied si vous comptez animer cet objet. C’est très rapide à constater. Jouez un peu avec l’inspecteur de rotation en Z. Le modèle devrait normalement tourner selon l’axe z (bleu)… mais il ne le fait pas !

 

rotation fail

C’est la rotation en X qui est en cause. En effet, la rotation en X modifie l’orientation locale de l’objet et influe sur la seconde rotation en Z. On n’obtient pas ce qu’on veut, c’est c’est plutôt embêtant, d’autant plus si les rotations sont calculées par un script d’animation par exemple…

Mais au fait, d’où vient cette rotation de -90° en X ? Elle ne tombe pas du ciel, rassurez vous. Unity et Blender n’utilisent pas le même référentiel de coordonnées. Lors de l’import d’un modèle Blender, Unity effectue la correction d’orientation afin que l’objet soit orienté visuellement de la même manière. Si ce que je raconte est du chinois pour vous, constatez par vous même :

rotation_blender
Blender

 

Unity
Unity

Dans Blender, le repère place Z pour le volume alors qu’Unity utilise Y. La correction se fait donc en effectuant une rotation de -90°, afin d’avoir Y orienté correctement.

Correction manuelle

L’astuce est de corriger la rotation directement dans Blender afin d’avoir un objet directement utilisable dans Unity. La manipulation est assez simple, on va appliquer la rotation inverse à notre modèle. Mais pour que cette rotation inverse de 90° ne mette pas notre objet sur le côté dans Blender, il faut ruser un peu.

On va appliquer une rotation de -90° à notre objet dans Blender :

applyrotation

L’objet doit maintenant être tourné sur le côté. Il faut maintenant appliquer cette rotation afin de la faire disparaitre : les points vont être physiquement déplacés dans l’espace selon la rotation afin de supprimer la rotation mais en conservant la position de points. Pour appliquer la rotation, faites CTRL + A > Rotation.

L’objet n’a pas bougé, mais vous pouvez constater que sa rotation est repassée à 0 en X. On y est presque. Maintenant changez de nouveau sa rotation à 90°. L’objet doit se retrouver dans son état original avant les modifications. Il est maintenant prêt à être utilisé dans Unity.

Vous pouvez vérifier, si vous ajoutez de nouveau votre objet sur la scène, il sera orienté correctement et n’aura aucune rotation.

no_rotation

Correction automatique

Maintenant que vous savez faire la correction manuellement, voyons une autre astuce un peu plus pratique… Il existe un script permettant d’effectuer la correction d’orientation automatiquement. Son exécution vient s’insérer dans le processus d’import d’assets d’Unity et va corriger la rotation pour vous, en toute transparence. Vous pouvez le récupérer sur le wiki par ici. Attention, ce script est à placer dans un dossier nommé « Editor » pour être pris en compte !

Voilà, vous savez tout. Utiliser des objets Blender dans votre jeu Unity ne sera plus jamais un problème !

Crédits image : Wikimedia Commons

L'Atelier de Drakulo déménage vers Esprit Unity

Publicité

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s