Главная страница
Навигация по странице:

  • Обзор После скачивания и установки продукта (на момент написания статьи актуальна версия 1.0.249.925) можно увидеть 5 поддиректорий: Bin

  • Trackable

  • .trackable Утилита создания маркеров (SquareMarkerCreator)

  • SquareMarkerCreator

  • «Кодирование изображения» на Swarp SDK Чтобы закончить AR-приложение. Я буду использовать маркер сделанный на SquareMarkerCreator

  • ООО. инструменты. Активное обсуждение технологии дополненной реальности (AR) перезапустилось в 2016 году с приходом больших игроков и запуском проектов виртуальной реальности (VR). Казалось бы, где связь


    Скачать 2.35 Mb.
    НазваниеАктивное обсуждение технологии дополненной реальности (AR) перезапустилось в 2016 году с приходом больших игроков и запуском проектов виртуальной реальности (VR). Казалось бы, где связь
    Дата30.03.2022
    Размер2.35 Mb.
    Формат файлаdocx
    Имя файлаинструменты.docx
    ТипДокументы
    #429362
    страница8 из 8
    1   2   3   4   5   6   7   8

    2.3 Реализация алгоритма создания AR-приложения на основе Swarp SDK


    Приложения дополненной реальности становятся все более популярными. Рано или поздно, но кто-нибудь в России обязательно выпустил бы SDK для создания таких приложений. И вот, это произошло — российская компания Sectar выпустила свой продукт Swarp SDK для создания таких приложений на платформе .NET. Далее я опишу Swarp и покажу, как быстро и просто создать свое AR-приложение.

    Обзор

    После скачивания и установки продукта (на момент написания статьи актуальна версия 1.0.249.925) можно увидеть 5 поддиректорий:
    Bin — тут лежат все сборки Swarp SDK, а также библиотеки движка Managed Ogre (Mogre), который используется для рендеринга.

    Docs — хранит в себе (помимо лицензионного соглашения и ReleaseNotes'ов) очень интересный файлик «Documentation.chm». В нем находится вся документация по Swarp'у, включая описание классов и туториал. Кстати, вся документация на русском языке и выполнена в стиле MSDN, что по идее должно облегчить восприятие разработчику на .NET.

    Examples — это папка с примерами, которые написали разработчики Sectar. В данной версии SDK присутствуют 3 примера, которые демонстрируют работу с системой распознавания, с системой рендеринга, основанной на Mogre — .Net-обертке Ogre3D, а также механизм динамического связывания 3D-модели с маркером. Все примеры представляют собой солюшены для Visual Studio 2010.

    Trackable — содержит несколько маркеров Swarp SDK. Забегая вперед, скажу, что можно самому создавать маркеры, используя утилиту SquareMarkerCreator.

    Utilities — здесь можно найти утилиты SquareMarkerCreator, HID и LicenseViewer. Две последние служат для регистрации продукта и просмотра установленной лицензии, так что особого внимания я им не уделяю, если кому-то интересно, то про них можно прочитать в документации. А вот про SquareMarkerCreator я расскажу отдельно.

    Маркеры

    В Swarp SDK используется своеобразная система маркеров. Маркер представлен в виде XML-файла с расширением SquareMarkerCreator)'>.trackable. Содержимое одного из стандартных маркеров приведено ниже.



    Рис. 6 Вид маркера на бумаге


    Рис. 7 Код изображения в .trackable
    Утилита создания маркеров (SquareMarkerCreator)

    Как видно из названия, эта утилита служит для создания маркеров, используемых в Swarp SDK. После ее запуска появляется визуальный редактор маркеров:



    Рис. 8 Интерфейс SquareMarkerCreator
    Изменять цвет ячейки маркера можно просто кликая мышкой по соответствующей ячейке. Тут же можно изменить такие параметры маркера, как отступы, ширина рамки, размерность матрицы ячеек и прочие.
    Для того, чтобы преобразовать маркер из XML-формата в графический — надо загрузить маркер, нажав на кнопку «Загрузить из XML», а потом сохранить маркер в .EMF-файл, нажав на кнопку «Сохранить изображение».
    «Кодирование изображения» на Swarp SDK

    Чтобы закончить AR-приложение. Я буду использовать маркер сделанный на SquareMarkerCreator, который будет использовать первую попавшуюся камеру и использовать Mogre для рендеринга одной 3D-модели.

    Создадим проект консольного Win32-приложения. И добавим в Reference используемые сборки:

    А в код добавим ссылки на используемые пространства имен:

    using System;

    using System.Collections.Generic;

    using System.Drawing;

    using System.Windows.Forms;

    using Mogre;

    using Swarp.Examples.OgreSimpleSceneExample.Properties;

    using Swarp.SDK.Management;

    using Swarp.SDK.Ogre3DRendering;

    using Swarp.SDK.Rendering;

    using Swarp.SDK.Target.SquareMarkerTracking;

    using Swarp.SDK.Tracking;

    using Swarp.SDK.DirectShowInput;
    Теперь надо добавить поля в статический класс Program, которые будут реализовывать процесс дополненной реальности. Нам понадобится класс AugmentedRealityManager, который будет обеспечивать взаимодействие и управление различными модулями SDK. Еще нам будет нужен интерфейс ITrackable для описания используемого маркера. После добавления этих полей у нас получится такой код:



    Рис. 9 Код AugmentedRealityManager
    Теперь у нас есть точка входа в приложение. Возникает вопрос — что же делать дальше? Дальше я приведу картинку из документации Swarp SDK:



    Рис. 10 Алгоритм создания «Дополненной реальности»
    На картинке красной рамкой выделены действия, которые должен выполнить разработчик.

    На текущем этапе необходимо инициализировать камеру. Для этого служит класс CameraManager:



    Рис. 11 Листинг кодирования камеры
    Затем надо указать, какие маркеры будут использованы в приложении. Это делается таким способом:



    Рис. 11 Указываем маркеры для привязки к «Дополненной реальности»
    Таким образом, мы указываем, что маркер Trackable\5.trackable будет искаться системой трекинга маркеров.

    А теперь нам надо инициализировать систему рендеринга, основанную на Mogre:



    Рис. 12 Листинг программного рендеринга Mogre
    Работа с Managed Ogre инкапсулирована в класс Ogre3DRenderingSystem, что существенно упрощает жизнь разработчику, так как берет на себя большую часть рутинных операций. Вообще, Mogre это отдельная и очень большая тема, так что если кому-нибудь интересно, то в конце статьи ссылка на Mogre wiki.
    Swarp SDK не ограничивает разработчика только Ogre'ом. В принципе, разработчик может интегрировать другое средство рендеринга. Для этого необходимо создать два класса, наследуемых от Renderer и Scene, находящихся в пространстве имен Swarp.SDK.Rendering.
    Вернемся к нашему приложению. При вызове конструктора Ogre3DRenderSystem указываются 4 параметра: handle формы или контрола, с которым будет работать Mogre, пути к файлам конфигурации Ogre, описывающим плагины и настройки системы рендеринга, а также путь к лог-файлу.

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



    Рис. 13 Ссылки на 3Д объекты
    Здесь загружается только одна модель House.zip, которая находится в ZIP-архиве.

    Затем вызывается метод LoadScene. Он нужен для того, чтобы создавать сцену Mogre и добавлять в нее модель.. Описание метода приведено на Рис.14:



    Рис. 14 Вызыв метода LoadScene
    Теперь все готово для инициализации менеджера и запуска:



    Рис. 15 Листинг приложения «Дополненной реальности»
    Важный момент: перед запуском процесса дополненной реальности необходимо включить захват с камеры.

    Метод UpdateScenes ориентирует модель (если она найдена трекером) соответственно положению маркера в пространстве:



    Рис. 16 Листинг приложения «Дополненной реальности» с привязанной камерой



    Рис. 16 Скрин работы приложения с Дополненной реальностью
    ВЫВОДЫ
    Основные результаты работы заключаются в следующем.

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

    2. Разработано представление поля недостающей поверхности, которое предназначено для восстановления обширных и топологически неоднозначных областей недостающих поверхностей С АО-моделей. С использованием данного представления разработан способ для минимизации потерь — оптимального положения вершин — при оптимизации моделей для алгоритма удаления ребер в методе прогрессивных сеток. Реализованы алгоритмы удаления ребер и разделения вершин в методе прогрессивных сеток для использования в САБ-моделях с четырёхугольниками.

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

    Практическая полезность разработанных методов, алгоритмов и программ была продемонстрирована на примерах приложений реализованной в практической части дипломной работы.
    1   2   3   4   5   6   7   8


    написать администратору сайта