![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| oson |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 289 Регистрация: 3.3.2004 Где: Севастополь Репутация: нет Всего: 1 |
Подскажите плиз линки по созданию 3D картинок с использованием Java2D
|
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
-------------------- ![]() |
|||
|
||||
| oson |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 289 Регистрация: 3.3.2004 Где: Севастополь Репутация: нет Всего: 1 |
Из статьи я понял что JOGL лучший выбор. Но если задача стоит просто рисовать трехмерный график, то не избыточно ли это будет?
|
|||
|
||||
| Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
Для построения графиков лучше юзать спец-либы, если там что-то не очень специфическое. На пример JFreeChart jnlp demo
http://www.jfree.org/jfreechart/samples.html |
|||
|
||||
| oson |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 289 Регистрация: 3.3.2004 Где: Севастополь Репутация: нет Всего: 1 |
И на чем сделаны эти графики jfreechart? Они используют в СВОИХ РАЗРАБОТКАХ тот же JOGL или ограничиваются Java2D? В этом то и вопрос. Меня интересует это не стоки зрения пользователя графиков, а с точки зрения разработчика движка для графиков.
|
|||
|
||||
| Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
Там вроде исходники есть
|
|||
|
||||
| oson |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 289 Регистрация: 3.3.2004 Где: Севастополь Репутация: нет Всего: 1 |
Если на выходе надо не более чем jpeg (ну или png,короче картинка) - нужен JOGL? Или он нужен когда надо делать динамические сцены, а статический jpeg надо java2d рисовать. Проясните плиз ситуацию.
|
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 3 Всего: 17 |
Для "динамических" 3д-графиков разумеется нужен будет JOGL, либо какой-нибудь другой биндинг к OpenGL/D3D (Java3D например). Для статической картинки (вроде тех, которые можно видеть в ворде) можешь пользоваться Java2D, но это менее удобней - будет лишний код, который отвечают за аффинные преобразования полигонов, проекции, расчет какого-никакого простенького освещения, отрисовки этого дела силами Java2D. Конечно специфика отображения графиков сам софтварный рендеринг может сильно упростить, но все равно - это мартышкин труд.
JOGL - это конечно лишняя зависимость, которая может не работать (пользователи альтернативных ОС, например, нередко имеют либо кривоустановленные драйвера, либо просто убогие драйвера, которые кое-как поддерживают OpenGL версий 1.5 и выше). Это сообщение отредактировал(а) Amp - 3.7.2010, 22:25 |
|||
|
||||
| oson |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 289 Регистрация: 3.3.2004 Где: Севастополь Репутация: нет Всего: 1 |
То есть фактически нарисовать просто jpeg картинку со всеми признаками 3D легче и быстрее при помощи JOGL. Но при этом должен стоять сам драйвер для openGL. Если там в той конкретной реализации openGL что-то будет нереализовано или не так реализовано, то картинка будет выводиться искаженая. Правильно я понял?
А Java3D в таком случае лучше чем-то? Или такие же могут быть проблемы? |
|||
|
||||
| Amp |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 3 Всего: 17 |
Да, проще. Но еще проще, как писали выше, в случае с графиками взять JFreeChart (там Java2D). Для рисования графиков вряд ли будут использованы какие-то хитрые расширения или фичи из OpenGL 2.0 и выше. OpenGL 1.5 должно хватать "за глаза". Если у пользователя не работает OpenGL 1.5 (вышла в 2003-м году) - он сам себе очень злой буратино, но тут уж все зависит от отношения к нему. В принципе, можно выкрутиться.
В глаза Java3D не видел, только мельком читал вики. Интересует задача - на выходе нужен именно файл с изображением или можно просто все взять и отрендерить на окне? |
||||
|
|||||
| oson |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 289 Регистрация: 3.3.2004 Где: Севастополь Репутация: нет Всего: 1 |
Задача состоит в том, что на выходе должен быть BufferedImage, содержащий собственно сгенерированный график. Его можно или вывести в Swing, и в веб и просто в файловой системе сохранить.
JFreeChart использовать нельзя никак, собственно как и другие фреймворки на эту тему. При помощи Java2D можно как то эмулировать 3D график. Но используя JOGL думаю эффект трехмерности должен быть лучше и достигаться проще. Но вопрос в том, какие дополнительные требования должны будут предъявляться к клиенту, который захочет запустить у себя написанный таким образом график? То есть в поставке должно быть написано - "Пожалуйста установите у себя OpenGL не ниже 1.5, иначе вы нифика не увидите"? |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 3 Всего: 17 |
Да. Или же можно взять Mesa (http://www.mesa3d.org) для софтварного рендеринга OpenGL и таскать ее с собой - скорость отрисовки все равно уже не критична, зато будет пофиг на драйвера и железо. Но биндингов Mesa к Java я не видел )) Почему я спросил про картинку - для инициализации OpenGL (формат пикселя, контекст) необходимо окно. Приложение без окна взять и отрендерить картинку куда-то там в память (если не использовать хитрые уловки вроде скрытого окна, либо, в случае с windows, получения HDC совершенно левого окна, например десктопа через GetDesktopWindow) нельзя. Но подобный off-screen rendering возможен опять же с помощью библиотеки Mesa . |
|||
|
||||
| oson |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 будут уже внутри поставки. |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 3 Всего: 17 |
Я не склонен считать драйвера на видеокарту дополнительным ПО. Это основа, которая должна стоять и корректно работать. java3d/jogl - по сути обвязки вокруг OpenGL или D3D. И если последние не работают, то и java3d/jogl работать не будут. Java2D может работать без аппаратной акселерации, поэтому требование к драйверам на видео не предъявляет. В последние годы, в связи с широким распространением композитных оконных менеджеров в современных ОС (aero в windows, compiz/kwin в linux) люди как-то озадачиваются корректной работой аппаратного ускорения, чтобы все свистело и летало |
|||
|
||||
| oson |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 289 Регистрация: 3.3.2004 Где: Севастополь Репутация: нет Всего: 1 |
Ясно, спасибо. Но один вопрос я не понял.
Я при помощи java2d просто генерирую картинку (в зависимости от входных параметров) и сохраняю ее в файловой системе (или вывожу в Swing, в web). Используя JOGL/java3d можно результат работы просто свести к BufferedImage и куда нить сохранить (ну или вывести) эту картинку? То есть если мне не надо ничего больше, чем jpeg или png картинка пока, но я хочу использовать возможности этих библиотек для создания 3d графиков (чтобы не сочинять то, что уже там сделано) - получится так его использовать? Это сообщение отредактировал(а) oson - 4.7.2010, 15:09 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |