IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Unity Discussion :

Conversion tableau image


Sujet :

Unity

  1. #1
    Membre actif
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 326
    Points : 254
    Points
    254
    Billets dans le blog
    1
    Par défaut Conversion tableau image
    Bonjour à tous

    je cherche à programmer un automate cellulaire type "jeu de la vie" sous Unity.
    J'ai un problème : je ne sais pas comment convertir un tableau d'entiers en image.
    Quelle type de structure dois-je utiliser ? Quelles méthodes sont disponibles pour modifier un pixel d'une image ?
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  2. #2
    Membre éprouvé Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    septembre 2017
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : septembre 2017
    Messages : 357
    Points : 1 089
    Points
    1 089
    Par défaut
    Salut,

    Tu as regardé/testé https://docs.unity3d.com/ScriptRefer....SetPixel.html à tout hasard?
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  3. #3
    Membre actif
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 326
    Points : 254
    Points
    254
    Billets dans le blog
    1
    Par défaut
    Merci, c'est exactement ce que je recherche !
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur multiplateformes
    Inscrit en
    mars 2003
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur multiplateformes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2003
    Messages : 249
    Points : 559
    Points
    559
    Par défaut
    Bonjour,
    Je suppose qu'à chaque élément de votre tableau vous alles faire correspondre un carré sur votre texture c'est à dire non pas un mais plusieurs pixels.
    Auquel ca vous allez être confronté à un problème de performance avec SetPixel.
    La première solution est de traiter les pixels par colonnes par "SetPixels" :
    https://docs.unity3d.com/ScriptRefer...SetPixels.html
    Une autre approche serait de passer par un traitement vectoriel en passant par exemple par le package "Vector Garphics" (Menu Widows>Packege Manager).
    C'est nettement plus complexe mais très efficace.

    Yves

  5. #5
    Membre actif
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 326
    Points : 254
    Points
    254
    Billets dans le blog
    1
    Par défaut
    Effectivement, j'ai l'intention d'utiliser de préférence la méthode SetPixels. Par contre je ne comprends pas ce que signifie le paramètre miplevel dans la méthode. Après l'usage de cette méthode qui semble permettre de remplir un rectangle entier codé en linéaire, j'appellerai la fonction Apply pour rafraîchir mon image. Par contre comme je débute en Unity, je ne sais pas du tout comment intégrer ce principe à un projet 2D standard et obtenir un affichage approprié. La méthode GetRawTextureData me semble aussi très adaptée à mes besoins. Merci en tout cas à vous de m'avoir aiguillé sur la documentation d'Unity. Je ne connaissais pas cette ressource. Cette documentation est très bien faite, je trouve, et les exemples sont simples et pertinents. Je m'en vais fouiller.
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  6. #6
    Membre actif
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 326
    Points : 254
    Points
    254
    Billets dans le blog
    1
    Par défaut
    J'ai opté pour la méthode GetRawTextureData. Cependant rien ne s'affiche, j'ai beau lier le script à la caméra principale, une exception me dit que je tente d'accéder à un renderer qui n'existe pas. J'ai pourtant copié le script ci-dessous et je l'ai lié à la caméra principale, rien ne se passe. Que faut-il faire pour faire fonctionner ce script sous Unity ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    using UnityEngine;
     
    public class ExampleScript : MonoBehaviour
    {
        void Start()
        {
            var texture = new Texture2D(128, 128, TextureFormat.RGBA32, false);
            GetComponent<Renderer>().material.mainTexture = texture;
     
            // RGBA32 texture format data layout exactly matches Color32 struct
            var data = texture.GetRawTextureData<Color32>();
     
            // fill texture data with a simple pattern
            Color32 orange = new Color32(255, 165, 0, 255);
            Color32 teal = new Color32(0, 128, 128, 255);
            int index = 0;
            for (int y = 0; y < texture.height; y++)
            {
                for (int x = 0; x < texture.width; x++)
                {
                    data[index++] = ((x & y) == 0 ? orange : teal);
                }
            }
            // upload to the GPU
            texture.Apply();
        }
    }
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur multiplateformes
    Inscrit en
    mars 2003
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur multiplateformes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2003
    Messages : 249
    Points : 559
    Points
    559
    Par défaut
    Effectivement, ce n'est pas à la camera qu'il faut affecter la texture et le script.

    Compte tenu de la nature de votre appli, vous pourriez vous contenter d'utiliser uniquement l'interface utilisateur (UI) - camera et scène seront inutiles.
    Créer un panel qui va couvrir toute la surface du canvas de l'UI et donnera un fond à l'appli.
    Créer un RawImage sur le canvas dont la propriété texture vous servira à afficher votre grille avec tous les éléments d'interface nécessaires.
    C'est donc à ce RawImage qu'il faudra affecter votre script en accédant classiquement à cette propriété par GetComponent<RawImage>().texture.

    Le temps me manque pour plus d'explications mais je vous encourage à prendre le temps de bien assimiler l'architecture de Unity avant d'aller plus loin.
    Si comme moi vous venez d'un environnement classique (Builder C++ en ce qui me concerne) c'est vraiment très déroutant au début et il faut pas mal de patience.
    Mais cela vaut le coup.
    Unity est un outil extraordinairement productif, puissant et souple à qui sait y consacrer le temps d'apprentissage nécessaire.
    Son domaine d'utilisation va maintenant bien au delà jeux...

    Tenez nous au courant.

    Bon courage

    Yves

  8. #8
    Membre actif
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 326
    Points : 254
    Points
    254
    Billets dans le blog
    1
    Par défaut
    Merci pour votre réponse. J'ai fait ce que vous proposiez, j'ai supprimé la caméra (mais je n'ai pas réussi à supprimer SampleScene, je suppose que c'est parce que c'est la racine). J'ai ajouté un Panel et une RawImage, j'ai lié le script à RawImage, j'ai modifié le code avec l'instruction que vous donniez et j'ai appuyé sur play. Mais ça ne marche pas. Le compilateur me dit qu'il ne trouve pas RawImage. J'ai l'erreur suivante : The type or namespace name 'RawImage' could not be found (are you missing a using directive or an assembly reference?)

    J'ai vérifié, j'ai bien fait comme vous le proposiez, je ne crois pas avoir fait d'erreur dans la démarche. D'où vient ce problème ?
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur multiplateformes
    Inscrit en
    mars 2003
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur multiplateformes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2003
    Messages : 249
    Points : 559
    Points
    559
    Par défaut
    Citation Envoyé par anadoncamille Voir le message
    Merci pour votre réponse. J'ai fait ce que vous proposiez, j'ai supprimé la caméra (mais je n'ai pas réussi à supprimer SampleScene, je suppose que c'est parce que c'est la racine). J'ai ajouté un Panel et une RawImage, j'ai lié le script à RawImage, j'ai modifié le code avec l'instruction que vous donniez et j'ai appuyé sur play. Mais ça ne marche pas. Le compilateur me dit qu'il ne trouve pas RawImage. J'ai l'erreur suivante : The type or namespace name 'RawImage' could not be found (are you missing a using directive or an assembly reference?)

    J'ai vérifié, j'ai bien fait comme vous le proposiez, je ne crois pas avoir fait d'erreur dans la démarche. D'où vient ce problème ?
    Il faut rajouter using UnityEngine.UI en entête

  10. #10
    Membre actif
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 326
    Points : 254
    Points
    254
    Billets dans le blog
    1
    Par défaut
    Youpiii ! Tout a très bien marché cette fois-ci ! J'ai réussi à faire mon premier jeu de la vie fonctionnel sous Unity ! Merci à vous tous pour votre soutien et vos réponses !
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur multiplateformes
    Inscrit en
    mars 2003
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur multiplateformes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2003
    Messages : 249
    Points : 559
    Points
    559
    Par défaut
    Bon début 👍

    Yves

  12. #12
    Membre actif
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 326
    Points : 254
    Points
    254
    Billets dans le blog
    1
    Par défaut
    Merci, effectivement ça fait plaisir de réussir à démarrer dans ce vaste monde qu'est Unity. Par contre je suis un peu déçu par les performances du C# sous Unity : j'utilise le même algorithme que d'habitude (je travaille en Java) et ça tourne moins vite pour une surface plus petite que dans mon logiciel phare, AnAcondA. D'ailleurs, si vous voulez voir ce dernier, rendez-vous sur mon site ! AnAcondA est gratuit et contient plus de 90 applications dont de nombreux automates cellulaires en 2D et en 3D (les automates, c'est mon violon d'Ingres).

    Merci encore pour votre participation, je n'y serais pas arrivé sans vous !
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  13. #13
    Membre actif
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 326
    Points : 254
    Points
    254
    Billets dans le blog
    1
    Par défaut
    Et le voilà dans son environnement :

    Nom : Image3.jpg
Affichages : 5
Taille : 78,5 Ko
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur multiplateformes
    Inscrit en
    mars 2003
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur multiplateformes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2003
    Messages : 249
    Points : 559
    Points
    559
    Par défaut
    Sur la question de la vitesse, vous avez généré une appli compilée (File>Build Settings) ?

    Yves

  15. #15
    Membre confirmé
    Homme Profil pro
    Développeur multiplateformes
    Inscrit en
    mars 2003
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur multiplateformes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mars 2003
    Messages : 249
    Points : 559
    Points
    559
    Par défaut
    Toujours sur la question de la vitesse il faut voir si vous utilisez la méthode Update(), ce qu'il y a dedans et ce que cela implique…

    Yves

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. conversion type Image vers tableau
    Par elektronik-17 dans le forum Débuter
    Réponses: 6
    Dernier message: 22/08/2008, 01h47
  2. Conversion tableau en image
    Par axel119 dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 11/08/2007, 15h54
  3. conversion d'image jpeg en tableau de pixel
    Par sophie86 dans le forum Multimédia
    Réponses: 7
    Dernier message: 09/11/2005, 12h30
  4. Conversion d'images 24/32 Bits -> 16bits
    Par RVP dans le forum Langage
    Réponses: 4
    Dernier message: 30/05/2004, 18h05
  5. Conversion avi->image
    Par lio_on_jb_groove dans le forum DirectX
    Réponses: 1
    Dernier message: 17/07/2003, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo