有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

有人知道问题出在哪里吗

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 

!![备选案文][1]

谢谢大家!


共 (2) 个答案

  1. # 1 楼答案

    是的,你应该使用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);
    
  2. # 2 楼答案

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