47231 (608166), страница 2

Файл №608166 47231 (Использование JAVA-технологий для разработки графических приложений) 2 страница47231 (608166) страница 22016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

2.2. Разработки Java 3D

Мы живем в трехмерном мире. Наше зрение позволяет нам видеть в трех измерениях с координатами x, y и z. Многие из поверхностей, на которых отображается графика, — например, экраны мониторов или листы бумаги — являются плоскими. Программирование трехмерной графики позволяет нам воспроизводить реалистичные модели нашего объемного мира на поверхностях в двухмерном виде. Трехмерная графика имеет преимущества в том смысле, что практически все, что вы можете видеть вокруг, можно моделировать — цифровым образом представить форму и размеры, а также отобразить — нарисовать на экране компьютера.

В настоящее время существует большое число приложений, позволяющих работать с трехмерной графикой — от игр и медицинского оборудования до трехмерных игр и хранителей экранов. Достижения в области компьютерного аппаратного обеспечения привели к значительному росту интереса к трехмерной графике. Успех в создании высокопроизводительного аппаратного обеспечения способствовали разработкам высокоэффективных интерфейсов прикладного программирования трехмерной графики — от созданного в 70-х годах API CORE от Siggraph и создания в 80-х годах прошлого века OpenGL компанией SGI, до сегодняшних средств программирования трехмерной графики, включая Microsoft DirectSD и Java3D.

Трехмерная графика требует графических алгоритмов, использующих сложный математический аппарат. Java 3D предоставляет разработчикам надежные и развитые возможности для работы с трехмерной графикой, в то же время оставляя за сценой математику, необходимую для реализации графических алгоритмов. Java 3D — это высокоуровневый API программирования трехмерной графики. Java 3D управляет всеми необходимыми низкоуровневыми операциями для работы с графикой, поэтому разработчики могут создавать сложные трехмерные сцены, не задумываясь об используемом аппаратном обеспечении. Подобно Java, код Java 3D, будучи написанным, однажды, работает повсеместно. Приложения Java 3D будут работать аналогичным образом на различных графических платформах.

Sun Microsystems разрабатывала Java 3D API, имея в виду четыре основные цели: переносимость приложений, независимость от аппаратного обеспечения, масштабирование производительности и способность работать с трехмерной графикой через сеть. Упрощение сложных графических операций играло ключевую роль при разработке Java 3D API. Вот некоторые области и сферы применения API Java 3D:

  • визуализация трехмерных данных,

  • взаимодействующие между собой приложения,

  • игры (особенно сетевые с несколькими участниками),

  • деловая графика,

  • интерактивные обучающие системы,

  • моделирование и визуализация молекулярных структур,

  • разработка трехмерных Web-приложений,

  • разработка трехмерных графических пользовательских интерфейсов.

Java 3D предлагает несколько функциональных возможностей, которые могут использоваться для разработки трехмерных графических приложений:

  • Поведения. Java 3D поддерживает множество поведений, включая анимацию и перемещение, обнаружение столкновений (выявление, когда два объекта сталкиваются) и морфинг (трансформацию одного изображения в другое изображение).

  • Вуалирование. Java 3D поддерживает вуалирование содержимого, что ограничивает возможность просмотра определенных объектов в сцене. Например, вуалирование помогает создать реалистичную модель ливня или урагана в игре.

  • Геометрия. Java 3D имеет встроенные трехмерные графические примитивы для создания геометрических фигур. В Java 3D можно отображать сцены, созданные в других приложениях трехмерной графики, например, SDStudio Мах, VRML и LightwaveSD.

  • Освещение. Java 3D позволяет освещать объекты трехмерной сцены. Java 3D поддерживает различные виды освещения и управления его цветом, направлением и интенсивностью.

  • Звук. Уникальной особенностью Java 3D является поддержка SD-звука.

Текстуры. Java 3D поддерживает наложение текстур на поверхности трехмерных фигур.

Сцены Java 3D.

Изображения, отображаемые с помощью Java 3D, называют сценами. Сцену также называют виртуальной вселенной – это трехмерное пространство, которое содержит набор фигур. Корнем сцены Java 3D является объект VirtualUniverse. Объект VirtualUniverse имеет систему координат для местоположения графов сцены, которые она содержит. Каждая трехмерная сцена Java 3D описывается рядом графов сцены – иерархических структур, которые задают атрибуты трехмерной среды. Каждый граф сцены прикреплен к объекту VirtualUniverse в определенной точке системы координат виртуальной системы. Граф сцены состоит из внутренней системы координат и графов – ветвей. Каждый граф сцены имеет внутреннюю систему координат. Класс Locale является корневым узлом графа сцены и содержит вложенные системы координат для виртуальной вселенной и ряд графов-ветвей. В Java 3D имеется два типа графов-ветвей: графы-ветви содержимого и графы-ветви представления. Графы-ветви содержимого задают содержимое в трехмерных сценах, включая геометрию, освещение, текстуры, вуалирование и поведение. Графы-ветви представления содержат платформы наблюдения — коллекции объектов, которые определяют перспективу, позицию, ориентацию и масштаб в трехмерных сценах. Платформу наблюдения также называют точкой зрения.

Класс SceneGraphObject Java 3D — базовый класс для всех объектов в графе-ветви. Объект SceneGraphObject может содержать группу Group, которая представляет собой узел, содержащий множество дочерних узлов. Дочерними узлами группы Group могут быть группы (объект Group), листья (объект Leaf) или узлы-компоненты (объект NodeComponents). Узлы-листья Leaf задают геометрию, освещение и звук в графах-ветвях содержимого и компоненты платформы наблюдения в графе-ветви представления. Объекты NodeComponent задают различные компоненты в объектах Group и Leaf, такие как текстура и атрибуты цвета.

В следующей таблице приведены некоторые подклассы классов Group, Leaf и Node-Component:

Класс

Описание

Частичный список классов класса Group Java 3D

BranchGroup

Корневой узел (объект Node) графа сцены, который вложен в класс Locale

Switch

Может отображать либо один дочерний узел, либо несколько дочерних узлов, задаваемых маской

TransformGroup

Содержит преобразование (например, перемещение, вращение или масштабирование)

Частичный список классов класса Leaf

Behavior

Содержит методы для получения пользовательского ввода (например,

нажатие клавиш и щелчков мышью), а также методы, которые описывают поведение объекта при определенных событиях (например, при столкновениях)

Light

Описывает набор параметров источников освещения Java 3D

Shape3D

Описывает трехмерные геометрические объекты

ViewPlatform

Управляет точкой наблюдения трехмерной сцены

Частичный список классов класса NodeComponent

Appearance

Задает атрибуты объекта Shape3D, такие как цвет и текстура

Material

Описывает свойства освещенного объекта (например, отраженный цвет.

Таблица 2. Основные методы подкласса классов Group, Leaf и Node-Component

2.3. Разработки 3D Paint

В данной работе я создал графический редактор 3D Paint.

Идеей моего проекта является использование двухмерной и трехмерной графики на Java для создания удобного и многофункционального графического редактора.

Для реализации проекта мне потребовалась изучить подробно графику на Java и разработки вышеперечисленных программных интерфейсов Java 2D и Java 3D.

На первом этапе я создал саму визуальную оболочку (каркас графического редактора); трехмерные фигуры: «цветной куб», «цилиндр», «сфера», «параллелепипед», «конус» и создание трехмерного текста, с возможностью изменение типа шрифта, размера и стиля; панель изменения цвета для фигур и для фона, где размещаются фигуры.

На втором этапе я планирую создать панель с двухмерной графикой, которая будет рисовать: линии, прямоугольники, треугольники и другие элементы, с возможностью изменения цвета, затирания, трансформации. Также я хочу связать трехмерную и двухмерную графику для создания общих проектов, таких как дизайн трехмерного объекта или обычное рисование графических картинок.

В начала проекта, используя программное обеспечение NetBeans IDE 6.0, я создал так называемый каркас приложения (Рис 1). Он позволяет управлять, созданными фигурами трехмерной графики. Все кнопки и панели (меню, управления) находятся в пакетах SWING и AWT.

Рис 1. Графический редактор 3D Paint

На левой панели приложения располагаются кнопки с фигурами, на нижней панели кнопки управления этими фигурами, центральная панель отображает фигуры и действия над ними. Панели расположены при помощи раскладчика BorderLayout (раскладчик по сторонам света). А кнопки на этих панелях располагаются при помощи раскладчика FreeDesignLayout.

Далее создал примитивные геометрические фигуры, используя библиотеку com.sun.j3d.utils.geometry. Класс geometry хранит в себе трехмерные фигуры: cylinder, box, cube, sphere, cone.

Например для создания трехмерной фигуры «Цилиндр» используется следующий код:

Cylinder CylinderObj = new Cylinder(0.7f, 1.4f, ap);

objTrans.addChild(CylinderObj);

где 0.7f и 1.4f это размер фигуры (ширина и длина).

Фигура может выполнять следующие действия:

MouseRotate behavior = new MouseRotate(objTrans);

objTrans.addChild(behavior);

behavior.setSchedulingBounds(bounds);

- вращение при помощи левой кнопки мыши.

MouseZoom behavior2 = new MouseZoom(objTrans);

objTrans.addChild(behavior2);

behavior2.setSchedulingBounds(bounds);

- изменение размера фигуры при помощи колесика мыши (трансформация).

orbit = new OrbitBehavior(c, OrbitBehavior.REVERSE_ALL |

OrbitBehavior.STOP_ZOOM);

BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);

orbit.setSchedulingBounds(bounds);

viewingPlatform.setViewPlatformBehavior(orbit);

- перетаскивание фигуры по рабочей области при помощи правой кнопки мыши.

Transform3D yAxis = new Transform3D();

Alpha rotationAlpha = new Alpha(-1, 10);

RotationInterpolator rotator = new RotationInterpolator(rotationAlpha, objTrans, yAxis, 0.0f, (float) Math.PI*-2.0f);

BoundingSphere bounds1 = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);

rotator.setSchedulingBounds(bounds1);

objRoot.addChild(rotator);

- вращение трехмерной фигуры. С помощью этого кода можно задавать скорость вращения и направление вращения фигуры (по часовой или против часовой стрелки).

Для создания трехмерного текста используется класс Font3D из библиотеки javax.media.j3d. Класс Font3D содержит в себе методы задания имени трехмерного текста, типа текста (жирный, курсив, подчеркнутый), размера. К трехмерному тексту, как и к другим трехмерным объектам можно применять выше перечисленные действия: вращение, перемещение и трансформацию.

Также в программе есть возможность управления цветом. Можно менять как цвет фона, так и цвет самого трехмерного объекта. Управление цветом осуществляется при помощи класса ColorChooser из пакета javax.swing. Цвет можно менять с помощью разных систем задания цвета. ColorChooser содержит три системы RGB, HSB и Swatches.

Для удобства в программе создана панель меню, содержащая меню-бар «Файл» и «Справка» из класса JMenyBar. А меню-бар содержит вкладки «Выход» и «О 3DPaint» из класса JMeny.

При нажатии на вкладку в меню «О 3DPaint» выходит диалоговая панель, принадлежащая пакету javax.swing, содержащая информацию о программном обеспечении, версии и создателе.

ЗАКЛЮЧЕНИЕ

Характеристики

Тип файла
Документ
Размер
5,81 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов курсовой работы

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6390
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее