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

JavaScript Discussion :

Three.js couleur des sommets en fonction de leur hauteur


Sujet :

JavaScript

  1. #1
    Membre actif
    Homme Profil pro
    Futur développeur, étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Futur développeur, étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Par défaut Three.js couleur des sommets en fonction de leur hauteur
    Bonjour,

    Je suis actuellement en train de réaliser ce (magnifique) visualiseur audio : http://cyxo.cf/audio-analyser/
    Il est fait avec Three.js

    Le code est disponible ici :
    HTML : http://pastebin.com/EauGjfwW
    CSS : http://pastebin.com/kamSpLAW
    JS : http://pastebin.com/UC4FVP5S

    Mais je voudrais qu'au lieu de ce (magnifique) vert, les sommets (vertex) prennent une couleur en fonction de leur hauteur sur l'axe Z.

    Il faudrait que les couleurs se situent dans un array. Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //Pseudo-code :
    var couleurs = [0x000000, 0x888888, 0xFFFFFF]
    for i = 0 to sommets.length :
      if (sommets[i].position.z <= 66) then sommets[i].color = couleurs[0]
      if (sommets[i].position.z > 66 && sommets[i].position.z < 133) then sommets[i].color = couleurs[1]
      if (sommets[i].position.z >= 133) then sommets[i].color = couleurs[2]
    Pourriez-vous m'aider ?
    PS : Il y a des emplacements pour d'éventuels shaders dans le code HTML, qui pourraient être intégrés dans le matériau comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vertexShader: document.getElementById('vertexShader').textContent,
    fragmentShader: document.getElementById('fragmentShader').textContent

  2. #2
    Membre actif
    Homme Profil pro
    Futur développeur, étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Futur développeur, étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Par défaut
    Bon, en faisant plus de recherches, j'ai réussi à avoir ces shaders fonctionnels :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //Vertex shader
    varying vec3 col;
     
    void main() {
      col = position;
      vec4 offset = vec4(col.x, col.y, col.z, 1.0);
      gl_Position = projectionMatrix * modelViewMatrix * offset;
    }
    //Fragment shader
    varying vec3 col;
     
    void main(void) {
      gl_FragColor = vec4(1.0, 1.0, col.z, 1.0);
    }
    Ça permet d'avoir une couleur jaune quand le z est environ 0 et sinon blanc. Mais comme je m'étais jamais intéressé au GLSL avant, j'ai aucune idée de comment choisir la couleur des vertex, et aussi (si c'est possible) comment mettre plus de 2 couleurs.

    EDIT : J'ai compris un truc : le vec4 qui définie le gl_FragColor c'est du rgba (ou rgb + quelque chose), du coup j'ai réussi à personnaliser les 2 couleurs. Mais peut on en avoir plus de 2 ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/11/2013, 18h24
  2. Initialisation de couleur des sommets
    Par shadow07 dans le forum OpenGL
    Réponses: 1
    Dernier message: 12/03/2012, 11h54
  3. couleur des axes en fonction du jour
    Par chantallette dans le forum iReport
    Réponses: 0
    Dernier message: 16/04/2008, 17h15
  4. Réponses: 6
    Dernier message: 16/10/2007, 20h07
  5. Récuperer des fichiers en fonction de leur ancienneté
    Par julien000 dans le forum Langage
    Réponses: 3
    Dernier message: 24/07/2006, 17h09

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