Tuto morphing 3D

Tous les tutoriaux unity, de la communauté ou d'ailleurs.
Avatar de l’utilisateur
axel
Messages : 1924
Inscription : 26 Avr 2012 09:10
Localisation : Lille - Dunkerque
Contact :

Tuto morphing 3D

Message par axel » 21 Jan 2014 11:39

J'ai écris un tutoriel expliquant comment réaliser un morphing entre 2 objets.

Le but est de recréer cette scène:
Webplayer

C'est un peu long car j’essaie d'expliquer un maximum de choses... J'espère au moins ne pas trop raconter de bêtises :mrgreen:

http://axelvaude.wordpress.com/2014/01/ ... -morphing/

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: Tuto morphing 3D

Message par Max » 21 Jan 2014 13:06

pas mal, pas mal du tout même ;)
J'aime beaucoup la mise en page, c'est clair et bien décris. Après, sur le plan technique, je n'ai pas encore eu le temps de me plonger dans le code et de lire en profondeur.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
LudlowFx
Messages : 1367
Inscription : 19 Sep 2013 05:50

Re: Tuto morphing 3D

Message par LudlowFx » 21 Jan 2014 13:15

Comme le dit mon vdd pas mal du tout en effet. Très bien expliqué, clair et très facile à suivre (même avec peu de connaissance côté 3D je dois dire). Je n'ai pas eu le temps d'essayer le code en lui même (juste lecture).

Merci du partage, je vais faire suivre ça, Bon courage pour la suite de tes tutoriels ^^
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Avatar de l’utilisateur
artemisart
Messages : 1893
Inscription : 21 Juin 2011 19:51
Localisation : Centre
Contact :

Re: Tuto morphing 3D

Message par artemisart » 21 Jan 2014 13:18

Bien, je vois que j'ai de la concurrence :P (faudra que je remette à mes tutos un jour ^^)
Tu rajoute juste un slerp sur les normals et ça sera parfait.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Tuto morphing 3D

Message par Alesk » 21 Jan 2014 13:22

Sympa :)

Deux petites suggestions :

- dans un souci de performances, il serait bon d'ajouter un test sur le changement de la valeur d'intensité du morph, et de n'exécuter la boucle de mise à jour que lorsqu'il y a changement, pour éviter de mettre à jour les vertices même s'il n'y a pas de variation du morphing

- étendre le tutorial aux morphings relatifs : dans le cas présent, tu traites des morphings absolus, où tous les vertices se déplacent d'un point A vers un point B.
Avec un morphing relatif, au lieu de stocker le point d'arrivée, on stocke simplement le décalage par rapport au point d'origine, du coup, on peut morpher indépendamment diverses régions du mesh et cumuler les morphs.
Pour obtenir un tableau de positions relatives, il suffit de soustraire les positions originales des positions stockées dans un tableau de morph absolu. (ainsi tous les vertices qui ne bougent pas se retouvent avec un vecteur de déplacement égal à 0,0,0)

EDIT :
artemisart a écrit :Tu rajoute juste un slerp sur les normals et ça sera parfait.
Je me demande ce qui est le plus rapide/précis dans ce cas... Faire un slerp sur les normales, ou bien simplement les recalculer avec la fonction native proposée par Unity ?
Car pour faire un slerp sur les normales, cela implique que l'on connaisse déjà les normales du morph... du coup tout dépend de ce que l'on a en stock ;)
Dernière édition par Alesk le 21 Jan 2014 13:26, édité 1 fois.

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: Tuto morphing 3D

Message par F@B » 21 Jan 2014 13:25

ça a l'air très intéressant tout ça! et ça pourrais bien m’être utile prochainement! merci et bravo
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Avatar de l’utilisateur
axel
Messages : 1924
Inscription : 26 Avr 2012 09:10
Localisation : Lille - Dunkerque
Contact :

Re: Tuto morphing 3D

Message par axel » 21 Jan 2014 15:11

Merci à vous tous pour vos retours. :D

Artemisart : Excuse moi, mais je n'ai pas compris le coup du Slerp sur les normales?

Alesk: J'avais pensé à ne faire la boucle que lorsque la valeur d'intensité changeait (d'ailleurs c'était dans mon script initial). Mais en écrivant le tuto j'ai trouvé que c'était bien assez long, et j'ai décidé de zapper cette partie. Mais je peux ajouter juste une phrase à ce sujet à la fin.
Quant au morphing relatif, je ne connaissais pas cette technique. C'est très inintéressant, à explorer pour un futur tuto, merci ;)

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Tuto morphing 3D

Message par Alesk » 21 Jan 2014 15:41

axel a écrit :Artemisart : Excuse moi, mais je n'ai pas compris le coup du Slerp sur les normales?
Les normales ne sont pas automatiquement recalculées par unity lorsque tu déformes le mesh, du coup, il est toujours éclairé comme s'il n'était pas déformé.
Donc à chaque déplacement de vertex, il faut aussi recalculer sa normale ainsi que celles de ses voisins afin que l'éclairage de l'objet reste cohérent
axel a écrit :Alesk: J'avais pensé à ne faire la boucle que lorsque la valeur d'intensité changeait (d'ailleurs c'était dans mon script initial). Mais en écrivant le tuto j'ai trouvé que c'était bien assez long, et j'ai décidé de zapper cette partie. Mais je peux ajouter juste une phrase à ce sujet à la fin.
ban ça prend 3 lignes de plus... franchement, c'est pas ça qui allait alourdir le code :p
axel a écrit :Quant au morphing relatif, je ne connaissais pas cette technique. C'est très inintéressant, à explorer pour un futur tuto, merci ;)
Attention! "inintéressant" ça veut dire que ça n'est pas intéressant :roll:
Quoi qu'il en soit, cette méthode est très pratique pour animer un visage par exemple, car cela permet d'animer individuellement chaque partie du visage sans altérer les autres.
Mais du coup ça implique de gérer plusieurs morphings en même temps, donc ça complexifie un poil la procédure ;)

Avatar de l’utilisateur
axel
Messages : 1924
Inscription : 26 Avr 2012 09:10
Localisation : Lille - Dunkerque
Contact :

Re: Tuto morphing 3D

Message par axel » 21 Jan 2014 16:04

désolé, le "inintéressant" est une erreur de frappe. Je voulais dire intéressant bien sûr.

Avatar de l’utilisateur
artemisart
Messages : 1893
Inscription : 21 Juin 2011 19:51
Localisation : Centre
Contact :

Re: Tuto morphing 3D

Message par artemisart » 22 Jan 2014 00:11

Alesk a écrit :
artemisart a écrit :Tu rajoute juste un slerp sur les normals et ça sera parfait.
Je me demande ce qui est le plus rapide/précis dans ce cas... Faire un slerp sur les normales, ou bien simplement les recalculer avec la fonction native proposée par Unity ?
Car pour faire un slerp sur les normales, cela implique que l'on connaisse déjà les normales du morph... du coup tout dépend de ce que l'on a en stock ;)
Effectivement il faut que les meshs cibles aient des normales (mais pour recalculer faut que les tris soient dans le bon sens aussi). Au niveau des perfs les 2 restent très rapides même si je pense que recalculer les normales est un peu plus lourd (faut parcourir les vertices et il y a plus d'opérations non ?).

Après si on veut faire du "multimorph" là ça devient plus complexe de le faire à la mano (du style somme des normales de chaque vertex * influence pour chaque mesh, puis normaliser :mrgreen: ) et donc là RecalculateNormals aide bien.

Répondre

Revenir vers « Tutoriaux »