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

OpenGL Discussion :

[JAVA3D] Comment active-t-on l'alpha sur une texture?


Sujet :

OpenGL

  1. #1
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut [JAVA3D] Comment active-t-on l'alpha sur une texture?
    Je n'arrive pas à trouver comment on utilise l'alpha sur une texture.
    J'aimerais que les textures avec de l'alpha soient détourées grace au masque contenu dans l'alpha.
    Je me souviens que je l'avais fait en openGL, je pense donc que c'est possible en java3D, mais comment?

    Voici mon code de chargement des textures :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    texture = null;
    			if (texturesDictionary.contains(mat.textureFileName)) {
    				texture = (Texture2D) texturesDictionary.get(mat.textureFileName);
    			} else {
    				if (mat.textureFileName!= null) {
    					if (mat.textureFileName!= "") {
    						System.out.println("debug :" + "textures/" + mat.textureFileName);
    						TextureLoader texLoader = new TextureLoader(getClass().getResource("textures/"+ mat.textureFileName), TextureLoader.GENERATE_MIPMAP, null);
    						texture = (Texture2D) texLoader.getTexture();
    						//System.out.println("debug : Texture format : " + texture.getFormat() + " " + Texture2D.RGBA);
    						texture.setMipMapMode(Texture.MULTI_LEVEL_MIPMAP);
    						texture.setAnisotropicFilterMode(Texture.ANISOTROPIC_SINGLE_VALUE);
    						texturesDictionary.put(mat.textureFileName, texture);
    					}
    				}
    			}
    			TextureAttributes texAttr = new TextureAttributes();
    			texAttr.setTextureMode(TextureAttributes.MODULATE);
    			texAttr.setTextureBlendColor(new Color4f(0.0f, 0.0f, 0.0f, 1.0f));
    			texAttr.setPerspectiveCorrectionMode(TextureAttributes.NICEST);
    			texAttr.setCombineAlphaSource(0,TextureAttributes.COMBINE_TEXTURE_COLOR);
    			texAttr.setCombineAlphaFunction(0,TextureAttributes.COMBINE_ONE_MINUS_SRC_ALPHA);
     
    			/*****************************/
    			ColoringAttributes colAttrib = new ColoringAttributes();
    			colAttrib.setCapability(ColoringAttributes.ALLOW_SHADE_MODEL_READ);
    			colAttrib.setCapability(ColoringAttributes.ALLOW_SHADE_MODEL_WRITE);
     
     
    			colAttrib.setShadeModel(ColoringAttributes.SHADE_GOURAUD);  
    			appear.setColoringAttributes(colAttrib);
     
    			Material javaMat = new Material(	new Color3f(mat.diffusionR,mat.diffusionG, mat.diffusionB),
    												new Color3f(mat.emissionR,mat.emissionG, mat.emissionB),
    												new Color3f(mat.diffusionR,mat.diffusionG, mat.diffusionB),
    												new Color3f(mat.specularityR,mat.specularityG, mat.specularityB),
    												mat.specularity
    											);
    			appear.setMaterial(javaMat);
     
    			// attributs des polygones : leurs deux faces devront etres affichables
    			PolygonAttributes polyAttrib = new PolygonAttributes();
    			polyAttrib.setCullFace(PolygonAttributes.CULL_NONE);
    			appear.setPolygonAttributes(polyAttrib);
     
     
    			/*****************************/
    			if (texture!= null) { 
    				appear.setTexture(texture);
    				appear.setTextureAttributes(texAttr);
    			}
     
    			shape.setAppearance(appear);
    			object3d.addChild(shape);
    Хајде Јано коло да играмо

  2. #2
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut
    En fait, je cherche l'équivalent java3D de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    glEnable(GL_ALPHA_TEST);
    glAlphaFunc(GL_GEQUAL);
    Хајде Јано коло да играмо

  3. #3
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 527
    Points : 5 195
    Points
    5 195
    Par défaut
    Sur le site de nehe, tu as des tutorieux opengl pour plusieurs langages, attardes toi sur le tutorial traitant du blending :
    http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=08

    tu vas tout en bas de la page et tu regardes dans la liste des sources téléchargeables, il y a Java

    en espérant que tu y trouvera ce que tu cherches
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  4. #4
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut
    En fait, ce n'est pas un problème de blending.

    Finalement, j'ai trouvé l'erreur : mon image png ne possédait pas de couche alpha...

    Je mets un résolu.
    Хајде Јано коло да играмо

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

Discussions similaires

  1. Comment Activer un OCX ou DLL sur MS-EXCSL 2003
    Par kiliky dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/05/2009, 10h42
  2. comment activer le drag and drop sur un mac?
    Par hammah dans le forum Apple
    Réponses: 3
    Dernier message: 25/11/2008, 18h30
  3. Réponses: 7
    Dernier message: 10/05/2006, 11h51
  4. Réponses: 8
    Dernier message: 26/03/2006, 15h09
  5. Activer un bouton en appuyant sur une touche du clavier
    Par brasco06 dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 16/02/2006, 23h47

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