今天我尝试用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]
谢谢!
答案 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);