Java3D:具有透明PNG纹理的对象的顺序问题

时间:2010-03-19 19:16:30

标签: java java-3d

今天我尝试用Java 3D编写一个小鱼缸。 鱼缸旋转,鱼类放入其中。 盒子里的鱼是带有PNG图片的Java 3D Boxes,它有一个alpha通道。如果没有激活透明度,则对象的顺序是正确的。但是当我启用它时,后面的一些鱼到了前面看起来真的错了。我尝试了NICEST,FASTEST和BLENDED作为透明度选项,但我没有努力。

有人知道问题可能是什么吗?

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 text] [1]

谢谢!

2 个答案:

答案 0 :(得分:1)

我建议使用OrderedGroup来确保您的鱼被拉回到前面。

答案 1 :(得分:0)

是的,你应该使用OrderedGroup而不是BranchGroup

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);