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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как делать 3D при помощи java2D 
:(
    Опции темы
oson
Дата 2.7.2010, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Подскажите плиз линки по созданию 3D картинок с использованием Java2D
PM MAIL   Вверх
Cheloveck
Дата 2.7.2010, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

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



Может всё же сделать по-человечески?

Это сообщение отредактировал(а) Cheloveck - 2.7.2010, 16:17


--------------------
user posted image
PM Jabber   Вверх
oson
Дата 2.7.2010, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Из статьи я понял что JOGL лучший выбор. Но если задача стоит просто рисовать трехмерный график, то не избыточно ли это будет?
PM MAIL   Вверх
Temdegon
Дата 3.7.2010, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 9



Для построения графиков лучше юзать спец-либы, если там что-то не очень специфическое. На пример JFreeChart jnlp demo
http://www.jfree.org/jfreechart/samples.html
PM MAIL   Вверх
oson
Дата 3.7.2010, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



И на чем сделаны эти графики jfreechart? Они используют в СВОИХ РАЗРАБОТКАХ тот же JOGL или ограничиваются Java2D? В этом то и вопрос. Меня интересует это не стоки зрения пользователя графиков, а с точки зрения разработчика движка для графиков.
PM MAIL   Вверх
Temdegon
Дата 3.7.2010, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 9



Там вроде исходники есть
PM MAIL   Вверх
oson
Дата 3.7.2010, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если на выходе надо не более чем jpeg (ну или png,короче картинка) -  нужен JOGL? Или он нужен когда надо делать динамические сцены, а статический jpeg надо java2d рисовать. Проясните плиз ситуацию.
PM MAIL   Вверх
Amp
Дата 3.7.2010, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Для "динамических" 3д-графиков разумеется нужен будет JOGL, либо какой-нибудь другой биндинг к OpenGL/D3D (Java3D например). Для статической картинки (вроде тех, которые можно видеть в ворде) можешь пользоваться Java2D, но это менее удобней - будет лишний код, который отвечают за аффинные преобразования полигонов, проекции, расчет какого-никакого простенького освещения,  отрисовки этого дела силами Java2D. Конечно специфика отображения графиков сам софтварный рендеринг может сильно упростить, но все равно - это мартышкин труд.

JOGL - это конечно лишняя зависимость, которая может не работать (пользователи альтернативных ОС, например, нередко имеют либо кривоустановленные драйвера, либо просто убогие драйвера, которые кое-как поддерживают OpenGL версий 1.5 и выше).

Это сообщение отредактировал(а) Amp - 3.7.2010, 22:25
PM MAIL   Вверх
oson
Дата 3.7.2010, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



То есть фактически нарисовать просто jpeg картинку со всеми признаками 3D легче и быстрее при помощи JOGL. Но при этом должен стоять сам драйвер для openGL. Если там в той конкретной реализации openGL что-то будет нереализовано или не так реализовано, то картинка будет выводиться искаженая. Правильно я понял? 
 А Java3D в таком случае лучше чем-то? Или такие же могут быть проблемы?
PM MAIL   Вверх
Amp
Дата 4.7.2010, 03:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(oson @  3.7.2010,  23:20 Найти цитируемый пост)
То есть фактически нарисовать просто jpeg картинку со всеми признаками 3D легче и быстрее при помощи JOGL. 

Да, проще. Но еще проще, как писали выше, в случае с графиками взять JFreeChart (там Java2D).

Цитата(oson @  3.7.2010,  23:20 Найти цитируемый пост)

Но при этом должен стоять сам драйвер для openGL. Если там в той конкретной реализации openGL что-то будет нереализовано или не так реализовано, то картинка будет выводиться искаженая. Правильно я понял? 

Для рисования графиков вряд ли будут использованы какие-то хитрые расширения или фичи из OpenGL 2.0 и выше. OpenGL 1.5 должно хватать "за глаза". Если у пользователя не работает OpenGL 1.5 (вышла в 2003-м году) - он сам себе очень злой буратино, но тут уж все зависит от отношения к нему. В принципе, можно выкрутиться.

Цитата(oson @  3.7.2010,  23:20 Найти цитируемый пост)
А Java3D в таком случае лучше чем-то? Или такие же могут быть проблемы? 

В глаза Java3D не видел, только мельком читал вики.

Интересует задача - на выходе нужен именно файл с изображением или можно просто все взять и отрендерить на окне?
PM MAIL   Вверх
oson
Дата 4.7.2010, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



 Задача состоит в том, что на выходе должен быть BufferedImage, содержащий собственно сгенерированный график. Его можно или вывести в Swing, и в веб и просто в файловой системе сохранить. 
 JFreeChart использовать нельзя никак, собственно как и другие фреймворки на эту тему.
 При помощи Java2D можно как то эмулировать 3D график. Но используя JOGL думаю эффект трехмерности должен быть лучше и достигаться проще.
Но вопрос в том, какие дополнительные требования должны будут предъявляться к клиенту, который захочет запустить у себя написанный таким образом график? То есть в поставке должно быть написано - "Пожалуйста установите у себя OpenGL  не ниже 1.5, иначе вы нифика не увидите"?  smile
PM MAIL   Вверх
Amp
Дата 4.7.2010, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(oson @  4.7.2010,  10:36 Найти цитируемый пост)
То есть в поставке должно быть написано - "Пожалуйста установите у себя OpenGL  не ниже 1.5, иначе вы нифика не увидите"?

Да. Или же можно взять Mesa (http://www.mesa3d.org) для софтварного рендеринга OpenGL и таскать ее с собой - скорость отрисовки все равно уже не критична, зато будет пофиг на драйвера и железо. Но биндингов Mesa к Java я не видел ))

Почему я спросил про картинку - для инициализации OpenGL (формат пикселя, контекст) необходимо окно. Приложение без окна взять и отрендерить картинку куда-то там в память (если не использовать хитрые уловки вроде скрытого окна, либо, в случае с windows, получения HDC совершенно левого окна, например десктопа через GetDesktopWindow) нельзя. Но подобный off-screen rendering возможен опять же с помощью библиотеки Mesa .
PM MAIL   Вверх
oson
Дата 4.7.2010, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Читаю по Java3D http://en.wikipedia.org/wiki/Java_3D
"Java 3D is a scene graph-based 3D application programming interface (API) for the Java platform. It runs on top of either OpenGL or Direct3D. "
Получается или OpenGL или Direct3D должно быть установлено у клиента уже - насколько я понимаю вообще это связано с самой видео картой и соответствующими драйверами.
То есть в случае Java3D значит клиенту меньше надо делать дополнительных действий чтобы запустить у себя картинку?
В случае с Java2D он же не делает никаких инсталляций дополнительных - jvm использует имеющиеся ресурсы и все, и не прости поставить дополнительные драйвера. 
Есть тут какое то принципиальное отличие - java3d, jogl и java2d - в плане установки дополнительных драйверов, программ и тп?
Хотелось бы, чтобы чел взял присланную программу и просто запустил ее в среде jvm, ну а нужные jarы для той же java3d будут уже внутри поставки.
PM MAIL   Вверх
Amp
Дата 4.7.2010, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(oson @  4.7.2010,  14:15 Найти цитируемый пост)
Есть тут какое то принципиальное отличие - java3d, jogl и java2d - в плане установки дополнительных драйверов, программ и тп?
Хотелось бы, чтобы чел взял присланную программу и просто запустил ее в среде jvm, ну а нужные jarы для той же java3d будут уже внутри поставки. 

Я не склонен считать драйвера на видеокарту дополнительным ПО. Это основа, которая должна стоять и корректно работать. java3d/jogl - по сути обвязки вокруг OpenGL или D3D. И если последние не работают, то и java3d/jogl работать не будут. Java2D может работать без аппаратной акселерации, поэтому требование к драйверам на видео не предъявляет.

В последние годы, в связи с широким распространением композитных оконных менеджеров в современных ОС (aero в windows, compiz/kwin в linux) люди как-то озадачиваются корректной работой аппаратного ускорения, чтобы все свистело и летало smile
PM MAIL   Вверх
oson
Дата 4.7.2010, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ясно, спасибо. Но один вопрос я не понял. 
 Я при помощи java2d просто генерирую картинку (в зависимости от входных параметров) и сохраняю ее в файловой системе (или вывожу в Swing, в web). 
 Используя JOGL/java3d можно результат работы просто свести к BufferedImage и куда нить сохранить (ну или вывести) эту картинку? То есть если мне не надо ничего больше, чем jpeg или png картинка пока, но я хочу использовать возможности этих библиотек для создания 3d графиков (чтобы не сочинять то, что уже там сделано) - получится так его использовать?

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

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

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


 




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


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

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