Java3D: проблема с порядком объектов, которые имеют прозрачную текстуру PNG - PullRequest
0 голосов
/ 19 марта 2010

Сегодня я попытался запрограммировать небольшой аквариум с помощью Java 3D. Аквариум вращается и в него помещаются рыбы. Рыбы в коробке - это 3D-коробки Java с изображением PNG, имеющим альфа-канал. Без активированной прозрачности порядок объектов правильный. Но когда я включаю его, некоторые рыбы сзади попадают на фронт, что выглядит действительно неправильно. Я использовал 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 

! [Альтернативный текст] [1]

Спасибо!

Ответы [ 2 ]

1 голос
/ 19 марта 2010

Я рекомендую использовать OrderedGroup, чтобы убедиться, что ваша рыба вытащена задом наперед.

0 голосов
/ 03 февраля 2012

Да, вы должны использовать 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);
...