[RESOLU] Détacher un child d'un bone et de son parent pour lui ajouter un rb

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Farstone
Messages : 187
Inscription : 04 Déc 2016 09:38

[RESOLU] Détacher un child d'un bone et de son parent pour lui ajouter un rb

Message par Farstone » 28 Sep 2018 11:27

Salut, j'essaie de crée un système de dégâts pour un véhicule mais je débute dans l'animation et les bones sur Unity. J'aimerais permettre à ma porte de voiture de se détacher de son bone et lui ajouter un rigidbody pour la faire se détacher du véhicule en cas de dégâts trop important. Quel méthode devrais-je utiliser, détacher la porte du parent et du bone en lui ajoutant un rigidbody avec une force calculé au moment de l'impact ? Sachant que je n'arrive pas très bien à séparer la porte du bone pour qu'elle retrouve un fonctionnement normal, dans la hiérarchie sa donne ça :

Véhicule
-Armature
---BonePorte
-Porte
---PartieIntérieur (Attaché au bone)
---PartieExterieur (Attaché au bone)

Quand j'y pense sa faciliterais surement les choses si le bone n'était que sur la porte directement et pas sur les 2 child, mais étant donné que le parent de la porte est crée sur Unity, j'ai un peu de mal a reproduire le même schéma sur blender, si y'a des connaisseur dans le domaine sa serrais sympas de m'éclairer sur le sujet :] .
Dernière édition par Farstone le 28 Sep 2018 12:56, édité 1 fois.

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

Re: Détacher un child d'un bone et de son parent pour lui ajouter un rb

Message par Alesk » 28 Sep 2018 11:31

Salut,

Ta porte fait-elle partie du mesh du reste de la voiture ?

Farstone
Messages : 187
Inscription : 04 Déc 2016 09:38

Re: Détacher un child d'un bone et de son parent pour lui ajouter un rb

Message par Farstone » 28 Sep 2018 11:38

La porte n'est pas attaché au mesh du véhicule mais elle se trouve dans le même parent, elle a une partie intérieur et extérieur pour facilité le choix de matériaux (intérieur sport, extérieur street par example) d'ou le fait que 2 partie soit attaché au bone, la porte elle même a 2 mesh en gros, ne sachant pas si je pouvait mettre 2 uv set sur 1 mesh j'ai préféré prendre la solution sécuritaire, en espérant que sa ai du sens.

EDIT : Après mettre renseigné, il est possible de faire des parent/child dans blender, ce qui me permettras d'animer le parent de la porte plutôt que les 2 partie, mais je ne sait toujours pas comment "détacher" ma porte sur Unity pour lui mettre un rb
Dernière édition par Farstone le 28 Sep 2018 11:45, édité 1 fois.

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

Re: Détacher un child d'un bone et de son parent pour lui ajouter un rb

Message par Alesk » 28 Sep 2018 11:45

Bon... C'est pas super clair...

Bon déjà, tu peux mettre plusieurs UV sur un même mesh, mais là je ne vois pas bien l'intérêt.
Pourquoi parenter les deux morceaux de ta porte à un bone ? Et pourquoi utiliser des bones dans une voiture ? :p

Tu pourrais directement parenter la porte à la voiture, ce serait beaucoup plus simple.

Moi je ferai un hiérarchie comme ça :

Code : Tout sélectionner

Voiture
    ExtérieurPorte
        IntérieurPorte
Au pire, tu peux intercaler un pivot pour la porte :

Code : Tout sélectionner

Voiture
    Pivot
        ExtérieurPorte
            IntérieurPorte
Ensuite il suffit de changer le parent du transform de la porte (ou du pivot, si tu choisis cette option) pour le détacher de la voiture.

Farstone
Messages : 187
Inscription : 04 Déc 2016 09:38

Re: Détacher un child d'un bone et de son parent pour lui ajouter un rb

Message par Farstone » 28 Sep 2018 11:55

Alesk a écrit :
28 Sep 2018 11:45
Bon... C'est pas super clair...

Bon déjà, tu peux mettre plusieurs UV sur un même mesh, mais là je ne vois pas bien l'intérêt.
Pourquoi parenter les deux morceaux de ta porte à un bone ? Et pourquoi utiliser des bones dans une voiture ? :p

Tu pourrais directement parenter la porte à la voiture, ce serait beaucoup plus simple.

Moi je ferai un hiérarchie comme ça :

Code : Tout sélectionner

Voiture
    ExtérieurPorte
        IntérieurPorte
Au pire, tu peux intercaler un pivot pour la porte :

Code : Tout sélectionner

Voiture
    Pivot
        ExtérieurPorte
            IntérieurPorte
Ensuite il suffit de changer le parent du transform de la porte (ou du pivot, si tu choisis cette option) pour le détacher de la voiture.
C'est encore un prototype rien de définitif dans le setup, je cherche justement le meilleur moyen de mettre sa en place pour avoir un truc propre.
Si je veux mettre plusieurs UV c'est pour permettre au joueur de changer le matériau intérieur sans avoir à changer le matériau de l’extérieur (j'ai 1uv set pour l'intérieur et 1 pour l'extérieur, mais comme la porte fait partie des 2 sa complique les choses)
Pour ce qui est du bone j'ai un peu de mal à comprendre, n'est-ce pas le moyen le plus simple d'animer quelque chose ? Je suis au courant qu'un joint pourrait être une solution mais j'ai besoin que la porte soit animé. Si tu pouvait préciser pourquoi l'utilisation d'un bone est incorrect dans mon cas sa m'aiderais bien :-D

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

Re: Détacher un child d'un bone et de son parent pour lui ajouter un rb

Message par Alesk » 28 Sep 2018 12:03

Twiixy a écrit :
28 Sep 2018 11:55
Si je veux mettre plusieurs UV c'est pour permettre au joueur de changer le matériau intérieur sans avoir à changer le matériau de l’extérieur (j'ai 1uv set pour l'intérieur et 1 pour l'extérieur, mais comme la porte fait partie des 2 sa complique les choses)
Les UV c'est pour définir les coordonnées de textures, mais pas le lien entre les triangles du mesh et les matériaux, ce n'est pas du tout la même chose.
Là tu peux sans problème utiliser un seul UV et deux matériaux différents.
A partir du moment où chaque morceau de ton mesh utilise un matériau différent, ça ne pose aucun souci d'avoir leurs coordonnées UV qui se superposent, puisqu'elle seront utilisées dans des contextes (matériaux) différents.
Twiixy a écrit :
28 Sep 2018 11:55
Pour ce qui est du bone j'ai un peu de mal à comprendre, n'est-ce pas le moyen le plus simple d'animer quelque chose ? Je suis au courant qu'un joint pourrait être une solution mais j'ai besoin que la porte soit animé. Si tu pouvait préciser pourquoi l'utilisation d'un bone est incorrect dans mon cas sa m'aiderais bien :-D
Les bones ça sert surtout à animer des objets organiques ou éventuellement des objets mécaniques composés d'un seul mesh.
Dans ton cas, comme les objets sont séparés car ils doivent pouvoir bouger individuellement, pas besoin de bones, un parentage direct entre les objets est suffisant.

Farstone
Messages : 187
Inscription : 04 Déc 2016 09:38

Re: Détacher un child d'un bone et de son parent pour lui ajouter un rb

Message par Farstone » 28 Sep 2018 12:13

Je me suis mal exprimé pour les UVs, en faite j'ai 2 UV set pour maximiser la texel density, et j'ai 1 matériaux par set d'uv (potentiellement plus par la suite) la porte a ses UV dans les 2 set, c'est pourquoi j'ai décidé de la séparer en 2 mesh pour eviter d'avoir a mettre 2 matériau sur 1 mesh ne sachant pas si c'était une bonne pratique. Sinon je pense comprendre ce que tu veux dire avec les bones, je vais essayer de faire une animation sans bone sur la porte pour voir ce que sa donne. En tout cas si tu pense que regrouper l'intérieur et l’extérieur de ma porte en 1mesh et utiliser 2 matériaux sur 1 mesh renderer dans Unity est une bonne (ou meilleur) pratique, sa m'arrange aussi :-D l'important pour les perf si je me souviens bien, c'est le nombre de matériaux différent et non pas le nombre de mesh les utilisant.

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

Re: Détacher un child d'un bone et de son parent pour lui ajouter un rb

Message par Alesk » 28 Sep 2018 12:29

Oui alors faut pas non plus trop psychoter sur le nombre de matériaux ;)
Si tu as 15000 voitures à afficher, là ok, il vaut mieux optimiser.
Mais si tu souhaites faire un rendu de qualité et détaillé pour une voiture, tu peux en coller plusieurs (bon pas 500 non plus hein !)
Mais disons que si tu as un matériau pour l'extérieur et un autre pour l'intérieur sur un même mesh, ça sera vraiment pas grave, au contraire, il vaut mieux limiter le nombre de gameobjects.

Farstone
Messages : 187
Inscription : 04 Déc 2016 09:38

Re: Détacher un child d'un bone et de son parent pour lui ajouter un rb

Message par Farstone » 28 Sep 2018 12:43

Effectivement sa marche très bien sans bone aussi, il m'importe juste les animation en double depuis blender faudra vérifier d'ou sa viens, sinon pour les 2 matériaux sur 1 mesh c'est surtout le message d'erreur de Unity qui ma fait douter "This renderer has more materials than the mesh has submesh. Multiple material will be applied to the same submesh, wich costs performance. Consider using multiple shader passes." mais je suppose que dans mon cas c'est pas très grave. Merci bien pour ton aide Alesk :super:

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

Re: [RESOLU] Détacher un child d'un bone et de son parent pour lui ajouter un rb

Message par Alesk » 28 Sep 2018 13:06

Ton message d'erreur indique que tu appliques deux matériaux sur un mesh où seulement un matériau est référencé sur les triangles que le composent.
Il y a donc un souci, il faut vérifier ça.

Répondre

Revenir vers « Unity le logiciel »