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

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

Message par scorjeff » 14 Avr 2019 17:46

Bonjour,

J'ai fait plusieurs essais et tests avec vos instructions et propositions. Bonne nouvelle, je n'ai pas d'erreurs, mais petit bemol : mes objets mesh ne changent pas de couleurs au clic du bouton UI qu'elle que soit la couleur.

Je pense que la mise en oeuvre est mauvaise. Des que j'aurais plus de temps, je continue.

Bonne semaine.

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

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

Message par scorjeff » 22 Avr 2019 12:37

Bonjour,

J'ai trouve un peu de temps pour travailler sur vos solutions. (sauf EmileF : sorry, je ne sais pas comment utiliser ton script). Je n'ai pas un tres grand niveau en dev cela fait deux mois que j'ai commence et je le fais sur mon temps libre, bref....

Pour l'historiaue, le script ci-dessous fonctionne

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class CColorTissuAV : MonoBehaviour{
 
    public Material[] materials;//Allows input of material colors in a set size of array;
    public Renderer Rend; //What are we rendering? Input object(Sphere,Cylinder,...) to render.
    private int index = 1;//Initialize at 1, otherwise you have to press the ball twice to change colors at first.
 
    public void buttonPressed(){
        if (materials.Length == 0)//If there are no materials nothing happens.
            return;
 
        index += 1;//When button is pressed down we increment up to the next index location
 
        if (index == materials.Length + 1)//When it reaches the end of the materials it starts over.
            index = 1;
        print (index);//used for debugging 
        Rend.sharedMaterial = materials [index - 1]; //This sets the material color values inside the index
    }
}
Cependant je ne peux mettre qu'un mesh renderer, j'en reviens donc au debut du sujet
Le script est place sur un GameObjet cree avec color et Rend
Image

Celui-ci est ensuite glisser sur un button GUI
Image

Cela agit sur le material
Image

Ca fonctionne mais je ne peux ajouter qu'un rend comme vous le voyez sur premiere image.

Merci de vos propositions precedentes qui ont bien servi. Je vais essayer de chercher la proposition de travailler sur le material direct

Bonne journee

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

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

Message par scorjeff » 22 Avr 2019 12:38

Desole pour les balises, le bouton n'a pas fonctionne pour placer le code. Il est donc en texte basic.

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

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

Message par EmileF » 22 Avr 2019 15:46

Tres simple comme utilisation:

Il te faut un objet avec un MeshRenderer, et tu appelles la fonction en précisant le MeshRenderer (ton renderer par exemple) et la couleur en paramètres :

Voici un exemple d'utilisation.

Code : Tout sélectionner


public class Test : MonoBehaviour
{
    public MeshRenderer[] Meshes;
    public Color[] Colors;


	// Use this for initialization
	void Start ()
    {
        for (int i = 0; i < Meshes.Length; i++)
        {
            Colorise(Meshes[i], Colors[i]);
        }
    }

    private void Colorise(MeshRenderer mesh, Color color)
    {
        MaterialPropertyBlock block = new MaterialPropertyBlock();
        mesh.GetPropertyBlock(block);
        block.SetColor("_Color", color);
        mesh.SetPropertyBlock(block);
    }
}

Voilà un exemple d'utilisation.
Tu crées un empty dans lequel tu mets ce script.
Tu crées 5 (par exemple) GameObjects comme cube, sphere ou autres équipés d'un mesh renderer.
Tu fait glisser tes GameObjects dans la propriété Meshes du script.
Dans la propriété Colors du script tu crées autant de couleurs que tu as d'objets.
Tu lances le jeu et tu auras chaque objet qui prendra la couleur correspondante.

A toi d'adapter le script selon tes besoins. Mais avec cette fonction, plus de contrainte de matérials différents ou de groupe de matérial pour une couleur.

Tu peux même calculer un dégradé (par exemple) pour tes objets. Entière liberté.

Pour ce qui est de ton projet, je n'ai pas bien compris si tu veux changer la couleur de tes objets un par un à chaque fois que tu cliques sur ton bouton, ou changer la couleur de tous tes objets?

Si tu veux changer la couleur de tous tes objets en même temps, utilise la méthode de boubouk, tu équipes tous tes objets avec un même material, et tu changes la couleur de ton matérial sans t'occuper des renderer.

Si tu veux changer la couleur de tes objets un par un, tu peux équiper tes objets d'un même matérial ou pas,
il te faut récupérer la liste de tes renderer et utiliser ma fonction à chaque pression sur ton bouton en précisant l'objet concerné et sa couleur.

J'espère que ça pourra t'aider.
La différence entre l'intelligence et la stupidité est que l'intelligence est limité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 » 25 Avr 2019 11:44

C'est bien ça, le projet c'est une espadrille en 3d qui représente une vraie. Chaque objet de cette espadrille doit changer de couleur indépendamment par un bouton.

la partie avant => un bouton par couleur
la partie arrière => un bouton par couleur...
le fil => un bouton par couleur
Tu cliques et l'avant devient vert, l'arrière devient rouge et le fil sera jaune par exemple.

J'ai un menu pour sélectionner la taille de la pompe, les couleurs, les images si on veut télécharger et apposer des images. Pour le principe de télécharger et appliquer une image, j'en suis pas encore là, c'est la prochaine étape.

Et valider

Objectif final = créer un configurateur sur le même principe que les T-shirts custom qu'on peut faire sur le net. Intégrer ce futur configurateur à un site web "propulser" par wordpress.

Bon w-e à vous

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

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

Message par EmileF » 25 Avr 2019 14:59

Je pense que dans ton cas,
tu crées 3 matérials, un pour l'avant, un pour l'arrière, et un pour le fil.
Tu équipes les objets avant du material les concernant,
les objets arrière du material arrière,
et les objets du fil avec son material
Dans ton script, tu références tes trois materials
et, tu crées autant de fonction que tu as de boutons, et dans ces fonctions, tu changes la couleur du material concerné.
C'est la méthode que Boubouk t'indiquait.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Répondre

Revenir vers « Unity le logiciel »