Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
scorjeff
Messages : 11
Inscription : 17 Mars 2019 19:34

Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer

Message par scorjeff » 25 Mars 2019 18:38

Bonjour,

Je reviens vers vous pour une question de fonctionnement de dossier contenant des meshrenderer.

Je m'explique :
J'ai importé en FBX de Blender un objet avec beaucoup de NurbsCurve (Blender) devenu meshRenderer (Unity).
L'objectif, c'est de grouper les 220 parts pour les gérer (ils changent de couleurs grace à un bouton). Bien sùr, j'essaie de les grouper ou les joindre avec Blender avant import sans succès pour l'instant.

Mes tests : créer un Préfab pour placer dedans les MeshParts = fonctionne pas.
Créer un shader, j'ai pas encore réussi.
Créer un dossier gameObject empty, puis child empty, et lui donner les propriétés de Mesh Renderer, même chose, çà marche pas. L'objet ne change pas de couleur.

Sachant qu'un dossier "normal" avec les mesh renderer importé dedans (mode drag and drop) fonctionne. Mais c'est dommage de configurer 220 mesh, si je peux gérer un folder les contenant tous.

Si vous voulez d'autres explications, ce n'est peut-être pas très clair, je peux sans soucis. Merci de votre compréhension.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer

Message par boubouk50 » 26 Mars 2019 09:58

Qu'entends-tu par changer de couleur du MeshRenderer? Changer la couleur du matériau?
S'ils possèdent tous le même matériau, changer la couleur du matériau revient à changer la couleur de tous les objets. Il faut que tu crées un nouveau matériau que tu affectes à tous les MeshRenderer. Pour effectuer un changement sur tous les éléments ensemble, tu peux tous les sélectionner et glisser déposer le matériau.
"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

scorjeff
Messages : 11
Inscription : 17 Mars 2019 19:34

Re: Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer

Message par scorjeff » 26 Mars 2019 18:48

Bonjour,

J'étais de ne pas être très clair.
Voici en image si ça passe. J'importe 220 objet depuis blender en FBX.
Mon objectif, c'est de travailler sur le folder fils_1 pour changer la couleur via un script les 220 objets du contenu NurbsCurve.
Principe du dossier parent et objet enfant. si on configure le dossier les enfants suivent....
Ma première idée était de fusionner ts les Nurbs en un seul, mais celà ne marche pas. Si j'ai pas de solution, je veux bien gérer un par un, mais c'est dommage.

Image

Serait-ce plus comme explications?

Merci bien et bonne soirée à toi et autres bien sùr.
Dernière édition par Max le 26 Mars 2019 18:50, édité 1 fois.
Raison : correction pour l'affichage de l'image

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

Re: Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer

Message par Max » 26 Mars 2019 18:54

Bonsoir,

As tu essayé ce que proposait Boubouk ? Tu assignes à tes NurbsCurve_222_MeshPartX le même material, et tu n'as juste qu'a changer la couleur du material. De fait, tous les NurbsCurve_222_MeshPartX changeront en même temps en une seule opération.
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

scorjeff
Messages : 11
Inscription : 17 Mars 2019 19:34

Re: Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer

Message par scorjeff » 27 Mars 2019 14:41

Bonjour à vous deux,

Je vais essayer, je reviens vers vous en fonction des résultats et tests.

Bonne journée.

scorjeff
Messages : 11
Inscription : 17 Mars 2019 19:34

Re: Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer

Message par scorjeff » 29 Mars 2019 09:01

Bonjour,

Je reviens après tests et investigations. Le principe que Boubouk propose je l'utilise, je crois.
Puisque j'ai créé 9 matérials pour 9 couleurs, ces matérials sont placés dans l'inspector sur des objets dédiés au changement de couleur. Cà fonctionne, j'ai suivi les deux vidéos ci-dessous pour comprendre. La couleur, le bouton et le script fonctionnent sur les mesh renderer. "je clique, l'objet change la couleur par celle que je choisis".

https://www.youtube.com/watch?v=y2JwMb4WZeQ
https://www.youtube.com/watch?v=6zNHaLdVk80

Mais je ne comprends comment placer plusieurs couleurs sur un matérial, il n'en prend qu'une, à moins qu'il y est une fonction que je connais pas. Je pense à un script donc, et pour çà, je dois changer le principe de fonctionnement. Ce qui est envisageable. J'ai cherché et vu plusieurs vidéos, ce serait un script qui ressemble à çà?
https://www.youtube.com/watch?v=Qh64cpCxk54

C'est cette méthode que tu parles et est-ce qu'on parle de la même chose?

Bonne journée. Cdt

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer

Message par boubouk50 » 29 Mars 2019 10:33

Tes questions sont plutôt générales, alors on répond large aussi.

Oui, pour changer une couleur de matériau, je préconise de changer la propriété color du matériau. Cela changera la teinte globale du matériau.
"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

scorjeff
Messages : 11
Inscription : 17 Mars 2019 19:34

Re: Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer

Message par scorjeff » 09 Avr 2019 17:16

Bonjour à vous,

J'ai pu progresser dans les scripts pour changement de color du material. Je crois que j'y suis presque après pas mal de recherche.

J'ai pu avoir ce script pour changer la couleur des objets qui compose le fil. Par contre le code List, je suis pas sur que les materials soi en list, c'est un point obscure.

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
 //changement color du fil/thread
 //sur chaque objet
 
public class ThreadChange : MonoBehaviour{
 
	     public static List<GameObject> list = new List<GameObject>();
     void Start () {
         list.Add(gameObject);
     }
     void OnDestroy() {
         list.Remove(gameObject);
     }
   }
Et j'ai ce script pour chaque bouton, l'idée est de tester une couleur, si ça matche, j'applique à toutes les couleurs présente. Mais j'ai l'erreur error CS0117: `ThreadChange' does not contain a definition for `Materials'. Je pense avoir oublier qqchose

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

	//sur le bouton
	
public class CCThreadV : MonoBehaviour {

	public void changeRed()
     {
         foreach (GameObject threadChange in ThreadChange.Materials)
             ThreadChange.GetComponent<Renderer>().sharedMaterial.color = Color.red;
     }
}
Merci de votre contribution, j'espère ne pas faire fausse route.

@+
 ! Message de : boubouk50
Merci d'utiliser les balises CODE prévues à cet effet

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer

Message par EmileF » 09 Avr 2019 17:58

Si je ne me trompe pas ce petit script te permettra de changer la couleur de chaque mesh, indépendamment du matérial

Code : Tout sélectionner

    
    private void Colorise(MeshRenderer mesh, Color color)
    {
        MaterialPropertyBlock block = new MaterialPropertyBlock();
        mesh.GetPropertyBlock(block);
        block.SetColor("_Color", color);
        mesh.SetPropertyBlock(block);
    }
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Dossier fonctionnel pour grouper et gèer la couleurs des meshRenderer

Message par boubouk50 » 09 Avr 2019 18:03

la réponse est dans l'erreur: Qu'est ce que ThreadChange.Materials?
Tel quel, tu cherches une liste nommée Materials, propriétés de la classe ThreadChange. Mais elle n'existe nulle part.
Tu as par contre une liste de GameObjects appelée list.

Dans la forme par contre, je pense que tu fais fausse route. Si les gameObjects partagent le même material, alors un simple changement de couleur du sharedMaterial suffit.
Au lieu, d'aller dire à tous: changer votre couleur. Dis au matériau utilisé par tous de changer de couleur, comme ça tous changeront.
"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

Répondre

Revenir vers « Unity le logiciel »