Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: GUI и Java FX приложения > SceneGraph: введение |
Автор: Platon 10.4.2008, 15:02 |
Здравствуйте, уважаемые. В виду последних событий, мне придется основательно познакомиться с библиотекой SceneGraph, примеры которой можно найти https://scenegraph-demos.dev.java.net/. Библиотека замечательная, и обладает неслабым потенциалом, к слову, ее используют SwingLabs и JavaFX. Гипотетически, я могу делиться своими маленькими примерчиками, открытиями и прочим, если это кому нибудь интересно. Не стал делать опрос, просто свое мнение высказывайте устно и ставя оценку этому посту. |
Автор: cube 10.4.2008, 16:03 |
Очень интересно! Выкладывай! |
Автор: Platon 11.4.2008, 12:11 | ||||||||||||||||||||||||
Окэй, ожидал чуть более живой реакции, видимо. понапрасну, надеюсь подтянутся в процессе. Для начала вводная лекция. Обоснование выбора В начале графического пути я делал все вещи самостоятельно, это и программка Фигурки, Вырезание лобзиком, Танчики, Шахматы (все игрушки выложены на форуме) – вся графическая часть этого была выполнена собственноручно, со временем я стал задумываться, а неплохо было бы вращать композицию объектов одновременно + своя внутренняя система координат + здорово было бы если бы события на графических объектах обрабатывались как в компонентах Swing, AWT и т.д. По знакомству с QT, я знал, что там разработан замечательный framework (дожил, даже не знаю, как обзывать по-русски) The Graphics View Framework, Первая мысль была использовать Jambi, загвоздка заключается в том, что Jambi нужно или купить, или разрабатывать некоммерческие приложения + идея о pure java заставила отклонить этот вариант. При первой острой необходимости я стал искать http://forum.vingrad.ru/forum/topic-204283.html в конце поиска остановился на SceneGraph, удовлетворяла всем моим потребностям. Но, должен предостеречь, как это делают сами разработчики этой библиотеки, она пока сырая и в проекты ее включать опасно. Поработав немного, пока не вижу никаких причин не использовать, разве, что нашел один баг, но он незначительный. Основные понятия Сцена – полотно, на котором располагаются все графические элементы. Глобальные координаты – координаты относительно корневого компонента (сцены), чаще всего это JSGPanel Локальные координаты – координаты в своей внутренней системе представлений. SGNode
Попросту говоря, это кирпичик сцены, класс, от которого наследуются все графические компоненты сцены. SGGroup
Как раз тот удобный класс, который позволяет при изменении координат данного элемента изменить глобальные координаты всех дочерних элементов SGNode. SGTransform.Translate
Используется для динамического позиционирования графического объекта. SGTransform.Rotate
JSGPanel
Swing компонент, который встаивается в Swing приложение и отображает графическую композицию. Теперь ломовые лошадки, с которыми придется иметь много дел: SGShape, SGImage, SGText, говорят сами за себя. Соответственно: классы по работе с классами Java 2D Shape, с классами Image, с текстом. Hello world рисовать не буду. Я позволю себе начать с чуть более сложного. https://scenegraph-demos.dev.java.net/demos.html Приложение демонстрирует работу по обработке событий мыши, перетаскивания, поворота фигуры.
Теперь о том моменте, который я оставил на отдельный комментарий:
будет эквивалентен этому коду:
http://download.java.net/javadesktop/scenario/releases/0.6/Scenario-0.6.jar |
Автор: 1024 12.4.2008, 13:13 |
у тебя есть что-то готовое посложней разноцветных шариков? |
Автор: Platon 15.4.2008, 07:25 |
Решил дополнить свой первый пример. Пара скринов: ![]() ![]() http://rapidshare.com/files/108187567/src.rar |
Автор: Platon 17.4.2008, 10:35 | ||||||
Попробуем оживить дискуссию. Подготовил еще 1 материальчик. Использование модели данных управления фигурой. Сегодня я покаж, как можно прикрепить модель данных к фигуре, чтобы изменение ее координат отображались на табло, и чтобы их можно было устанавливать данные в поля ввода. ![]()
http://rapidshare.com/files/108203869/shape-model.rar |
Автор: Platon 17.4.2008, 11:13 |
Решил выложить пару скринов своей работы с помощью SceneGraph. В конструкторе аудитории это демонтрация манежного блока, который имеет внутренний радиус, внешний радиус (пропорция - их отношение), число рядов, число сидений в первом ряду, число сидений в последнем ряду + уже обсуждаемые координаты фигуры.![]() ![]() ![]() http://rapidshare.com/files/108154612/test.rar но архив запаролен, кто хочет иметь доступ к файлу, пишите в личку или на почту. |
Автор: 1024 17.4.2008, 11:37 |
никому не интересен твой небольшой опыт (как ты сам сказал). Тем более если надо какой-то пароль. Если будет что-то работающее и интересное то выкладывать нужно 1. со скриншотами для тех кому лень скачивать 2.полностью работающее чтоб запускалость тыканием мышки т.е. со всеми библиотеками и настройками 3.исходный код (если есть) должен компиляться в какой либо распространённой IDE без ковыряния в настройках пример - мой сайт по JavaFX (ото родственный сценграфу проект) - http://molgav.nn.ru/ я не за себя спрашивал Когда будет что-то имеющее практическое значение то можешь связаться командой проекта, они у себя разместят. Это всяко лучше чем на рапидшаре выкладывать и фамилия твоя стоять везде будет. В статьях желательно больше картинок и описаний, так наглядней для читателей. Не нужно ожидать что многие начнут копаться в полотенце кода. |
Автор: Platon 18.4.2008, 12:06 |
Знать бы что стоящее еще сделать. С идеями проблемы :( |
Автор: 1024 21.4.2008, 09:07 |
думаю что из практичного но наглядного может быть какая-то программа использующая графики. из непрактичного но наглядного можно взять какую-то классическую игрушку типа Tetris, морской бой, Inviders или Breakout |
Автор: Platon 5.5.2008, 14:37 |
Здравствуйте, уважаемые. С вами снова я неугомонный любитель графических библиотек! По многочисленным просьбам я выполнил демо проект, опять же не такой сложный как тетрис, морской бой или еще что там, но имеет вполне хорошее практическое применение в эффектных демонстрациях. Карта мира. http://ipicture.ru/Gallery/Viewfull/1684913.html http://ipicture.ru/Gallery/Viewfull/1684924.html Возможности: можно щелкать по континентам для приближения/отдаления. Если будут желающие детально разберу и выложу исходники. Качайте архив, не смущайтесь, запускается с пары кликов (для видновозов). |
Автор: Platon 6.5.2008, 16:38 |
Вижу пятнадцатерых скачавших и ниодного комментария. |
Автор: Gugle 8.5.2008, 12:54 |
16 скачиваний. ![]() Посмотрел твой пример. Просмотрел примеры на сайте. Интересно, красиво и еще много чего можно добавить... Комент собственно решил оставить после твоего примера с картой. В долгом ящике лежит куча проектов где можно было бы использовать такую графику. Вот только эти проекты специфичны. То что ты начал ковырять эту библиотеку это + тебе. В реале, лично я не видел ничего готового с такой графикой написаной на java. Только тестовые работы. Но хорошо что есть люди у которых есть не только желание и время разбираться с такими библиотеками, но и готовыми поделиться своим опытом. Надеюсь ты незабросишь изучение. |
Автор: Platon 8.5.2008, 13:26 |
Слава Богу, хоть 1 спасительный комментарий. Не заброшу в любом случае, я к этому неровно дышу и попытки делать такое предпринимаю давно. |
Автор: Asal 15.5.2008, 14:28 | ||
А я вот камушАк решил бросить в твой АгАрОд ![]() Не по злобе, а из абиды, что руки у меня растут не от туда от куда надо ![]() нифига не получилось у меня запустить твой примерчик с картой
люди научите меня, как запустить ![]() а еще лучше исходники в студию ![]() |
Автор: Platon 15.5.2008, 14:52 | ||
У меня в папке есть run.bat ты попробуй запустить что-то в роде этого
Вижу разницу только в "lib/Scenario-0.6.jar;", ";" здесь существенна, помнится мне что она добавляет путь "", т.е. грубо говоря в class path добавляется текущая папка. |
Автор: Asal 15.5.2008, 15:04 |
не, не пахит. вроде всяк попробывал ![]() |
Автор: Gugle 16.5.2008, 11:32 |
Такс... С поворотами и перемещениями разобрался. Начал смотреть на движение объектов. Кстати, модель для координат фигур хорошая. Надо бы ее только закоментить. |
Автор: Platon 16.5.2008, 11:44 |
В таком случает, раз дискуссия оживилась, выкладываю исходник Карты мира. |
Автор: Gugle 16.5.2008, 13:05 |
Какой IDA пользуешься? Добавлено через 52 секунды Тфу... IDE |
Автор: Platon 16.5.2008, 13:35 |
А без разницы. там нет IDE зависимых компонентов |
Автор: Gugle 16.5.2008, 14:00 |
![]() |
Автор: Gugle 21.5.2008, 12:41 | ||
И наконец появился вопросик. В class Map есть:
Не могу понять - зачем? |
Автор: Platon 21.5.2008, 13:10 |
Не можешь понять зачем что? Зачем я делаю функцию setLocation(Point2D)? Ты хотел бы сразу устанавливать в translate.setTranslation(-location.getX(), -location.getY());? Это "тяжелое наследие" ООП, передача полномочий внутреннему устройству карты. Нам совсем не важно, как у нас работает эта функция, в идеале мы даже не должны видеть ее внутренности. Единственное, если бы я описывал функции, я бы обязательно написал, что эта функция устанавливает переданную координату в центр экрана (карты). |
Автор: Gugle 30.5.2008, 10:08 |
Ну вот и я немного повозился с "картой мира". Программа теперь имеет 2 ражима просмотра карты. 1. Карта и континенты находятся в центре экрана даже при изменении размеров. 2. Карту можно перемещать мышкой по экрану, при этом работает приближение и удаление. (И скрулом то же) |
Автор: Platon 30.5.2008, 10:57 |
Конечно, здорово, что ты решил пойти дальше ![]() Но 1). Графика страшно выгядит, антиалиасы зря убрал 2). Глючит прога. Если я жму с одного приближенного континента на другой, то выдление со старого не уходит и новый быделяется. В общем, посмотри. Не по делу: Ты для нагрузки в либ засунул org-netbeans-api-visual.jar? И исходники, всё-таки, выложил бы. У нас тут GPL ![]() |
Автор: Gugle 30.5.2008, 11:40 |
Глюк там один нашел, вот и не выложил. ![]() Сек. Сегодня положу. |
Автор: Gugle 30.5.2008, 12:58 | ||||||
Выкладываю. Чето только у меня при перерисовки моргать начало. Не сильно, но раньше небыло.
Сделал
Просто не хотел что бы карта уезжала. Ну да ладно. Поправил. Кстати, при DoubleClik глючит. Хотя решение простое. Ловить его. ![]()
Случайно попала. Откомпиленные файлы в предидущем посте заменил. Тут исходники. |
Автор: Gugle 17.6.2008, 11:23 | ||||
Есть какя нить альтернатива
Надо что нить похожее на:
|
Автор: Platon 17.6.2008, 12:06 | ||
Gugle, я тебя не понимаю. Мы, в большинстве своём, с полигонами и имеем дело. Добавлено через 3 минуты и 51 секунду Вот, к примеру, код из моего учебного пособия со звездой.
|
Автор: Gugle 17.6.2008, 12:42 |
ыыы... слона то мы и не заметили. ![]() спс |
Автор: Gugle 14.4.2009, 16:38 |
up Можно ли сделать фигуру прозрачной? С наскоку не получилось. Пошел читать доки, но может тут быстрее ответят? |
Автор: powerOn 14.4.2009, 19:07 |
Модератор: Gugle, идин топик - один вопрос. Создай новую тему и спрашивай там. |