ООО. инструменты. Активное обсуждение технологии дополненной реальности (AR) перезапустилось в 2016 году с приходом больших игроков и запуском проектов виртуальной реальности (VR). Казалось бы, где связь
Скачать 2.35 Mb.
|
Абстракция и виртуализация Компьютерные системы существуют и продолжают развиваться благодаря тому, что разработаны по законам иерархии и имеют хорошо определенные интерфейсы, отделяющие друг от друга уровни абстракции. Использование таких интерфейсов облегчает независимую разработку аппаратных и программных подсистем силами разных групп специалистов. Абстракции скрывают детали реализации нижнего уровня, уменьшая сложность процесса проектирования. Рис. 2. Абстракция и виртуализация в применении к дисковой памяти: (а) абстракция поддерживает упрощенный интерфейс к базовым ресурсам; (б) на данном уровне абстракции виртуализация обеспечивает альтернативный интерфейс к ресурсам и организацию их разделения На рис. 2 (а) приведен пример абстракции в применении к дисковой памяти. Операционная система абстрагируется от тонкостей адресации на жестком диске, от его секторов и дорожек, чтобы для прикладной программы диск выглядел как набор файлов переменного размера. Опираясь на эту абстракцию, «прикладные» программисты могут создавать файлы, записывать и читать данные, не зная устройства и физической организации жесткого диска. Концепция архитектуры системы команд компьютера (instruction set architecture, ISA) наглядно иллюстрирует преимущества хорошо определенных интерфейсов. Они позволяют разрабатывать взаимодействующие компьютерные подсистемы не только в разных организациях, но и в разные периоды, иногда разделенные годами. Например, Intel и AMD создают микропроцессоры с системой команд IA-32 (x86), в то время как разработчики Microsoft пишут программное обеспечение, которое компилируется в эту систему команд. Поскольку обе стороны соблюдают спецификацию ISA, можно ожидать, что программное обеспечение будет правильно выполняться любым ПК на базе микропроцессора с архитектурой IA-32. К сожалению, хорошо определенные интерфейсы имеют и недостатки. Подсистемы и компоненты, разработанные по спецификациям разных интерфейсов, не способны взаимодействовать друг с другом. Например, приложения, распространяемые в двоичных кодах, привязаны к определенной ISA и зависят от конкретного интерфейса к операционной системе. Несовместимость интерфейсов может стать сдерживающим фактором, особенно в мире компьютерных сетей, в котором свободное перемещение программ столь же необходимо, как и перемещение данных. Виртуализация позволяет обойти эту несовместимость. Виртуализация системы или компонента (например, процессора, памяти или устройства ввода/вывода) на конкретном уровне абстракции отображает его интерфейс и видимые ресурсы на интерфейс и ресурсы реальной системы. Следовательно, реальная система выступает в роли другой, виртуальной системы или даже нескольких виртуальных систем. В отличие от абстракции, виртуализация не всегда нацелена на упрощение или сокрытие деталей. В примере на рис. 1 (б) виртуализация позволяет преобразовать один большой диск в два меньших виртуальных диска, каждый из которых имеет собственные секторы и дорожки. При отображении виртуальных дисков на реальный программные средства виртуализации используют абстракцию файла как промежуточный шаг. Операция записи на виртуальный диск преобразуется в операцию записи в файл (и, следовательно, в операцию записи на реальный диск). Отметим, что в данном случае никакого абстрагирования не происходит — уровень детализации интерфейса виртуального диска (адресация секторов и дорожек) ничем не отличается от уровня детализации реального диска. Виртуальные машины Идея виртуализации применима не только к отдельным подсистемам вроде дисков, но и к машине в целом. Для построения виртуальной машины (ВМ) к реальному компьютеру добавляется слой программного обеспечения, поддерживающий желаемую архитектуру. Таким путем можно обойти проблему совместимости реальных машин и ресурсные ограничения оборудования. Встроенные системные интерфейсы Обсуждение виртуальных машин неотделимо от обсуждения компьютерной архитектуры. Поскольку ВМ опираются на встроенные системные интерфейсы, главное в их проектировании — точность реализации этих интерфейсов. В применении к компьютерным системам архитектура означает формальную спецификацию системных интерфейсов, в том числе логические модели ресурсов, управляемых через эти интерфейсы. Реализация описывает фактическое воплощение архитектуры. Как в оборудовании, так и в программном обеспечении уровни абстракции соответствуют уровням реализации, каждый из которых связан со своим собственным интерфейсом или архитектурой. Рис. 3. Архитектура компьютерной системы. Вертикальные связи между ключевыми уровнями реализации обеспечиваются архитектурой системы команд (ISA), двоичным интерфейсом приложений (ABI) и интерфейсом прикладного программирования (API) На рис 3 показаны некоторые важные интерфейсы и уровни реализации в типичной компьютерной системе. Три таких интерфейса (расположенных на границе между оборудованием и программным обеспечением) являются особенно важными для построения ВМ: это архитектура системы команд (ISA), двоичный интерфейс приложений (application binary interface, ABI) и интерфейс прикладного программирования (application programming interface, API). Архитектура системы команд. ISA определяет границу между оборудованием и программным обеспечением и состоит из двух интерфейсов, обозначенных на рис. 3 цифрами 4 и 5. Интерфейс 5 представляет собой пользовательскую часть ISA и содержит функции, доступные прикладной программе. Интерфейс 3 (системная часть ISA) кроме пользовательских команд содержит функции, доступные только компонентам операционной системы, которые отвечают за управление оборудованием. Двоичный интерфейс приложений. ABI предоставляет программе аппаратные ресурсы и услуги через пользовательскую часть ISA (интерфейс 4) и интерфейс вызова системных процедур (интерфейс 2). Привилегированные машинные команды в ABI не входят. Все прикладные программы взаимодействуют с оборудованием опосредованно, обращаясь к услугам операционной системы через интерфейс вызова системных процедур. Посредством таких процедур ОС выполняет действия от имени пользовательской программы после подтверждения их аутентичности и безопасности. Интерфейс прикладного программирования. API предоставляет программе аппаратные ресурсы и услуги через пользовательскую часть ISA (интерфейс 4), дополненную обращениями к библиотекам на языке высокого уровня (интерфейс 1). Все вызовы системных процедур обычно выполняются через библиотеки. Использование API позволяет путем перекомпиляции легко переносить прикладные программы на другие системы, поддерживающие тот же интерфейс прикладного программирования. Процессные и системные виртуальные машины Чтобы понять сущность виртуальной машины, необходимо рассмотреть значение слова «машина» с точки зрения системы и процесса. С точки зрения процесса, обеспечивающего выполнение пользовательской программы, машина состоит из выделенного процессу логического адресного пространства, команд пользовательского уровня и регистров, которые позволяют выполнять код этого процесса. Устройства ввода/вывода доступны лишь через операционную систему, и для процесса есть только один способ взаимодействия с системой ввода/вывода — вызовы системных процедур. Таким образом, применительно к процессу машину определяет интерфейс ABI. А интерфейс API определяет характеристики машины с точки зрения прикладной программы, написанной на высокоуровневом языке. С точки зрения операционной системы она целиком выполняется на базовой машине. Опе?рационная система — полнофункциональная среда исполнения, которая поддерживает множество процессов, совместно использующих файловую систему и другие средства ввода/вывода. Но процессы «приходят и уходят», а системная среда остается. Система выделяет процессам реальную память и устройства ввода/вывода, позволяет им взаимодействовать с этими ресурсами. Следовательно, применительно к операционной системе машину определяют лишь характеристики базовых аппаратных средств, а интерфейс между системой и машиной обеспечивает ISA. Поскольку процессы и система «видят» машину по-разному, виртуальные машины бывают процессными и системными. Процессная ВМ — это виртуальная платформа для выполнения отдельного процесса; она предназначена исключительно для его поддержки, создается при активизации процесса и прекращает свое существование с его окончанием. Системная ВМ предоставляет полнофункциональную, постоянно действующую системную среду для поддержки операционной системы вместе с множеством ее пользовательских процессов; она обеспечивает «гостевой» операционной системе доступ к виртуальным аппаратным средствам, в том числе к процессору и памяти, устройствам ввода/вывода, а иногда — и к графическому интерфейсу. Процесс или система, выполняемая на ВМ, называется гостем, а базовая платформа, поддерживающая ВМ, — хостом. Программное обеспечение виртуализации, реализующее процессную ВМ, часто для краткости именуют рабочей средой. Программное обеспечение виртуализации системной ВМ обычно называют монитором виртуальных машин (virtual machine monitor, VMM). Рис. 4. Процессные и системные виртуальные машины: (а) программное обеспечение виртуализации процессной ВМ преобразует системные вызовы и машинные команды пользовательского уровня в соответствующие вызовы и команды другой программно-аппаратной платформы; (б) в системной ВМ программное обеспечение виртуализации преобразует машинные команды одной аппаратной платформы в команды для другой На рис. 4 представлены процессная и системная ВМ. Волнистыми линиями обозначены совместимые интерфейсы. В процессной виртуальной машине программное обеспечение виртуализации находится на уровне интерфейсов ABI или API, над границей между операционной системой и оборудованием. Среда исполнения (runtime) эмулирует как команды пользовательского уровня, так и вызовы системных процедур и обращения к библиотекам. В системной виртуальной машине программное обеспечение виртуализации находится между аппаратными средствами хост-машины и гостевым программным обеспечением. Монитор VMM может эмулировать аппаратную архитектуру ISA, отличную от ISA хоста, чтобы гостевое программное обеспечение могло выполнять другую систему команд. Однако во многих реализациях системных ВМ монитор VMM не занимается эмуляцией команд; его основная роль состоит скорее в виртуализации аппаратных средств. Процессные виртуальные машины Процессные ВМ создают виртуальные среды ABI или API для пользовательских приложений. Различные их разновидности позволяют в многозадачном режиме осуществлять репликацию операционной среды, эмулировать систему команд, оптимизировать код или выполнять программы на языках высокого уровня. Многозадачные системы Самая распространенная процессная ВМ стала настолько привычной, что мало кто воспринимает ее как виртуальную машину. Большинство операционных систем могут работать в многозадачном режиме, поддерживая несколько пользовательских процессов одновременно, благодаря чему у каждого из них «создается иллюзия единоличного владения» машиной. Каждый процесс имеет собственные адресное пространство, регистры и файловую структуру. Операционная система организует работу базового оборудования в режиме разделения времени. Фактически операционная система предоставляет процессную ВМ каждому из одновременно выполняемых приложений. Интерпретаторы и динамические трансляторы двоичного кода Более сложной проблемой для процессных ВМ является поддержка программ в двоичном коде, которые скомпилированы для системы команд, отличающейся от системы команд хоста. Свежий пример процессной ВМ — программный пакет Intel IA32-EL [1], позволяющий на платформе Itanium выполнять приложения, рассчитанные на IA-32. Проще всего эмулировать команды путем интерпретации. Программа-интерпретатор одну за другой выбирает из памяти, декодирует и выполняет команды гостевой программы. Этот процесс может быть довольно медленным и требовать десятков команд хост-машины для интерпретации каждой исходной команды. Более высокая производительность достигается путем динамической трансляции двоичного кода, в ходе которой команды гостевой программы поблочно преобразуются в команды хоста и сохраняются для повторного использования в кэш-памяти команд. Таким образом, в случае циклического выполнения транслированных команд удается амортизировать относительно высокие затраты на трансляцию. Оптимизаторы двоичного кода Для повышения производительности динамические трансляторы иногда оптимизируют двоичный код. Эта возможность приводит к идее создания виртуальной машины, в которой гость и хост используют одну и ту же систему команд. Единственным назначением такой ВМ становится оптимизация двоичного кода. Оптимизаторы используют информацию из профиля, собранную при интерпретации или трансляции, чтобы оптимизировать двоичный код «на лету». Примером такого оптимизатора является система Dynamo — один из результатов реализации научно-исследовательского проекта компании Hewlett-Packard [2]. Виртуальные машины для языков высокого уровня Основное назначение процессных ВМ — обеспечить переносимость программного обеспечения. При этом эмуляция одной распространенной системы команд с помощью другой требует значительных усилий программистов, но обеспечивает кроссплатформенную совместимость лишь в некоторых случаях. Полной переносимости проще достичь путем встраивания процессной ВМ в среду разработки приложений на языках высокого уровня. ВМ языка высокого уровня не связана напрямую ни с одной реальной платформой; скорее, она предназначена для упрощения переноса программ и реализации функций одного или нескольких языков высокого уровня. Рис. 5. Среды языка высокого уровня: (а) в традиционной среде распространяется зависимый от платформы объектный код; (б) в среде ВМ языка высокого уровня зависимая от платформы виртуальная машина выполняет переносимый промежуточный код Рис. 5 показывает различия между обычной средой компиляции, зависящей от платформы, и средой ВМ языка высокого уровня. В обычной среде (рис. 4(а)) препроцессор транслятора генерирует промежуточный код, подобный машинному, но более абстрактный. Затем генератор кода на его основе создает двоичный файл с машинным кодом для конкретной операционной системы и архитектуры ISA. Этот файл может выполняться на платформах, поддерживающих данную комбинацию ISA/операционная система. В ВМ языка высокого уровня (рис. 5(б)) транслятор генерирует абстрактный машинный код для виртуальной ISA, которая определяет интерфейс ВМ. Этот виртуальный код вместе с сопутствующими метаданными (информацией о структурах данных) распространяется для выполнения на различных платформах. На каждой из них установлена ВМ, способная загрузить и выполнить команды виртуальной ISA, а также имеется набор библиотечных подпрограмм, предписанный стандартизированным API. Простейший вариант такой ВМ представляет собой интерпретатор. Более сложные высокопроизводительные ВМ транслируют абстрактный код в машинный для непосредственного выполнения на базовой платформе. Преимуществом ВМ языка высокого уровня является простота переноса прикладных программ при условии, что ВМ и библиотеки уже реализованы на базовой платформе. Хотя реализация ВМ требует некоторых усилий, это намного проще, чем разработка полнофункционального транслятора и перенос каждого приложения путем перекомпиляции. Известными примерами ВМ языка высокого уровня являются архитектура виртуальной машины Java компании Sun Microsystems [3] и среда Microsoft Common Language Infrastructure, на которой основана платформа .NET Framework [4]. В обеих системах применяются стековые архитектуры ISA, что позволяет устранить необходимость в регистрах, использовать абстрактную спецификацию данных и модель памяти, поддерживающие безопасное объектно-ориентированное программирование. Системные виртуальные машины Системная ВМ обеспечивает полнофункциональную среду, в которой могут сосуществовать операционная система и несколько процессов, относящихся к разным пользователям. С помощью системных ВМ одна аппаратная платформа способна одновременно поддерживать несколько изолированных гостевых операционных систем. Системные ВМ появились в середине 60-х годов [5]. В то время компьютерные системы на базе мэйнфреймов были очень большими и дорогими, обычно обслуживали многочисленные группы пользователей. С появлением технологий ВМ эти группы получили возможность на общем оборудовании эксплуатировать различные операционные системы. По мере снижения цен на компьютерное оборудование и развития настольных ПК интерес к первым системным ВМ постепенно снизился. Однако сегодня системные ВМ снова набирают популярность, поскольку на смену мэйнфреймам пришли серверы и серверные комплексы, обслуживающие большие группы потребителей. Одним из важнейших применений технологии системных ВМ является изоляция систем, одновременно работающих на общей аппаратной платформе. В таких случаях отказ в работе или нарушение безопасности одной из гостевых систем не влияет на программное обеспечение, выполняющееся на других гостевых системах. В системной ВМ монитор VMM обеспечивает репликацию платформы. Основной проблемой является распределение аппаратных ресурсов между несколькими гостевыми операционными системами (примером служит виртуализация диска, показанная на рис. 1). VMM управляет всеми аппаратными ресурсами. Гостевая операционная система и ее прикладные процессы работают под скрытым контролем VMM. Когда гостевая ОС пытается выполнить привилегированную команду или операцию, непосредственно затрагивающую общие аппаратные ресурсы, VMM ее перехватывает, проверяет правильность и исполняет от имени гостя. Гостевое ПО «не знает» об этой негласной работе. Классические системные ВМ Большинство системных ВМ обеспечивают примерно одинаковые функциональные возможности, но различаются деталями реализации. При классическом подходе [6] монитор VMM устанавливается на «голом железе», а ВМ располагается поверх него. VMM выполняется в привилегированном режиме, в то время как гостевые операционные системы лишены почти всех привилегий. Это необходимо, чтобы VMM мог перехватывать и эмулировать те их действия, которые в обычных условиях связаны с управлением жизненно важными аппаратными ресурсами. Вложенные ВМ В альтернативной реализации системной ВМ программное обеспечение виртуализации располагается поверх существующей хост-системы. Такая ВМ называется вложенной. Преимущество вложенных ВМ состоит в том, что пользователь устанавливает их точно так же, как любую прикладную программу. Чтобы получить доступ к драйверам устройств и другим низкоуровневым услугам, программное обеспечение виртуализации обращается к хост-системе, а не к VMM. Примером вложенной ВМ может служить сервер VMware GSX Server [7], который выполняется на аппаратной платформе IA-32. Интегральные ВМ В обычных системных ВМ хост-система, все гостевые операционные системы и прикладные программы используют архитектуру ISA базового оборудования. Однако в некоторых ситуациях гость и хост не имеют общей ISA. Например, две самые популярные настольные системы, Windows PC и Apple PowerPC, используют различные ISA и разные операционные системы. Интегральные ВМ справляются с такой ситуацией, виртуализируя все программное обеспечение, в том числе операционную систему и приложения. Из-за различий в системах команд ВМ должна эмулировать и код приложений, и код операционной системы. Примером ВМ такого типа служит эмулятор Virtual PC [8], в котором система Windows работает на платформе Macintosh. Программное обеспечение ВМ выполняется на хосте как обычная прикладная программа и не использует системных операций ISA. Многопроцессорная виртуализация Особый интерес представляет виртуализация большого многопроцессорного комплекса с разделяемой памятью. Важно разделить крупную систему на несколько меньших многопроцессорных систем, распределив аппаратные ресурсы базовой системы. С помощью физического разбиения на разделы [9] аппаратные ресурсы, используемые одной виртуальной системой, отделяются от ресурсов других виртуальных систем. Физическое разделение обеспечивает высокую степень изоляции, поэтому ни проблемы ПО, ни ошибки аппаратных средств в одном разделе не затрагивают программы в других разделах. При логическом разбиении на разделы [10] разделы сервера совместно используют базовые аппаратные ресурсы в режиме временного мультиплексирования, что позволяет повысить коэффициент загрузки оборудования. Однако при этом теряются некоторые из преимуществ изоляции аппаратных средств. При реализации обоих методов обычно используются дополнительное программное обеспечение или микропрограммы для базового оборудования, специально доработанного для обеспечения поддержки логических разделов. Встроенные ВМ Функциональность и мобильность — вот цели большинства системных ВМ, реализованных на уже имеющихся аппаратных средствах со стандартной архитектурой ISA. В отличие от них, встроенные ВМ реализуют новые частные архитектуры, нацеленные на повышение производительности и эффективности работы. ISA хост-машины может быть полностью новой или расширять возможности существующей. Для встроенной ВМ нет готовых приложений, а монитор VMM выглядит как составная часть оборудования, единственным назначением которого является эмуляция гостевой ISA. Для поддержания этой иллюзии VMM располагается в области памяти, скрытой от обычного программного обеспечения. В его состав входит транслятор двоичного кода, который преобразует гостевые команды в оптимизированные последовательности базовых команд и помещает их в скрытую кэш-память. Наиболее известный пример встроенной ВМ — процессор Transmeta Crusoe [11]. Его базовые аппаратные средства используют архитектуру команд со сверхдлинным командным словом (very long instruction word, VLIW), а гостевая ISA — это Intel IA-32. Благодаря простоте аппаратной части, предназначенной для выполнения команд VLIW, разработчикам Transmeta удалось существенно снизить энергопотребление процессора. В системе IBM AS/400 (сегодня известна как iSeries) также используется технология встроенных ВМ [12]. В отличие от других встроенных ВМ, основное назначение AS/400 — поддержка объектно-ориентированной системы команд, позволяющей по-новому взглянуть на интерфейс между оборудованием и программным обеспечением. Сегодняшние реализации AS/400 основаны на расширенной архитектуре PowerPC, тогда как ранние версии использовали существенно отличавшуюся от нее частную архитектуру ISA. Систематика виртуальных машин Полезно охватить ВМ различных конструкций и назначения единым взглядом. На рис. 6 представлена простейшая классификация, в соответствии с которой ВМ делятся на процессные и системные. Дальнейшая систематизация в рамках этих категорий происходит в зависимости от того, совпадают ли системы команд ВМ и ее базовой платформы. Дело в том, что в виртуальных машинах с эмуляцией ISA эта функция является доминирующей. Рис. 6. Классификация виртуальных машин. В категориях процессных и системных ВМ основным дифференцирующим признаком является эмуляция ISA Среди процессных ВМ без эмуляции ISA можно выделить многозадачные системы, которые поддерживаются большинством современных компьютеров. Сюда же относятся динамические оптимизаторы двоичного кода, использующие многие из методов эмуляции. В категорию процессных ВМ с разными гостевой и базовой ISA входят динамические трансляторы, у которых интерфейс с оборудованием обычно определяется на уровне ABI, а также ВМ языка высокого уровня на разделы с интерфейсом на уровне API. Категория системных ВМ без эмуляции ISA объединяет классические и вложенные ВМ, служащие для репликации изолированной системной среды. Основное различие между ними состоит в реализации монитора VMM, а не в функциональных возможностях. В интегральных ВМ, в которых гостевая и базовая ISA отличаются друг от друга, производительность часто вторична по отношению к точному воспроизведению функциональных возможностей. Там, где важнее производительность или удельное энергопотребление (например, для встроенных ВМ), интерфейс реализации ВМ может быть ближе к физическим аппаратным средствам процессора. Сложные структуры современного мира компьютерных систем состоят из множества тесно взаимодействующих программных и аппаратных компонентов. В этом мире виртуализация выступает в роли одной из технологий организации их взаимосвязи. Добавляя уровень виртуализации между оборудованием и программным обеспечением, мы получаем машину, на которой несовместимые подсистемы могут работать вместе. Кроме того, виртуальная репликация операционной среды позволяет более гибко и эффективно задействовать аппаратные ресурсы. Сегодня ВМ широко используются для организации взаимодействия между оборудованием, операционными системами и прикладными программами. Учитывая стойкую приверженность компьютерной отрасли стандартам и консолидации, можно ожидать, что все новые архитектуры ISA, операционные системы и языки программирования будут разрабатываться на основе технологий ВМ. В будущем мы должны рассматривать построение виртуальных машин как комплексную дисциплину, стоящую в одном ряду с разработкой оборудования, операционных систем и прикладных программ. Unity — одна из лучших платформ в мире для разработки в реальном времени двух- и трёхмерных приложений и игр, работающая под операционными системами Windows, OS X. Благодоря надёжной экосистеме - Unity позволяет создавать приложения, работающие под более чем 20 различными операционными системами, включающими персональные компьютеры, игровые консоли, мобильные устройства, интернет-приложения и другие. Редактор имеет простой интерфейс, который легко настраивать, состоящий из различных окон где можно производить отладку игры прямо в редакторе. Основными преимуществами платформы являются наличие визуальной среды разработки, межплатформенной поддержки и модульной системы компонентов. На Unity написаны тысячи игр, приложений и симуляций, которые охватывают множество платформ и жанров. При этом Unity используется как крупными разработчиками, так и независимыми студиями. AR Foundation включает базовые функции ARKit, ARCore, Magic Leap и HoloLens, а также уникальные функции Unity, позволяя создавать надежные приложения, готовые к использованию сотрудниками компании или к выпуску в магазинах приложений. Это решение позволяет использовать все функции в рамках единого рабочего процесса. AR Foundation позволяет использовать функции, ранее недоступные при переносе приложения с одной AR-платформы на другую. Если функция, доступная на одной платформе, пока еще недоступна на другой, мы добавляем возможность использовать ее в будущем. Когда функция будет реализована на новой платформе, вы сможете с легкостью добавить ее, просто обновив пакеты, не начиная разработку приложения с нуля. Unity MARS помогает решить самые сложные проблемы в разработке AR-приложений. Продукт предоставляет такие возможности: Устранение трудностей, связанных с созданием динамических физических окружений. Ускоренная итерация и создание динамического контента для AR-приложений. Разработка межплатформенных решений с поддержкой iOS, Android, Hololens и Magic Leap. Ускоренные рабочие процессы создания контента с помощью удобных функций: визуальное создание приложений AR; тестирование в редакторе Unity; работа с неизвестными элементами с помощью неточного проектирования и заместителей объектов. Приложение AR Companion дополняет рабочие процессы MARS и Unity AR путем: сбора данных реального мира; сканирования объектов (только на iOS); использования функций разработки в момент обнаружения. Основные преимущества MARS Представление симуляции WYSIWYG Визуализирует то, как аудитория будет видеть наш контент. Вместо написания кода просто перетащите контент в средство просмотра, после чего Unity MARS создаст соответствующие заместители объектов и условия. Создавая приложения с помощью заместителей реальных объектов. Используя эту платформу, мы можем настраивать условия и действия с заместителями объектов, чтобы определить, как приложение будет реагировать на них. Неточное проектирование Используя визуальные подсказки для «неточного» проектирования, мы определяем минимальные и максимальные объекты реального мира без привязки к точным размерам. Настраиваемые строительные блоки Начния работу с шаблонами, охватывающими популярные сценарии использования AR (такие как приложение для обучения, которое работает со всеми шаблонами окружений помещений и открытых пространств MARS). Создавая приложения дополненной реальности, разработчики могут значительно упростить написание приложения с помощью специальных AR-библиотек с открытым API. По функционалу AR-библиотеки находятся примерно на одном уровне. Вместе с тем, каждая из них обладает своими характерными чертами. В ходе работы над проектами с дополненной реальностью, мы получили возможность опробовать на практике несколько AR-фреймворков, популярных среди мобильных разработчиков. Плюсы и минусы библиотек дополненной реальности в нашем обзоре. Библиотеки дополненной реальности — AR Фреймворки Vuforia Являясь полноценной SDK для разработчиков, Vuforia представляет собой набор инструментов для создания приложений дополненной реальности. Vuforia поддерживает: распознавание нескольких целей одновременно (включая объекты, изображения и текст); отслеживание целей; распознавание 2D и 3D форматов; сканирование реального объекта для последующего распознавания; виртуальные кнопки; отображение дополнительных элементов через OpenGL; Smart TerrainTM – возможность реконструировать окружающий ландшафт, создавая его 3D-карту; Extended Tracking – возможность продлить отображение цели на мобильном устройстве, даже когда она находится вне поля зрения. В частности, при распознавании изображений Vuforia позволяет мобильным приложениям использовать данные, находящиеся либо на устройстве, либо в облаке. К основным достоинствам библиотеки можно отнести поддержку устройств виртуальной реальности, а также тестовое приложение с сопровождающими комментариями, в котором показаны возможности библиотеки. Однако отсутствие полноценного руководства по использованию библиотеки затрудняет первый опыт работы с Vuforia. Отдельные инструкции и краткие советы представлены в большом количестве, но не упорядочены и поэтому не заменяют разработчику необходимую документацию. В бесплатном варианте библиотеки есть ограничения по использованию cloud recognition, а также один раз в день использования появляется водный знак компании. ARToolKit ARToolKit представляет собой набор программных библиотек, которые могут использоваться в AR приложениях. Главное достоинство библиотеки – открытый исходный код. То есть библиотека распространяется абсолютно бесплатно. К основным возможностям ARToolKit относятся: распознавание 2D формата; отображение дополнений через OpenGL. Библиотека предназначена для отслеживания в кадре камеры мобильного устройства заранее известных квадратных маркеров объектов и воспроизведения на экране их расположения в пространстве. С помощью этих данных создается интерфейс дополненной реальности. ARToolKit подходит для работы на разных платформах: Android, iOS, Windows, Linux, Mac OS X, SGI. Для каждой конкретной операционной системы нужна своя среда разработки. Бесплатные среды доступны на всех платформах. Несмотря на бесплатный доступ к библиотеке, документация для разработчиков весьма ограничена. Есть тестовые приложения, но не все из них удается собрать. Код примеров представлен плохо и нет информации по дальнейшему развитию библиотеки. Wikitude Библиотека Wikitude поддерживает: распознавание 2D и 3D форматов (изображения, текст, видео); возможность сканирования реального объекта для последующего распознавания; рендеринг и анимацию 3D-моделей; отслеживание местоположения объектов; возможность HTML аугментации. Задействуя Wikitude, можно создавать приложения для отображения мест вокруг пользователя на виртуальной карте или в виде списка, для поисковых запросов о событиях, твитах, статьях из Википедии, для получения рекомендаций от других пользователей. Кроме этого, приложение на базе WikiTude позволит получать мобильные купоны, информацию о выгодных предложениях и скидках в магазинах вокруг, а также играть в AR-игры. Wikitude может использоваться для платформ Android, iOS, как плагин для PhoneGap, модульный элемент для Titanium и компонента для Xamarin. Этот фреймворк подходит для умных очков Google Glass, Epson Moverio, Vuzix M-100 и ODG R-7. Включает в себя SLAM и поддерживает Unity. Для разработчиков есть бесплатная пробная версия, в остальном использование библиотеки требует финансовых вложений. Плюсом является достойно представленная документация. LayAR Как следует из названия фреймворка, с его помощью можно смотреть на окружающую обстановку через «слои», отображающиеся на экране мобильного устройства. LayAR поддерживает: распознавание изображений; отображение дополнений на основе положения пользователя и распознанных изображений. Каждый из слоёв LayAR может содержать информацию о местоположении отдельных географических мест или пользователей социальных сетей. Кроме этого, использование функционала этой библиотеки в приложении расширяет возможности печатной продукции. Например, можно оформить покупку в каталоге или прослушать музыкальную композицию, о которой написали в журнале. Вся работа с библиотекой происходит на сервере через JSON, в том числе и логика отображения дополнительных элементов при распознавании. Из-за того, что вся конфигурация происходит на сервере, работа с фреймворком осуществляется не очень гибко. Большим плюсом LayAR является наличие подробной документации. Однако руководство доступно только в онлайн-режиме. Kudan AR Функционал библиотеки Kudan включает в себя: распознавание изображений; отображение дополнений на основе положения пользователя и распознанных изображений; безмаркерное отслеживание объектов (без реперных точек, только на основе реальных характеристик объекта – углов, изгибов или текстур); отображение дополнений через отдельный компонент-обертку над OpenGL. Kudan отличается от других фреймворков быстротой действия, позволяет приложениям отображать мультиполигональные модели в реальном мире и импортировать 3D модели непосредственно из популярных программ по моделированию и анимации. К дополнительным плюсам можно отнести отсутствие ограничений на количество распознаваемых изображений и маленький объем памяти, требуемый для хранения файлов на девайсе. Разработчики могут воспользоваться базовой документацией при обращении к библиотеке, однако руководство по использованию не слишком подробное и требует поиска дополнительной информации. Также есть риск, что при создании приложения может не хватить встроенных возможностей библиотеки, а доступ напрямую к OpenGL отсутствует. В целом, перечисленные в нашем обзоре библиотеки дополненной реальности предоставляют широкий спектр возможностей разработчику – от поддержки различных операционных систем до развернутого набора инструментов для распознавания и отслеживания объектов. Тем не менее, остановившись перед выбором конкретного фреймворка, разработчику важно понимать, что он получит в своё распоряжение. Часть инструментов можно использовать бесплатно, просто зайдя на сайт или скачав небольшую программу. Другие требуют заключения партнерских отношений и регулярной платы, но при этом обеспечивают более развернутый и качественный функционал. Делая выбор в пользу определенной AR-библиотеки, прежде всего отталкивайтесь от задач своего проекта, от планируемых результатов, и соизмеряйте их с возможностями выбранных решений. 2.2 Реализация алгоритма создания AR-приложения в среде UNITY Использование средств ИКТ должно соответствовать текущему уровню технического прогресса, визуальным и программным возможностям современных достижений в области информационно-коммуникационных технологий. В большинстве случаев, результат деятельности обучаемого зависит от того, насколько информативно, интересно выстроен процесс передачи знаний. В какой мере реализованы его потребности в познании, и какими средствами достигнута его дальнейшая направленность на углубление своих знаний. Дополненная реальность (англ. Augmented Reality, AR) – термин, относящийся ко всем проектам, направленным на дополнение реальности любыми виртуальными элементами. На сегодняшний день большинство исследований в области AR сконцентрировано на использовании живого видео, подвергнутого цифровой обработке и «дополненного» компьютерной графикой. Многие серьезные исследования включают отслеживание движения объектов, распознавание координатных меток при помощи машинного зрения и конструирование управляемого окружения, состоящего из произвольного количества сенсоров и силовых приводов. Технология дополненной реальности не обходит стороной сферу образования и в настоящее время используется поверхностно в процессе изучения дисциплин естественно математического цикла, что является объективной необходимостью и потребностью в развитии познавательных процессов современных учащихся и студентов. Внедрение в систему образования современных виртуальных средств обучения является важнейшим условием усиления обучающего эффекта, которое заключается в интерактивности 3D-моделирования и использовании эффекта дополненной реальности. Имея под рукой набор бумажных маркеров, мы можем в любой момент представить учебный объект не только в объеме, но и проделать с ним ряд манипуляций, посмотреть на него «изнутри» или в разрезе. Актуальность внедрения технологии дополненной реальности в образовательный процесс заключается втом, что использование настолько инновационного средства, несомненно, повысит мотивацию учащихся при изучении информатики и других дисциплин, а также повысит уровень усваивания информации, синтезируя различные формы ее представления. Используя возможности дополненной реальности в образовании, можно визуально воспроизвести процессы, которые трудно или почти невозможно воссоздать средствами реального мира и просто сделать процесс обучения увлекательным и понятным. С помощью этой технологии можно выделиться в пространстве выставки или сделать музейную экспозицию живой и увлекательной. Дополненная реальность может добавить в статичные страницы книги выразительную анимацию, превратить чтение в увлекательную игру и интересное приключение вместе с героями произведения, а также упростить воспроизведение аудио и видеоконтента, прилагающегося к бумажной книге. На уроках можно использовать смартфоны при показе детям, как устроен мир с помощью Google Earth и вебальбомов типа Picasa и Instagram [2]. С помощью программ для общения типа Skype или других VOIP-клиентов можно наладить сотрудничество между разными образовательными учреждениями. До сего времени благодаря учебникам на бумажной основе школьник или студент знакомится с определенными темами учебной программы тактильно и научно, в редких случаях визуально. Можно себе представить – как улучшился бы процесс восприятия и запоминания учебного материала благодаря технологии дополненной реальности. Именно эти современные интерактивные технологии вносят в процесс обучения яркие трехмерные образы, игровой элемент, активизируют взаимодействие участников учебного процесса, развивая пространственное мышление и навыки проектной деятельности. Благодаря дополненной реальности перед обучающимися открываются безграничные возможности для познания нового. Мы убеждены, что технология дополнительной реальности, прежде всего, необходима в школьной практике обучения. На наш взгляд, электронные учебники, которые в настоящее время создаются в обязательном порядке, как приложение к учебнику в бумажном исполнении являются в своем большинстве оцифрованными копиями с минимальным интерактивом. При этом мало используется компьютерная визуализация для привлечения внимания к дисциплине, для повышения интереса школьников, для демонстрации примеров, которые детям кажутся сложными или скучными [1]. Определенные успехи в использовании технологий дополнительной реальности достигли в Китае. Например, основная социальная сеть WeChat – чтобы найти человека или другую информацию достаточно поднести свой смартфон к «метке». Нельзя не сказать о влиянии дополненной реальности на визуализацию самых различных объектов, которые нам предлагают в виде рекламных видеороликов, плакатов и т. п. С какой-то стороны это тоже дополненная реальность. Создатели рекламы, используя цвета и различные технологии, влияют, прежде всего, на психику человека, читающего и видящего постер или рекламу [3]. Возможно, в скором времени компьютерные инженеры помогут включить дополнительную реальность в школьную практику обучения, а наиболее качественные приложения дополненной реальности, используемые в процессе обучении, могут стать рекламными и имиджевыми. С этой целью к существующим информационным технологиям и образовательным ресурсам присоединится и технология дополненной реальности, включающая: учебники с технологией дополненной реальности; 1. развивающие игры; 2. обучающие приложения; 3. визуальное моделирование объектов; 4. различные приложения для тренировки навыков и др. Однако на данный момент какой-либо единой методологии применения технологии дополненной реальности в образовательной среде нет. Нет пока и собственно приложений, несмотря на то, что дополненная реальность – это реальный путь продвижения вперед не только потому, что мы живем в век информационных технологий, а потому, что дополненная реальность, как для учащегося, так и для обычного человека – это наиболее результативный способ познания окружающей нас предметной среды и пространства. Процесс внедрения и создание проекта. Использовании живого видео, подвергнутого цифровой обработке и «дополненного» компьютерной графикой очень сильно привлекло моё внимание. Не в плане того что это актуально или в будущем прибыльно, а то что это будущее. И на мой взгляд будущее уже наступило. Технологий достигли небывалых высот, но мы всё же продолжаем жить без применений хотя бы 50 процентного ресурса современных технологий. Изо дня в день я оглядывался по сторонам, и абсолютно везде мне на глаза попадалась суета в глазах представителей общества. Например, сотрудник фирмы едет на собрание по работе. Но едет с опозданием. Ему нужно по ходу подготовиться к собранию. Казалось бы, что тут трудного. Но едет он в автобусе. Много людей. Автобус останавливается на остановке. Читать материал, согласитесь, трудно в таких ситуациях. А теперь представьте технологию в руках этого сотрудника. Под технологией подразумевается специальная программа, которая при наведении камеры смартфона на соответствующий материал, этот самый материал «оживает». Т.е. картинка оживает, появляется звук. Текстовый материал можно будет прослушивать. Согласитесь, осваивать материал таким способом, очень и очень облегчит жизнь каждого человека. Осмыслив свой навыки, взвесив за и против я решил создать проект основываясь на потребности людей. Первым делом мне нужно было выбрать платформу для работы и создания программы. Я выбрал Unity 3D/Unity AR/VR. Почему именно Unity? Unity используется для создания более чем половины всех игр в мире а также программ. Эта платформа разработки в реальном времени, усиленная инструментами и сервисами, предлагает невероятные возможности разработчикам игр и программ, а также творцам из различных отраслей. Универсальный редактор, который можно дополнить в соответствии с вашими нуждами В редактор Unity входит множество инструментов, ускоряющих работу и итерацию циклов разработки, в том числе режим игры для быстрой проверки результатов работы в реальном времени. • Универсальный редактор: Доступен для Windows и Mac, имеет инструменты как для художников, разрабатывающих увлекательные миры, так и для программистов, которые реализуют игровую логику и оттачивают игровой процесс. • 2D и 3D: Unity подходит как для 2D, так и для 3D, предоставляя все необходимые функции для любых нужд в любом жанре. • Инструменты для поиска пути: Unity имеет систему навигации, позволяющую неигровым персонажам свободно перемещаться по игровому миру. Сетки навигации создаются автоматически по данным ландшафта, и даже учитываются динамические препятствия, благодаря чему курс персонажей меняется по ходу действия. • Эффективные рабочие процессы: Префабы в Unity, представляющие собой настроенные игровые объекты, обеспечивают эффективность и гибкость рабочего процесса и уверенность в результате, сводя к минимуму вероятность возникновения трудоемких ошибок. • Пользовательский интерфейс: Встроенная система, позволяющая быстро и легко разрабатывать пользовательские интерфейсы. • Физические движки: Используйте все преимущества поддержки Box2D и NVIDIA PhysX, чтобы создавать реалистичные и высокопроизводительные игры. • Собственные и сторонние инструменты: Редактор Unity поддерживает установку расширений, создаваемых в соответствии с потребностями нашей студии или загружаемых из Asset Store — магазина, в котором можно найти любые ресурсы, инструменты и расширения для ускорения работы над вашими проектами. • Улучшенная командная работа: можно присматриваться, над чем работают другие, прямо в окне редактора Unity, где мы проводим большую часть своего времени. Рабочее место для творчества Редактор Unity — это инструмент совместного творчества художников, дизайнеров, разработчиков и других сотрудников студии. Здесь есть инструменты для дизайна 2D- и 3D- сцен, выстраивания сюжета и анимационных роликов, освещения, звукового оформления, работы со спрайтами, системами частиц и невероятно мощная система анимации с монтажным столом. • Блестящие сюжеты: Инструмент Timeline позволяет художникам создавать впечатляющие анимационные и игровые сцены. • Практически кино: Используя набор «умных» и динамических камер Cinemachine, мы можем управлять действием так, как это делает режиссер. • Цветокоррекция и эффекты: Можно придать программе или игре нужный вид благодаря профессиональным и полнофункциональным постэффектам. • Анимация: Используйте Timeline, Anima2D, частицы, а также тесную интеграцию с Maya и другими программами для трехмерной графики для анимации непосредственно в Unity. • Дизайн уровней и игрового мира: Посетив ProBuilder, можно быстро проектировать, создавать прототипы и тестировать свои уровни, затем примешивать текстуры и цвета, создавать сетки и размещать объекты с помощью Polybrush (бета-версия). • Обмен файлами: Можно детализировать и полировать свои 3D-модели "на лету" благодаря легкой интеграции Unity с другими инструментами создания цифрового контента наподобие Maya. • Освещение: Можно контролировать освещение благодаря Progressive Lightmapper, придавать сцене нужный вид, используя постобработку, оптимизировать сцену с помощью режимов смешанного освещения, добиваясь наилучшего результата для целевой платформы. Ускорение совместной работы Unity Teams — это возможность эффективной работы для студий и инструменты, упрощающие рабочий процесс и позволяющие работать одновременно. • Сохранение, публикация, синхронизация проектов, управление версиями и хранение файлов в облаке — все это уже встроено в Unity. • Cloud Build: Создание сборки автоматически и можно делиться ими с кем угодно. Ход создания проекта Компьютер До недавнего времени главным препятствием для практического внедрения была неспособность мобильных ПК обсчитывать трехмерную графику. В настоящее время акцент сместился на разработку адекватных методов позиционирования и отображения Позиционирование Использование ставшей уже классической навигационной системы GPS не решает проблему. Ведь идея дополнения реальности заключается в получении правильной информации в правильном месте. «Классический» датчик GPS дает минимальную погрешность от 3 до 30 м. Учитывая то, что подписи на дисплее должны совмещаться с изображением реальных объектов, такая ошибка делает затею бессмысленной. Да и в городе GPS зачастую бессилен. Отображение видеоинформации не менее проблематично. Необходимо совмещать трехмерную графику и реальные объекты, учитывая перемещения человека в пространстве и его позу. До сих пор мобильные дисплеи являются слабым местом любых носимых компьютеров. Недорогие, качественные, легкие и компактные видеоочки по-прежнему редкость. Поскольку основной задачей дополненной реальности является синтез реальных и виртуальных объектов в пространстве, то возникает необходимость в предварительной оцифровке данных об окружающем пространстве. Регистрирование геометрических пространственных характеристик небольших помещений сегодня уже стало нормой жизни для широкого круга специалистов. Все оказывается гораздо сложнее, когда речь заходит об открытых пространствах: как взаимно расположены виртуальные и реальные предметы, какой из них находится на первом плане? Работа здесь ведется по двум направлениям: съемка «карты глубин» (depth sensing) в реальном масштабе времени и предварительный сбор информации о местности. Как научить компьютер ориентированию? Комбинация гироскопа и компаса дает неплохие результаты, а если добавить к ним распознавание изображений заранее известных элементов ландшафта — точность возрастает до пиксельного уровня. Расхождение измеряется пикселями исключительно из-за особенностей человеческого мозга и зрения, способных выявить малейший промах при размещении виртуальных предметов в реальном пространстве. Пользу здесь приносят даже разработки создателей спецэффектов в кино, которые занимаются восстановлением траектории движения камеры с помощью отслеживания перемещений в кадре объектов-маркеров. Отображение Взаимодействие пользователя с системой дополненной реальности требует нестандартных решений. Конечно, никто не отбрасывает обычную клавиатуру и мышь, однако, учитывая мобильную природу технологии, они не являются идеальной парой для видеоочков. В экспериментальных устройствах исследователи пытаются использовать практически весь арсенал методик ввода информации: манипуляторы с шестью степенями свободы, распознавание речи и жестов. Но, как правило, для полноценного взаимодействия с дополненной реальностью приходится комбинировать несколько устройств. Наибольший интерес вызывают «виртуальные интерфейсы», поражающие своей простотой и оригинальностью. Все в точности, как во время детской игры, когда лыжная палка превращается в меч, а оторванный от детского автомобильчика руль — в штурвал самолета. Например, человек берет в руки обычную доску, а компьютер «дорисовывает» на ней органы управления: клавиши, переключатели и дисплеи. Такой способ реализован в PIP (Personal Interaction Panel). |