Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Java3d и Web приложение 
:(
    Опции темы
oson
Дата 25.7.2010, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 289
Регистрация: 3.3.2004
Где: Севастополь

Репутация: нет
Всего: 1



Пытаюсь внутри web приложения на томкате сгенерировать BufferedImage при помощи библиотек Java3d.
Библиотеки j3dcore.jar, j3dutils.jar, vecmath.jar кидаю в TOMCAT_HOME/lib
В system32 компа на котором запускается томкат лежат j3dcore-d3d.dll, j3dcore-ogl.dll, j3dcore-ogl-cg.dll, j3dcore-ogl-chk.dll
Код такой

Код


public class CanvasSupplier extends Applet
{
    private BufferedImage bufferedImage;
    
    public void createImage()
    {
        GraphicsConfiguration gc = SimpleUniverse.getPreferredConfiguration();
        Canvas3D cv = new Canvas3D(gc);
        setLayout(new BorderLayout());
        add(cv, BorderLayout.CENTER);
        BranchGroup bg = createSceneGraph();
        bg.compile();
        SimpleUniverse su = new SimpleUniverse(cv);
        Locale locale = new Locale(su);
        su.getViewingPlatform().setNominalViewingTransform();
        su.addBranchGraph(bg);

        bufferedImage = takeScreenshot(cv);
    }

    public BufferedImage takeScreenshot(Canvas3D canvas)
    {
        Screen3D on = canvas.getScreen3D();

        Canvas3D shot = new Canvas3D(canvas.getGraphicsConfiguration(), true);
        canvas.getView().stopView();
        canvas.getView().addCanvas3D(shot);
        canvas.getView().startView();


        Screen3D off = shot.getScreen3D();
        off.setSize(on.getSize());
        off.setPhysicalScreenHeight(on.getPhysicalScreenHeight());
        off.setPhysicalScreenWidth(on.getPhysicalScreenWidth());
        shot.setOffScreenLocation(canvas.getLocationOnScreen());

        BufferedImage bi = new BufferedImage(500, 500, BufferedImage.TYPE_INT_ARGB);
        ImageComponent2D buffer = new ImageComponent2D(ImageComponent.FORMAT_RGBA, bi);
        shot.setOffScreenBuffer(buffer);
        shot.renderOffScreenBuffer();
        shot.waitForOffScreenRendering();
        BufferedImage res = shot.getOffScreenBuffer().getImage();
        canvas.getView().removeCanvas3D(shot);
        return res;

    }

    public BranchGroup createSceneGraph()
    {
        BranchGroup objRoot = new BranchGroup();
        TransformGroup objSpin = new TransformGroup();
        objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        objRoot.addChild(objSpin);
        objSpin.addChild(new ColorCube(0.4));
          return objRoot;
    }

    public BufferedImage getBufferedImage()
    {
        return bufferedImage;
    }
}


public class Test3dBean extends BaseBean
{
    public BufferedImage getBufferedImage()
    {
       try
        {
         CanvasSupplier canvasSupplier = new CanvasSupplier();
         canvasSupplier.createImage();
         bufferedImage = canvasSupplier.getBufferedImage();

            ImageIO.write(bufferedImage, "png", new File("C:\\image123.png"));
        }
        catch (IOException e)
        {
            System.out.println(e.getMessage());
        }

        return bufferedImage;
    }
   
}



На странице вызывается этот BufferedImage через Servlet.

В общем с Java2D все работает. При попытке сгенерировать таким образом на моменте создания CanvasSupplier extends Applet все тихо замирает - причем никаких ошибок не выдается.
Подскажите плиз, вообще реально так сделать или я чего то не улавливаю? 
PM MAIL   Вверх
mgarin
Дата 26.7.2010, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 19.8.2009
Где: Санкт-Петербург

Репутация: 1
Всего: 3



Предполагаю, что у апплета нет прав на запись в файл в ОС.
Т.е. повисает на данной строчке:
Код
ImageIO.write(bufferedImage, "png", new File("C:\\image123.png"));


Вы точно уверены что с 2D у вас получалось записать изображение в файл с апплета?

Это сообщение отредактировал(а) mgarin - 26.7.2010, 11:05
PM MAIL WWW ICQ   Вверх
oson
Дата 30.7.2010, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 289
Регистрация: 3.3.2004
Где: Севастополь

Репутация: нет
Всего: 1



В общем то получилось записать и Java3d.
В путях системы лежат нужные dll.
В classpath нужные jar. вызываю не как апплет, а как обычный bean внутри web application.
Права записать в файловую систему у него ессно есть и вывести сгенерированный BufferedImage на страницу понятное дело тоже.
Наследование Applet и методы его убрал просто.

Это сообщение отредактировал(а) oson - 30.7.2010, 17:12
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0685 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.