Технология создания трехмерных приложений реального времени для ОС Android

Особенности интерактивных приложений для мобильных устройств. Разработка технологии для создания трехмерных приложений для ОС Android. Обоснование выбора инструментария, объектного анализа трехмерной графики как предметной области операционной системы.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 26.04.2019
Размер файла 145,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

3

4

Пермский государственный национальный исследовательский университет

Россия, 614990, Пермь, ул. Букирева, 15

Технология создания трехмерных приложений реального времени для ОС Android

И.С. Полотнянщиков

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

Ключевые слова: Androd; трехмерная графика; Opengl ES; ООП.

Введение© Полотнянщиков И. С., 2012

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

Устройства с ОС Android принадлежат классам устройств, отличающимся по производительности и назначению, - от mp3-плееров и наручных часов до планшетных компьютеров. Эти устройства решают задачи из самых разных предметных областей, для большинства которых желательно использование качественной трехмерной визуализации реального времени.

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

- исследовать особенностей разработки трехмерных приложений в ОС Android,

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

- выполнить проектирование и реализацию иерархии классов для создания трехмерных приложений.

приложение операционная система мобильное устройство

1. Выбор интерфейса

В качестве программно-аппаратного интерфейса была выбрана библиотека OpenGL ES. Именно она рекомендована разработчиками Android при создании высокопроизводительных приложений [3]. Кроме того, OpenGL ES позволяет достичь наиболее качественного результата.

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

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

2. Выбор версии OpenGL ES

В ходе сравнения версий OpenGL ES были проанализированы различия в их синтаксисе [1, 2] и функциональности. Результаты представлены в таблице.

Результат сравнения версий OpenGLES

Критерий

OpenGL ES 1.0

OpenGL ES 2.0

Объем кода

Меньше

Больше

Структура

программы

Проще

Сложнее

Итоговый

результат

Хуже

Лучше

Число поддерживаемых эффектов

Меньше

Больше

Производительность

Ниже

Выше

Настройка рендеринга

При помощи параметров сборки примитивов, растеризации, текстурирования освещения и т.п.

При помощи шейдеров и параметров сборки примитивов

OpenGL ES 1.0 подходит для решения задач, в которых важнее скорость разработки, чем качество изображения. Целям данной работы наилучшим образом соответствует версия 2.0, так как нас интересует, прежде всего, производительность и качество результата. Однако при использовании этой версии с ростом числа геометрических объектов значительно увеличивается размер программы.

Для эффективного управления большим объемом кода была выбрана объектно-ориентированная парадигма.

3. Разработка иерархии классов

В процессе создания иерархии классов необходимо учесть особенности предметной области и инструмента реализации. Выбранная предметная область (трехмерная графика) описывается в таких терминах как камера, геометрический объект, материал, источник света. Разработанная иерархия включает в себя классы, соответствующие указанным выше терминам (отмечены зеленым на рисунке). Однако их поля и методы, а также остальные классы в значительной степени зависят от особенностей OpenGL ES 2.0.

Для выявления особенностей ES 2.0 была написана тестовая программа, состоящая из нескольких геометрических объектов, шейдерных объектов и атрибутов вершин. Особенности организации этой программы позволили выделить характерные повторяющиеся части кода и данные со сходным поведением. При помощи указанных структурных особенностей были созданы классы, отмеченные синим цветом на рисунке.

Разработанная объектная модель получила название "LitEngine". В п. 3.1-3.4 описываются классы LitEngine, сгруппированные по смыслу.

3.1 Создание геометрических объектов

Контейнеры данных - абстрактный класс LitDataContainer и его наследники. Предназначен для хранения атрибутов любой размерности и назначения.

Фабрика данных - абстрактный класс LitDataFactory и его наследники. Предназначена для заполнения контейнеров данных атрибутами, описывающими один геометрический объект.Матрица преобразования - класс ModelViewMatrix. Предназначена для хранения матрицы и работы с ней в терминах преобразования координат.

Универсальный объект - класс Universal3DObject. Предназначен для хранения в одном контейнере всей информации, описывающей один геометрический объект.

3.2 Настройка света

Материал - абстрактный класс LitAppearance и его потомки. Предназначен для хранения настроек для конкретной шейдерной программы.

Менеджер эффекта - LitSpecialEffect и его потомки. Предназначен для передачи информации из объекта "материал" в объект "шейдерная программа".

3.3 Установка камеры

Матрица проекции - класс Projection-Matrix. Предназначена для хранения матрицы и работы с ней в терминах проектирования координат.

Камера - класс LitCamera. Предназначена для работы с матрицей проекции в терминах настройки камеры.

3.4 Рендеринг

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

4. Пример применения LitEngine

В п. 4.1-4.3 поэтапно приведены и прокомментированы примеры использования классов LitEngine для создания демонстрационного приложения, выводящего несколько разноцветных вращающихся торов.

4.1 Однократная инициализация

// Настраиваем среду OpenGL ES 2.0

GLES20.glClearColor(0.07f, 0.07f, 0.1f, 1.0f);

GLES20.glEnable(GLES20.GL_DEPTH_TEST);

// Создаем объект камеры

LitCamera camera = new LitCamera();

// Создаем и инициализируем объект эффекта

simplestEffect = new SimplestEffect(context);

simplestEffect.Init();

// Создаем фабрику данных для тора с определенными настройками качества (~1800 вершин)

TorusDataFactory torusFactory =

new TorusDataFactory(2,30,0.7f,30);

// Создаем и инициализируем материалы для эффекта simplestEffect

Appearance4SimplestEffect[] colors =

new Appearance4SimplestEffect[7];

for (int i = 0; i < colors.length; i++)

colors[i] = new Appearance4SimplestEffect();

// Заполняем поле «цвет» у каждого материала

colors[0].setColor(0, 0, 1, 1);

colors[1].setColor(0, 1, 0, 1);

colors[2].setColor(0, 1, 1, 1);

colors[3].setColor(1, 0, 0, 1);

colors[4].setColor(1, 0, 1, 1);

colors[5].setColor(1, 1, 0, 1);

//Создаем несколько универсальных объектов

Universal3DObject[] torus = new Universal3DObject[6];

//Задаем каждому объекту все его атрибуты, эффект и материал

for (int i = 0; i < torus.length; i++){

torus[i] = new Universal3DObject();

torusFactory.Tune(torus[i]);

torus[i].effect = simplestEffect;

torus[i].material = colors[i]; }

4.2 Настройка камеры

// Настраиваем среду OpenGL ES 2.0

// height и width - параметры функции настройки камеры

GLES20.glViewport(0, 0, width, height);

float ratio = (float) width / height;

// Настраиваем в камере перспективную проекцию

camera.Frustum(-ratio * 5, ratio * 5, -5, 5, 3, 15);

// Настраиваем в камере точку взгляда и положение в пространстве

camera.LookAt(0, 0, -7, 0f, 0f, 0f, 0f, 1.0f, 0.0f);

4.3 Рендеринг и анимация

// Обнуляем буферы данных OpenGL

GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT|GLES20.GL_DEPTH_BUFFER_BIT);

// Вычислим угол поворота на основе системного времени

long time = SystemClock.uptimeMillis();

float realangle = (float) (time * 0.1);

// Вычислим параметры смещения и поворота и передадим их объектам

float step = (float) (Math.PI*2.0/triangles.length);

for (int i = 0; i < triangles.length; i++){

float a = step*i+realangle/100f;

float x = (float) (Math.sin(a)*4);

float y = (float) (Math.cos(a)*4);

triangles[i].Move(x, y, 0f);

a = i*60+realangle/2f;

triangles[i].Rotate(a, 0.0f, 1.0f, 0.0f); }

// Вызовем у каждого тора рендеринг

for (int i = 0; i < triangles.length; i++)

triangles[i].Render(camera);

4.4 Пример работающего устройства

На рисунке приведен снимок мобильного телефона, выполняющего код из п. 4.1-4.3.

Пример использования LitEngine

Заключение

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

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

Таким образом, разработанная иерархия расширяема и может быть повторно использована при решении задач из различных предметных областей (игры, имитационное моделирование, реклама, редакторы, ГИС, дополненная реальность и т.п.). В дальнейшем необходимо расширить модель дополнительными специальными эффектами и создать приложение из класса справочных систем с трехмерной визуализацией.

Список литературы

1. Leech J. OpenGL ES Common Profile Difference Annotated Specification 2.0.25. [Электронный ресурс]. Систем. требования: Foxit Reader. URL:

http://www.khronos.org/registry/gles/specs/2.0/es_cm_spec_2.0.25.pdf (дата обращения: 25.01.2012).

2. Munshi A. OpenGL ES 2.0 Programming Guide. Boston: Addison-Wesley, 2009. 457 с.

3. Android DevGuide. Graphics [Электронный ресурс]. URL:

http://developer.android.com/guide/topics/graphics/index.html] (дата обращения: 25.01.2012).

Размещено на Allbest.ru

...

Подобные документы

  • Архитектура операционной системы Android, набор библиотек для обеспечения базового функционала приложений и виртуальная машина Dalvik. Объектно-ориентированный язык программирования Java как инструмент разработки мобильных приложений для ОС Android.

    дипломная работа [1,6 M], добавлен 08.07.2015

  • Современное состояние рынка мобильных приложений. Основные подходы к разработке мобильных приложений. Обоснование выбора целевой группы потребителей приложения. Этапы проектирования и разработки мобильного приложения для операционной системы Android.

    курсовая работа [987,1 K], добавлен 27.06.2019

  • Архитектура операционной системы Android. Инструменты Android-разработчика. Установка Java Development Kit, Eclipse IDE, Android SDK. Настройка Android Development Tools. Разработка программы для работы с документами и для осуществления оперативной связи.

    курсовая работа [2,0 M], добавлен 19.10.2014

  • Первое устройство, работающее под управлением Android. Приложения под операционную систему Android. Формат установочных пакетов. Разработка приложений на языке Java. Шаблоны основных пакетов и компонентов Android. Сборка приложений, основанная на Gradle.

    курсовая работа [492,0 K], добавлен 08.02.2016

  • Общие характеристики операционной системы Android. Разработка приложения на основе создания менеджера файлов. Получение с помощью приложения доступа к файлам, хранящимся в "облачном хранилище" в сети Интернет. Расчет стоимости программного обеспечения.

    дипломная работа [2,7 M], добавлен 03.04.2015

  • Основы создания мидлетов (midlet) - MIDP приложений для мобильных устройств на языке Java. Особенности устройств, для которых мидлеты предназначены. Библиотеки javax.microedition. Практические примеры создания MIDP приложений для телефона и их запуск.

    методичка [25,9 K], добавлен 30.06.2009

  • Преимущества операционной системы Android. Проектирование интерфейса приложений. Визуальные редакторы и средства кроссплатформенной разработки. Оптимизация игрового процесса, выбор фреймворка и библиотек. Классификация и характеристика игр по жанрам.

    дипломная работа [2,6 M], добавлен 10.07.2017

  • Разработка клиент-серверного игрового приложения на примере игры в шашки для мобильных устройств на базе операционной системы Android. Обзор мобильных платформ. Экраны приложения и их взаимодействие. Графический интерфейс, руководство пользователя.

    курсовая работа [2,6 M], добавлен 15.06.2013

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

    реферат [600,4 K], добавлен 08.01.2015

  • Назначение компьютерной графики. Особенности трехмерной анимации. Технология создания реалистичных трехмерных изображений. Компьютерная графика для рисования на SGI: StudioPaint 3D. Пакет PowerAnimator как одна из программ трехмерной анимации на SGI.

    реферат [25,7 K], добавлен 31.03.2014

  • Разработка открытой мобильной платформы Android. Первое устройство, работающее под управлением Android. Магазин приложений "Google Play". Полноценные программы навигации, редакторы офисных документов и синхронизационные утилиты. Рост вирусной активности.

    презентация [58,8 K], добавлен 29.10.2014

  • Анализ популярных игровых приложений. Жанр – аркады с геймплеем Runner. Получение продукта, ориентированного на людей, использующих мобильные устройства на базе Android, и предназначенный для развлечения пользователей. Визуальная составляющая приложения.

    дипломная работа [742,7 K], добавлен 10.07.2017

  • Характеристика работы операционной системы Android, используемой для мобильных телефонов. Создание Android проекта в среда разработки Eclipse. Общая структура и функции файла манифест. Компоненты Android приложения. Способы осуществления разметки.

    курсовая работа [1,0 M], добавлен 15.11.2012

  • Общий обзор проблемы безопасности ОС Android. Развитие индустрии по борьбе с вредоносным и мошенническим ПО. Разработка Системы ранжирования уровней опасности Android приложений. Выбор производителя и типа СУБД. Тестирование программного обеспечения.

    дипломная работа [2,7 M], добавлен 13.02.2016

  • Обзор особенностей операционной платформы для мобильных телефонов, смартфонов и коммуникаторов. История обновлений и модифицированные версии. Прошивка устройств. Приборы на платформе Android. Изучение основных достоинств операционной системы Android 4.2.

    реферат [885,8 K], добавлен 19.10.2015

  • Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.

    курсовая работа [167,8 K], добавлен 18.01.2017

  • Определение понятия трехмерной компьютерной графики. Особенности создания 3D-объектов при помощи булевых операций, редактируемых поверхностей, на основе примитивов. Моделирование трехмерных объектов при помощи программного пакета Autodesk 3ds Max.

    дипломная работа [4,2 M], добавлен 13.04.2014

  • Структура Android-приложений. Особенности игрового движка. Алгоритмизация и программирование. Список игровых состояний. Настройка, отладка и тестирование программы. Разработка руководства пользователя. Тестирование инсталляции и отображения элементов.

    дипломная работа [4,5 M], добавлен 19.01.2017

  • Обзор рынка мобильных приложений, социальных сетей, аналогов. Обзор инструментов разработки: Android Studio, Microsoft visual С# 2012, PostgreeSQL, API Открытых данных Вологодской области, API Социальных сетей. Программный код, разработка интерфейса.

    дипломная работа [2,6 M], добавлен 10.07.2017

  • Разработка критериев оценки экрана веб-приложений. Основные подходы к защите веб-приложений. Анализ российских нормативных документов. Зарубежная практика выбора экрана веб-приложений. Разработка и обоснование общих требований к механизмам защиты.

    дипломная работа [68,7 K], добавлен 04.08.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.