ИССЛЕДОВАНИЕ ТЕХНОЛОГИИ JAVA 3D (OPENGL) - Студенческий научный форум

IX Международная студенческая научная конференция Студенческий научный форум - 2017

ИССЛЕДОВАНИЕ ТЕХНОЛОГИИ JAVA 3D (OPENGL)

Карпов А.П. 1, Карпов А.П. 1
1Балаковский инженерно-технологический институт — филиал федерального государственного автономного образовательного учреждения высшего образования «Национальный исследовательский ядерный университет «МИФИ»
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
ВВЕДЕНИЕ

Трёхмерное пространство - геометрическая модель материального мира в котором мы находимся[1]. Программирование трехмерной графики позволяет нам создавать реалистичные модели нашего объемного мира. Трехмерная графика имеет преимущество в том смысле, что практически всё, что мы видим вокруг, можно смоделировать и представить цифровым образом форму и размеры, а также отобразить на экране компьютера.

Раньше, когда трёхмерная графика существовала только на суперкомпьютерах, не существовало единого стандарта в области графики. Все программы писались с "нуля", реализовывая свои методы для отображения графической информации. С приходом мощных процессоров и графических ускорителей трёхмерная графика стала реальностью для персональных компьютеров. Но в тоже время производители программного обеспечения столкнулись с серьёзной проблемой - это отсутствие каких-либо стандартов, которые позволяли писать программы, независимые от оборудования и операционной системы. Одним из первых таких стандартов является OpenGL.

  1. JAVA 3D

Java 3D - это интерфейс программирования приложений, предоставляющий кроссплатформенные и масштабируемые возможности для работы и создании интерактивной трехмерной графики в Java-приложениях[2]. Интерфейс организован в виде набора объектно-ориентированных интерфейсов, складывающихся в единую простую высокоуровневую модель программирования, разработанный Sun Microsystems. Он работает поверх OpenGL, либо Direct3D.

По сравнению с другими интерфейсами программирования приложений, Java 3D не только оболочка этих графических интерфейсов программирования, а интерфейс, который инкапсулирует программирование графики, используя, как говорилось выше, реальную объектно-ориентированную концепцию. Сцена строится по принципу графа сцены, которая является представлением объектов, который должны быть визуализированы. Этот граф сцены имеет структуру дерева, содержащего ряд элементов, которые необходимы для отображения объектов. Кроме того, Java 3D предлагает широкую пространственную поддержку звука[3].

Java 3D и документацию можно загрузить по отдельности. Они не являются частью Java Development Kit.

Правильный выбор между библиотеками чрезвычайно важен для успеха в реализации проекта системы интерактивной трехмерной визуализации, так как у каждой библиотеки есть свои преимущества и недостатки и каждая из них может оказаться лучшей, например, по параметрам времени и стоимости разработки, производительности и качества приложения, в зависимости от конкретной ситуации конкретного приложения. Чтобы лучше понять принцип и механизм работы трехмерной графики на языке программирования Java, рассмотрим в качестве объектов исследования библиотеки OpenGL, а также Java OpenGL, которая представляет собой "привязку" OpenGL к языку Java.

  1. OPEN GL
  1.  
    1. Основная информация

OpenGL - это графический стандарт в области компьютерной графики. На данный момент он является одним из самых популярных графических стандартов во всём мире. Разработчики OpenGL - это крупнейшие фирмы разработчики как оборудования, так и программного обеспечения: Silicon Graphics, Inc., Microsoft, IBM Corporation, Sun Microsystems, Inc. и многие другие[4].

OpenGL переводится как Открытая Графическая Библиотека (Open Graphics Library), это означает, что OpenGL - это открытый и мобильный стандарт. Программы, написанные с помощью OpenGL можно переносить практически на любые платформы, получая при этом одинаковый результат, будь это графическая станция или суперкомпьютер. OpenGL освобождает программиста от написания программ для конкретного оборудования. Если устройство поддерживает какую-то функцию, то эта функция выполняется аппаратно, если нет, то библиотека выполняет её программно[4].

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

Если рассматривать OpenGL с точки зрения программиста - это программный интерфейс для графических устройств, таких как графические ускорители. Он включает в себя более 100 различных команд, с помощью которых программист может определять различные объекты и производить рендеринг. Проще говоря, вы определяете объекты, задаёте их местоположение в трёхмерном пространстве, определяете другие такие параметры, как поворот, масштаб, задаёте свойства объектов: цвет; текстура; материал; положение наблюдателя; а библиотека OpenGL позаботится о том, чтобы отобразить всё это на экране. Поэтому можно сказать, что библиотека OpenGL является только воспроизводящей, и занимается только отображением 3D объектов, она не работает с устройствами ввода информации, клавиатурой, мышью. Также она не поддерживает менеджер окон.

В некоторых библиотеках OpenGL, например, под X Windows, имеется возможность изображать результат не только на локальной машине, но также и по сети. Приложение, которое вырабатывает команды OpenGL называется клиентом, а приложение, которое получает эти команды и отображает результат - сервером. Таким образом можно строить очень мощные воспроизводящие комплексы на основе нескольких рабочих станций или серверов, соединённых сетью.

  1.  
    1. Основные возможности OpenGL.

Библиотека предоставляет следующие основные возможности в распоряжение программиста:

-геометрические и растровые примитивы. На основе геометрических и растровых примитивов строятся все объекты. Из геометрических примитивов библиотека предоставляет: точки, линии, полигоны. Из растровых: битовый массив и образ;

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

-работа с цветом. OpenGL предоставляет возможность работы с цветом в режиме RGBA или индексном режиме, где цвет выбирается из палитры;

-двойная буферизация. OpenGL предоставляет как одинарную, так и двойную буферизацию. Двойная буферизация используется для того, чтобы устранить мерцание при мультипликации, то есть изображение каждого кадра сначала рисуется во втором, невидимом буфере, а потом, когда кадр полностью нарисован, весь буфер отображается на экране;

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

-сглаживание. Сглаживание позволяет скрыть ступенчатость, свойственную растровым дисплеям. Сглаживание изменяет интенсивность и цвет пикселей около линии, при этом линия смотрится на экране без всяких зигзагов;

-освещение. Позволяет задавать источники света, их расположение, интенсивность, и тому подобное.

-атмосферные эффекты. Например, туман, дым. Всё это также позволяет придать объектам или сцене реалистичность, а также "почувствовать" глубину сцены[5].

  1. JAVA OPEN GL

Java OpenGL (JOGL) - библиотека, представляющая собой прямую привязку функций OpenGL к языку программирования Java. Является эталонной реализацией спецификации JSR-231.

JOGL предоставляет программисту доступ ко всем возможностям API OpenGL спецификации 2.0 и ко всем расширениям OpenGL от ведущих производителей. JOGL предоставляет доступ к двум основным дополнениям OpenGL - ко вспомогательной библиотеке OpenGL и к инструментарию разработчика на OpenGL[6].

Также библиотека JOGL содержит несколько дополнительных классов, не описанных в спецификации JSR-231, служащих для удобства обработки данных для команд OpenGL и связанных с особенностями языка Java (такими как файловый ввод-вывод данных OpenGL, подготовка текстур, подготовка массивов данных для OpenGL).

JOGL реализует доступ к низкоуровневому API библиотеки OpenGL, написанной на языке Си, посредством интерфейса JNI. Для корректной работы JOGL предполагается, что программное и аппаратное окружение поддерживает OpenGL.

JOGL отличается от других OpenGL оболочек тем, что, по сути, просто предоставляет программисту возможность работать с API OpenGL посредством обращения к командам OpenGL через вызовы соответствующих методов с привычными Java-разработчику типами аргументов, размещённых в нескольких классах, вместо инкапсулирования функциональных возможностей OpenGL в какую-либо объектно-ориентированную парадигму. Действительно, большинство внутреннего кода JOGL сгенерировано автоматически по заголовочным файлам языка Си специальной утилитой Gluegen, специально написанной, чтобы облегчить создание JOGL.

В JOGL рендеринг на экран реализуется через компоненты GLCanvas и GLJPanel. Первый является подклассом java.awt.Canvas и рассчитан на аппаратную акселерацию, полноэкранный эксклюзивный режим и прочие оптимизации для более быстрого рендеринга. GLJPanel, в свою очередь, наследует javax.swing.JPanel и рассчитан на тесную интеграцию с пользовательским интерфейсом Swing, но в ущерб производительности.

Лицензия библиотеки никаким образом не запрещает ее использование как в бесплатных, так и в коммерческих программах. А кроме того, примеры по реализации алгоритмов на C/C++ для OpenGL практически аналогичны реализации для JOGL, что значительно облегчает ее дальнейшее использование в проектах.

  1. СФЕРА ПРИМЕНЕНИЯ

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

  1.  
    1. Компьютерные игры.

Самой распространенной сферой, на мой взгляд, является игровая индустрия. Широкие возможности современного трехмерного моделирования и графики позволили создавать совершенно новые компьютерные игры в трехмерной пространстве. 3D игры более реалистичные и расширяют границы свободы пользователя (игрока).

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

  1.  
    1. Наука и техника.

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

Часто заказчики требуют продумать необычный дизайн бытовых предметов. В данном случае процесс визуализации помогает продемонстрировать дизайнерское решение.

  1.  
    1. Реклама и маркетинг.

Любимые зверушки, говорящие продукты питания или узоры, в считанные мгновения, появляющиеся на стенках рекламируемого гаджета - все это делается для привлечения внимания потребителей. Все чаще маркетологи используют 3D-визуализацию объектов, создавая анимационные рекламные ролики. Съемки в реальных условиях не дают такой привлекательной картинки, как с применением анимации. Преимущества использования трехмерной визуализации в рекламе:

-позволяет создать вымышленных героев;

-3D-объект выглядит более привлекательно, чем в реальной жизни, лучше передает необходимые качества предлагаемого продукта;

-дает возможность создать готовый макет рекламного баннера и посмотреть, как он будет выглядеть.

-дизайн интерьера, архитектура, строительство. 3D-визуализацией интерьера или здания с использованием компьютерных программ заинтересовались сравнительно недавно, так как раньше для этого изготавливали макеты из картона или специальных материалов. Сегодня 3D-визуализация дома - важный этап перед началом строительных работ. Данная технология позволяет посмотреть на готовый объект и внести изменения при необходимости.

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

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

  1.  
    1. Кинематограф и анимация.

В кинематографе 3D-визуализация прижилась и укоренилась, видимо, навсегда. Современному человеку трудно представить очередной фильм без 3D-графики. Процесс создания визуальной модели объекта в данной сфере состоит из нескольких этапов:

-моделирование - создание 3D-объектов.

-текстурирование - нанесение текстур на трехмерную модель.

-анимация - «оживление» трехмерной модели.

-рендеринг - переформатирование графической модели в запись.

-композитинг - вставка персонажа в кадр или сцену, добавление спецэффектов, устранение дефектов и так далее.

  1.  
    1. Виртуальная реальность

Виртуальная реальность - созданный техническими средствами мир, передаваемый человеку через его ощущения: зрение, слух, обоняние, осязание и другие. Для создания убедительного комплекса ощущений реальности производится компьютерный синтез свойств и реакций виртуальной реальности в реальном времени.

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

На данный момент самыми совершенными системами виртуальной реальности являются проекционные системы, выполненные в компоновке комнаты виртуальной реальности (CAVE). Такая система представляет собой комнату, на все стены которой проецируется 3D-стереоизображение.

Положение пользователя, повороты его головы отслеживаются трекинговыми системами, что позволяет добиться максимального эффекта погружения. Данные системы активно используются в маркетинговых, военных, научных и других целях.

Как вы понимаете область применения ни только широка, но и очень востребована. Существует ряд различных программ для построения трёхмерной модели, так на пример существует отдельная узкоспециальная программа для проектирования корпусной мебели, большое количество специализированных программ для дизайна интерьера, отдельно стоит упомянуть и о программах для аниматоров и промышленного дизайна.

Все программы постоянно обновляются и получают новые функции и ряд новых возможностей, что лишний раз доказывает, что 3D визуализация на сегодняшний день - это самый современный и наиболее эффективный способ визуализации проектов.

ЗАКЛЮЧЕНИЕ

Рассмотрены библиотека Java OpenGL, основные термины Java 3D и OpenGL, отображены основные возможности и области применения трехмерной графики в современном мире. Проведенный анализ позволяет сделать вывод, что развитие этих технологий в информационных системах играет большую роль, охватывая всё большую сферу применения. Без сомнений можно сказать, что применение трехмерной графики в повседневной жизни каждого человека играет огромную роль: от обучения студентами специальных дисциплин до развлечений в виде игр или кино.

Подробное рассмотрение библиотеки Java OpenGL привело к умозаключению, что для приложений с высокой сложностью сцены лучше использовать библиотеку JOGL. Малый уровень абстракции JOGL даёт возможность построения довольно эффективных с точки зрения скорости выполнения программ, но вместе с тем усложняет процесс программирования.

Поскольку существенная доля внутреннего кода сгенерирована автоматически, любые изменения в OpenGL, такие, как развитие библиотеки или появление новых расширений, могут быть оперативно добавлены в JOGL его разработчиками.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
  1. Трехмерное пространство [Электронный ресурс] - https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D1%91%D1%85%D0%BC%D0%B5%D1%80%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%82%D0%B2%D0%BE

  2. Введение в программирование на Java [Электронный ресурс] - https://www.ibm.com/developerworks/ru/java/newto/

  3. JAVA 3D [Электронный ресурс] - http://artspb.com/onlinebook/java3d/index.php?start=0

  4. Что такое OpenGL? [Электронный ресурс] - http://www.opengl.org.ru/

  5. Подобедов Р. Что такое OpenGL? [Электронный ресурс] - http://www.3dnews.ru/169184

  6. Java OpenGL [Электронный ресурс] - https://ru.wikipedia.org/wiki/Java_OpenGL

Просмотров работы: 1085