2010-03-19 6 views
0

Aujourd'hui, j'ai essayé de programmer un petit aquarium avec Java 3D. L'aquarium tourne et les poissons y sont placés. Les poissons dans la boîte sont des boîtes 3D Java avec une image PNG qui a un canal alpha. Sans transparence activée, l'ordre des objets est correct. Mais quand je l'active, des poissons dans le dos viennent à l'avant ce qui semble vraiment faux. J'ai essayé NICEST, FASTEST et BLENDED comme options de transparence mais je n'ai eu aucun effort.Java3D: Problème avec l'ordre des objets qui ont une texture PNG transparente

Est-ce que quelqu'un sait quel pourrait être le problème?

Vector3f[] posf = new Vector3f[5]; 
posf[0] = new Vector3f(-0.22f, -0.1f, -0.2f); 
posf[1] = new Vector3f(-0.34f, 0.1f, 0.2f); 
posf[2] = new Vector3f(0.3f, -0.2f, 0.3f); 

Appearance fischapp = new Appearance(); 
fischapp.setTransparencyAttributes(new TransparencyAttributes(TransparencyAttributes.NICEST, 1f)); 

try 
{ 
    fischapp.setTexture(new TextureLoader(ImageIO.read(new File("nemo.png")), this).getTexture()); 
} 
catch(IOException exc) 
{ 
    System.out.println(exc.getMessage()); 
} 

for(int i = 0; i

! [Alt texte] [1]

Merci!

Répondre

1

Je recommande d'utiliser un groupe commandé pour assurer que vos poissons sont tirés vers l'avant.

0

Oui vous devez utiliser OrderedGroup au lieu de BranchGroup

ET

TextureAttributes texAtt = new TextureAttributes(); 
texAtt.setTextureMode(TextureAttributes.MODULATE); 
fischapp.setTextureAttributes(texAtt); 

TransparencyAttributes ta = new TransparencyAttributes(); 
ta.setTransparencyMode(TransparencyAttributes.NICEST); 
ta.setTransparency(.5f); 
fischapp.setTransparencyAttributes(ta); 
Questions connexes