2010-03-30 2 views
0

Я ищу способ воспроизвести этот эффект туманной сферы с помощью Java3D.Создание светящейся сферы в Java3D

http://bzflag.org/screenshots/bzfi0021.jpg http://bzflag.org/screenshots/bzfi0019.jpg http://bzflag.org/screenshots/bzfi0022.jpg

Я создаю преобразование группы с точечным источником света и эмиссионной-материалоемкость сферой, но я не могу воспроизвести foggyness.

Идеи?

Спасибо!

============ РЕШЕНИЕ (Благодаря Ricket) ===========

try 
    { 
     TextureLoader myLoader = new TextureLoader(new File("./data/grad.png").toURI().toURL(), this); 

     ImageComponent2D myImage = myLoader.getImage(); 

     Raster raster = new Raster(); 
     raster.setPosition(new Point3f(0.0f, 0.0f, 0.0f)); 
     raster.setType(Raster.RASTER_COLOR); 
     raster.setSize(50, 50); 
     raster.setImage(myImage); 

     TransparencyAttributes ta = new TransparencyAttributes(TransparencyAttributes.BLENDED, 0.0f); 
     Appearance app = new Appearance(); 
     app.setTransparencyAttributes(ta); 

     objScale.addChild(new OrientedShape3D(raster, app, OrientedShape3D.ROTATE_ABOUT_POINT, new Point3f(0.0f, 0.0f, 0.0f))); 


    } 
    catch (MalformedURLException e) { throw new RuntimeException(); } 

ответ

2

Я уверен, что «сфера» на самом деле представляет собой 2D-спрайт, нарисованный в 3D-пространстве в виде рекламного щита, а затем соответствующий цветной свет также «нарисован» на его позиции. Туманность - это просто двумерный градиент изображения.

Это только мое лучшее предположение, что, играя в игру, я не смотрел на источник.

+0

Спасибо! Насколько я могу судить, это правильное предложение. Объект Java3D называется OrientedShape3D - в случае, если любой другой хочет получить ответ. – Jim

1

Статья Understanding Lighting in the Java 3D API объясняет, как настроить параметры освещения , Если вы не можете имитировать светящийся эффект с одной сферой, вы можете попытаться поместить меньший более широкий цвет в прозрачную прозрачную сферу.

0

Вы можете попробовать looking at the code. У них даже есть guide.

+1

Благодарим, к сожалению, похоже, что они используют совершенно другую библиотеку и разные языки. – Jim

+0

Командные последовательности OpenGL должны быть одинаковыми независимо от того, какую привязку вы используете. – genpfault

+1

Java3D не использует последовательности команд OpenGL, это трехмерная библиотека на высоком уровне, основанная на сценах. Вы имеете дело с деревьями узлов. – Ricket

Смежные вопросы