0

今天我尝试用 Java 3D 编写一个小鱼缸。鱼缸旋转,鱼被放入其中。盒子里的鱼是带有 alpha 通道的 PNG 图片的 Java 3D 盒子。如果没有激活透明度,对象的顺序是正确的。但是当我启用它时,后面的一些鱼会出现在前面,这看起来真的很不对劲。我尝试了最好、最快和混合作为透明度选项,但我没有努力。

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

Vector3f[] posf = 新 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);

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

尝试
{
  fischapp.setTexture(new TextureLoader(ImageIO.read(new File("nemo.png")), this).getTexture());
}
捕获(IOException 除外)
{
  System.out.println(exc.getMessage());
}

for(int i = 0; 我

![替代文字][1]

谢谢!

4

2 回答 2

1

我建议使用 OrderedGroup 来确保您的鱼是从后到前绘制的。

于 2010-03-19T19:32:09.420 回答
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);
于 2012-02-03T15:53:30.763 回答