Kpfu.ru
Федеральное государственное автономное образовательное учреждение высшего образованияКАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТВЫСШАЯ ШКОЛА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ИНФОРМАЦИОННЫХ СИСТЕМНаправление подготовки: 09.03.03 Прикладная информатикаВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТААвтоматизация построения интерактивной 3D-карты ?Паспорт безопасности? в образовательных учрежденияхРабота завершена:?___?_____________2017 г. Студент группы 11-303 ___________________А. Р. Харисова Работа допущена к защите:Научный руководительЗаведующий лабораторией технологического предпринимательства ?___?_____________2017 г. ___________________Р. Р. Гайсин Директор Высшей школы ИТИС ?___?_____________2017 г. __________________ А.Ф. Хасьянов Казань – 2017 г.СОДЕРЖАНИЕ TOC \o "1-3" \h \z \u Перечень обозначений, сокращений и терминов PAGEREF _Toc485077523 \h 3Введение PAGEREF _Toc485077524 \h 61.Анализ предметной области PAGEREF _Toc485077525 \h 81.1.Дополненная реальность PAGEREF _Toc485077526 \h 81.2.Влияние использования дополненной реальности в процессе обучения: существующие исследования PAGEREF _Toc485077527 \h 82.Интерактивная 3D-карта ?Паспорт безопасности?: влияние использования дополненной реальности в процессе обучения школьников безопасным маршрутам в непосредственной близости от школы PAGEREF _Toc485077528 \h 122.1.Внедрение PAGEREF _Toc485077529 \h 132.2.Проведение тестов PAGEREF _Toc485077530 \h 153.Используемые инструменты и схема автоматизации PAGEREF _Toc485077531 \h 183.1.Используемые инструменты PAGEREF _Toc485077532 \h 183.2.Поиск решения для достижения цели и схема автоматизации PAGEREF _Toc485077533 \h 214.Разработка приложения PAGEREF _Toc485077534 \h 244.1.Разработка маркеров PAGEREF _Toc485077535 \h 244.2.Разработка мобильного приложения с использованием технологии дополненной реальности PAGEREF _Toc485077536 \h 26Заключение PAGEREF _Toc485077537 \h 32Список использованных источников PAGEREF _Toc485077538 \h 33ПЕРЕЧЕНЬ ОБОЗНАЧЕНИЙ, СОКРАЩЕНИЙ И ТЕРМИНОВТаблица 1 – обозначения и сокращения№Сокращенное обозначениеПолное название12D2-Dimensional23D3-Dimensional3APIApplication Programming Interface4APKAndroid Package Kit5ARAugmented Reality6AR-3DHAugmented Reality 3-Dimensional Hologram7CMYKCyan, Magenta, Yellow, Key color8HMDHead-Mounted Display9IDEIntegrated Development Environment10MARMobile Augmented Reality11PSDPhotoshop Document12RGBRed, Green, Blue color13SDKSoftware Development Kit14VRVirtual Reality15ВВСВоенно-воздушные силы16МАОУМуниципальное автономное общеобразовательное учреждениеТаблица 2 – термины и их определения№ТерминОпределение1Аэробное и анаэробное дыханиеАэробное дыхание осуществляется с участием кислорода; анаэробное дыхание – процесс дыхания, осуществляемый без участия кислорода извне (характерно для микроорганизмов)2Игровой движокЦентральный программный компонент компьютерных и видеоигр3ИнициализацияПриведение программы в состояние готовности к использованию4ИнтерактивныйДиалоговый, осуществляющий взаимодействие с пользователем5ИнтерфейсКонструкция в программе, используемая для описания совокупности возможностей класса или компонента6Когнитивные процессыПознавательные процессы человеческой психики: память, внимание, представление информации, логическое мышление, воображение7КонтроллерСистема управления, регулирования чего-либо8КроссплатформенныйРаботающий более чем на одной аппаратной платформе и (или) операционной системе9МассивСтруктура данных в виде набора компонентов – элементов массива10Меш (mesh)Набор вершин и многоугольников, определяющих форму трёхмерного объекта11Митоз, мейозСпособы деления клеток в биологии12МодельТрёхмерный визуальный объёмный образ объекта13ОтладкаОбнаружение, локализация и устранение ошибок в программе14ПолигонМногоугольник, поверхность для визуализации в 3D-графике15Префаб (prefab)Игровой объект в Unity, хранящий в себе модели, визуализированные компоненты и компоненты, управляющие поведением данного объекта16Растровая графикаГрафика, представляющая собой сетку пикселей17Рефакторинг (refactoring)Улучшение кода для его лучшего понимания, не затрагивающее поведение программы18Скрипт (script)Краткое описание действий (сценарий), выполняемых системой или ее компонентом19СценаСреда визуализации объектов в Unity20ТрекингОтслеживание движущихся объектов в реальном мире с помощью камерыВВЕДЕНИЕЕжедневно случается большое количество дорожно-транспортных происшествий с участием школьников. Дороги и перекрестки рядом со школой – это, к сожалению, наиболее опасные участки для детей, потому что через эти участки проходят основные ежедневные маршруты передвижения школьников. Каждое общеобразовательное учреждение заботится о безопасности своих учеников и стремится дать все необходимые знания о правилах дорожного движения, но зачастую детям не интересен формат обучения, и они не могут применить полученные знания на практике.В прошлом семестре в результате выполнения проекта ?Влияние использования дополненной реальности в процессе обучения? был внесен вклад в эту актуальную проблему, было доказано, что внедрение дополненной реальности в процесс обучения действительно улучшает знания школьников о безопасных маршрутах в непосредственной близости от школы. В этой работе создавалась интерактивная 3D-карта ?Паспорт безопасности? с использованием дополненной реальности. В результате также было решено, что технологию дополненной реальности можно использовать во всех общеобразовательных учреждениях, чтобы снизить количество дорожно-транспортных происшествий с участием детей. Но существует одна проблема, препятствующая реализации этого проекта. На данный момент для каждого общеобразовательного учреждения нужно создавать индивидуальную интерактивную карту, что возможно лишь вручную разработчиком. Процесс построения карты требует ресурсов: знаний, времени и денег. К сожалению, бюджет большинства школ ограничен; основной источник дохода школ – финансирование государством, которое выделяет деньги на определенные нужды и может отказать в выделении средств на дополнительные мероприятия.Чтобы решить эту проблему, было принято решение об автоматизации процесса построения интерактивной 3D-карты ?Паспорт безопасности? в образовательных учреждениях. Это позволит бесплатно внедрить технологию дополненной реальности в процесс обучения любого образовательного учреждения.Цель выпускной квалификационной работы – автоматизировать процесс построения интерактивной 3D-карты ?Паспорт безопасности? в образовательных учреждениях.Исходя из цели, были поставлены следующие задачи:провести анализ предметной области: изучить исследования о влиянии использования дополненной реальности в процессе обучения; проанализировать результаты внедрения технологии дополненной реальности в процесс обучения школьников безопасным маршрутам, находящимся в непосредственной близости от образовательного учреждения;определиться со схемой автоматизации, изучить существующие подходы и инструменты, которые можно будет использовать для достижения цели;разработать приложение с использованием дополненной реальности.АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИДополненная реальностьДополненная реальность (AR) может быть определена как технология, которая накладывает виртуальные объекты на реальный мир. Эти виртуальные объекты затем существуют в одном пространстве с объектами в реальном мире. Она не погружает наблюдателя полностью в виртуальный мир, как делает это технология виртуальной реальности (VR). AR была впервые введена в качестве учебного инструмента для авиакомпаний и летчиков ВВС в период 1990-х годов. В настоящее время AR является популярной технологией, которая широко используется в образовательных учреждениях. AR стала важным направлением исследований в последние годы. Одной из наиболее важных причин широкого использования AR технологий является то, что они не требуют дорогостоящего и сложного оборудования, таких как шлем виртуальной реальности (HMD). Технологию теперь можно использовать с компьютерами или мобильными устройствами, на данный момент она внедряется на разных уровнях обучения, от школ до университетов. Исследования показали, что использование AR технологии в процессах обучения в образовательных учреждениях имеет много преимуществ. Например, AR помогает студентам в исследованиях. При отображении виртуальных элементов наряду с реальными объектами, AR облегчает наблюдение за событиями, которые не могут быть легко замечены невооруженным глазом. Таким образом, это повышает мотивацию студентов и помогает им улучшить свои исследовательские навыки [1].Влияние использования дополненной реальности в процессе обучения: существующие исследованияДополненная реальность в научных лабораториях: Влияние дополненной реальности на лабораторные навыки студентов высших учебных заведений и на отношение к научным лабораториям [2]В данном исследовании изучали влияние использования технологии дополненной реальности в научных лабораториях на лабораторные навыки студентов высших учебных заведений и отношение к научным лабораториям. В нем использовали до-тест / пост-тест контрольной группы. В нем приняли участие 76 студентов первого курса, в возрасте 18-20 лет. Они были назначены либо экспериментальной или контрольной группой. Были использованы качественные и количественные инструменты сбора данных. Экспериментальные результаты, полученные после 5-недельного применения, показали, что технология AR значительно повысило развитие лабораторных навыков студентов университета. AR технологии и улучшили лабораторные навыки студентов, и помогли создать позитивное отношение к лабораториям физики.Дополненная реальность в сочетании с трехмерной голографией тренирует способность мысленного вращения пожилых людей [3]Мысленное вращение – это способность человека вращать двухмерный или трехмерный мысленный образ объекта аналогично вращению реального объекта. Снижение когнитивной способности мысленного вращения вызывает чувство пространственной дезориентации и снижает познавательные способности. В настоящее время учебные задания для пожилых людей представлены в 2D-виде. Однако клинические исследования показали, что эта стратегия создает когнитивную нагрузку, которая уменьшает интерес слушателей и снижает эффективность обучения. В противоположность этому, дополненная реальность снижает когнитивную нагрузку, улучшает чувство пространственной ориентации пожилых людей, а также способствует повышению интереса к обучению. Для этого исследования было набрано 28 пожилых людей возрастом от 65 лет. Четырнадцать человек обучали мыленному вращению с использованием AR на основе 3D-голограммы (AR-3DH), а остальные 14 были отнесены к группе, которая использовала традиционную 2D-модель обучения.После 6-недельного обучения было проведено тестирование, группы сравнивали по частоте ошибок и времени реакции. В результате способность мысленного вращения пожилых людей из группы, которая обучалась с помощью внедрения AR технологии, оказалась лучше, чем у людей из группы с традиционной 2D-моделью обучения. Изучение анатомии с помощью мобильной дополненной реальности: влияние на достижения и когнитивную нагрузку [4]Дополненная реальность, новое поколение технологий, в последние годы привлекла к себе внимание педагогов. MagicBook был разработан для обучения нейроанатомии с помощью технологии дополненной реальности для мобильных устройств (MAR). Цель данного исследования состояла в том, чтобы определить влияние обучения анатомии с помощью MAR на академическую успеваемость и когнитивную нагрузку студентов-медиков. Случайная выборка состояла из 70 студентов-медиков второго курса бакалавриата: 34 в экспериментальной группе и 36 в контрольной группе. В качестве инструмента сбора данных были использованы академический тест на знания и шкала когнитивной нагрузки. Экспериментальная группа, которая использовала приложение MAR, сообщила о лучшем усваивании изучаемого материала и достижении более низкой когнитивной нагрузки. Такой подход помог студентам учиться лучше, используя меньше когнитивных усилий. Технология дополненной реальности для изучения биологии в Малайзии [5]В этом исследовании представлено образовательное приложение для изучения биологии в средних школах Малайзии с использованием технологии дополненной реальности, включающего темы митоза, мейоза, дыхания. Они создали трехмерные сцены для объяснения аэробного и анаэробного дыхания, которые представляют собой AR-визуализации этих типов дыхания при определенных обстоятельствах. Кроме того, они также создали ?виртуального учителя? в качестве дополнительного объекта, который рассказывает материал ученикам. Это позволяет учащимся визуализировать сложные процессы и легче изучать, запоминать и понимать концепции биологии. Технология AR повышает привлекательность учебного процесса для учащихся.Изучение применения дополненной реальности в 3D-представлении стальных архитектурных конструкций для улучшения архитектурного образования [6]В этом исследовании изучается использование дополненной реальности в обучении архитектуре, в частности, основное внимание уделяется пониманию студентами стального архитектурного строительства. Исследование преследует следующие цели: построить виртуальную 3D-конструкцию стальной архитектуры с применением AR, проанализировать обратную связь студентов с их исследовательским опытом обучения и изучить их результаты обучения с использованием AR-приложения. Данные исследования получены после того, как студентам предложили восстановить трехмерные модели стальных архитектурных конструкций, а также после получения отзывов студентов с помощью анкетирования. Результаты показывают, что 87% студентов согласились с тем, что задание позволяет получить большой опыт в обучении. Кроме того, 79% респондентов были удовлетворены результатом обучения. Это исследование представляет продвижение дополненной реальности (AR), применимой в архитектурном образовании.ИНТЕРАКТИВНАЯ 3D-КАРТА ?ПАСПОРТ БЕЗОПАСНОСТИ?: ВЛИЯНИЕ ИСПОЛЬЗОВАНИЯ ДОПОЛНЕННОЙ РЕАЛЬНОСТИ В ПРОЦЕССЕ ОБУЧЕНИЯ ШКОЛЬНИКОВ БЕЗОПАСНЫМ МАРШРУТАМ В НЕПОСРЕДСТВЕННОЙ БЛИЗОСТИ ОТ ШКОЛЫИнформационные технологии являются неотъемлемой частью жизни современных школьников, им привычно пользоваться смартфонами, планшетами, очень часто детей бывает сложно оторвать от мобильных устройств. Может, и не стоит этого делать? Ведь высокие технологии вполне можно внедрить в процесс обучения, что поспособствует большему интересу со стороны учеников к предмету обучения. В современном мире есть множество информационных технологий, которые можно использовать, чтобы увеличить интерес ребенка к какому-либо объекту. Одной из таких технологий является дополненная реальность. Мобильные приложения с дополненной реальностью помогают наглядно и понятно рассказать даже о сложных вещах.МАОУ “Лицей-интернат №2” Московского района г. Казани, который находится по адресу Шамиля Усманова, 11, расположен в людном районе города Казани, с интенсивным движением транспорта. Общежитие лицея находится в 15-20 минутах ходьбы от школы. Существует безопасный маршрут в общежитие, и есть много альтернативных путей, которые являются небезопасными. Многие ученики выбирают второй вариант, который немного короче, но, делая это, они рискуют своим здоровьем и благополучием.На основании сделанных выводов, было принято решение о внедрении технологии дополненной реальности в МАОУ ?Лицее-интернате №2? Московского района г. Казани; обучении учеников лицея безопасным маршрутам от школы до общежития с помощью приложения EstudiAR для телефонов на платформе Android; последующей проверке знаний учеников и анализе результатов.ВнедрениеВ МАОУ ?Лицее-интернате №2? имеется стенд с картой района общеобразовательного учреждения с отображением дорог, перекрестков и близлежащих остановок общественного транспорта (Рис. 1). На стенде отображена организация дорожного движения, схема безопасных маршрутов в непосредственной близости от лицея-интерната №2, и все это в соответствии с правилами дорожного движения.Рис.1 ?Стенд с картой?Специально для этого стенда было разработано мобильное приложение EstudiAR с использованием дополненной реальности для устройств на платформе Android. Приложение можно скачать в Google Play [7].При наведении на стенд камеры мобильного устройства с запущенным приложением EstudiAR, можно увидеть анимированную 3D-демонстрацию безопасных маршрутов от общеобразовательного учреждения до общежития с отображением пешеходных переходов, светофоров, участников дорожного движения (машин и пешеходов) (Рис. 2, 3). Рис.2 ?Дополненная реальность?Рис.3 ?Анимированная 3D-демонстрация безопасных маршрутов?Проведение тестовДля проведения исследования был создан тест на знание маршрута от лицея-интерната до общежития (Приложение 1). Чтобы сравнить результаты до и после внедрения технологии дополненной реальности, сначала ученики должны были изучить безопасные маршруты на стенде без использования приложения, после этого скачать EstudiAR и изучить стенд при помощи дополненной реальности. После каждого этапа изучения была проведена оценка знаний с помощью теста. Результаты 1-ого теста (изучение без использования AR):Рис.4 ?Результат до внедрения AR?Результаты 2-ого теста (изучение c использованием AR):Рис.5 ?Результат после внедрения AR?Для того чтобы сделать вывод о влиянии использования AR в обучении безопасным маршрутам, представим результаты тестов в виде сравнительной таблицы (Таблица 3).Таблица 3 – сравнение количества правильных ответов в процентахПроцент правильных ответов до внедренияПроцент правильных ответов после внедренияВопрос 1 47%79%Вопрос 248%69%Вопрос 343%70%Среднее46%73%В результате, знание безопасного маршрута и правил дорожного движения улучшилось в среднем на 27%, что показано на диаграммах и в таблице 3. Это означает, что в результате выполнения исследования можно сделать вывод о том, что внедрение дополненной реальности в процесс обучения действительно улучшает знания. Большинству учеников действительно было интересно изучать правила дорожного движения с помощью этого приложения. 3D-демонстрация безопасных маршрутов, созданная при помощи дополненной реальности, делает их нагляднее и понятнее, а сам процесс обучения - увлекательнее и эффективнее. Дополненную реальность можно использовать и в других общеобразовательных учреждениях, чтобы улучшить знания безопасных маршрутов в непосредственной близости от школы. Дальнейшее внедрение данной технологии позволит ученикам безопаснее добираться до школ, образовательным учреждениям сократить количество несчастных случаев, родителям убедиться в сохранности своего ребенка. Именно поэтому было принято решение об автоматизации построения интерактивной 3D-карты ?Паспорт безопасности?, чтобы у каждого общеобразовательного учреждения появилась возможность бесплатно внедрить эту технологию в свой процесс обучения. ИСПОЛЬЗУЕМЫЕ ИНСТРУМЕНТЫ И СХЕМА АВТОМАТИЗАЦИИИспользуемые инструментыДля реализации решения были использованы следующие инструменты:Игровой движок Unity [8]Unity – кроссплатформенный игровой движок, разработанный Unity Technologies, который используется в основном как бесплатный инструмент для разработки двух- и трёхмерных приложений и игр, которые работают под операционными системами Windows, OS X, Windows Phone, Android, Apple iOS, Linux, а также на игровых приставках. Редактор Unity имеет простой интерфейс, который легко настраивать, отладку игры можно производить прямо в редакторе. C# – один из языков, поддерживаемых движком Unity.Проект в Unity делится на сцены, каждая из которых содержит свои игровые миры со своим набором объектов и настроек. Также сцены могут включать в себе ?пустышки? — пустые игровые объекты, которые не имеют модели. Сами объекты содержат в себе наборы компонентов, с которыми взаимодействуют скрипты, написанные на поддерживаемых сценарных языках, например, на C#. У любого объекта на сцене обязательно присутствует компонент Transform, который хранит в себе координаты местоположения, поворота и размеров объекта по трём осям: x, y, z. В редакторе Unity существует компонент для создания анимации, но также анимацию можно создать предварительно в 3D-редакторе, а потом импортировать ее вместе с моделью. Также на сцену можно добавлять объекты типа GameObject.Vuforia SDK и Frame Markers [9]Vuforia SDK – пакет разработки программного обеспечения (SDK) для мобильных устройств, который позволяет создавать приложения с использованием дополненной реальности. Vuforia использует технологию компьютерного зрения для распознавания и отслеживания в режиме реального времени плоских изображений, а также объёмных реальных объектов (к примеру, кубических). Это позволяет разработчикам позиционировать и ориентировать виртуальные объекты по отношению к изображениям реального мира, когда они просматриваются через камеру мобильного устройства. Виртуальный объект отслеживает положение реального изображения и размещается таким образом, чтобы казалось, что виртуальный объект является частью реального мира.Vuforia поддерживает различные 2D- и 3D- типы мишеней, включая безмаркерные Image Target, трёхмерные мишени Multi-Target, а также фрейм маркеры (Frame Markers), которые распознаются по идентификаторам в диапазоне от 0 до 511 (всего 512 значений) (Рис. 6). Для поддержки маркеров кадров не требуется база данных, потому что они декодируются на основе их битового шаблона, а не изображения. Vuforia предоставляет возможность интеграции с игровым движком Unity. Рис.6 ?Frame Markers?Microsoft Visual Studio [10]Microsoft Visual Studio - это интегрированная среда разработки (IDE) от Microsoft. Она используется для разработки компьютерных программ для Microsoft Windows, а также веб-сайтов, веб-приложений, веб-сервисов и мобильных приложений. Visual Studio использует платформы разработки программного обеспечения Microsoft, такие как Windows API, Windows Forms, Windows Presentation Foundation, Windows Store и Microsoft Silverlight. Visual Studio включает редактор кода, поддерживающий IntelliSense (компонент завершения кода), а также рефакторинг кода. Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности. Visual Studio поддерживает 36 различных языков программирования. В число встроенных языков входят C, C ++ и C ++ / CLI, , C #, F # и TypeScript. Microsoft предоставляет бесплатную версию Visual Studio под названием Community Edition, которая поддерживает плагины и доступна бесплатно.Adobe Photoshop [11]Adobe Photoshop – это редактор растровой графики, разработанный и опубликованный Adobe Systems для MacOS и Windows. Он может редактировать и создавать растровые изображения в несколько слоев, поддерживает несколько цветовых моделей (в аннотации самой программы — режим изображения): RGB, CMYK, в градациях серого, черно-белые, с 256-цветовой палитрой (Indexed), многоканальные (Multichannel) . Photoshop имеет широкую поддержку графических форматов файлов, но также использует собственный формат файлов PSD, который поддерживает все вышеупомянутые функции. В дополнение к растровой графике он имеет ограниченные возможности для редактирования текста, векторной графики, 3D-графики и видео. Поиск решения для достижения цели и схема автоматизацииПриложение EstudiAR для лицея-интерната №2 было разработано на игровом движке Unity с использованием пакета разработки Vuforia SDK и Microsoft Visual Studio для редактирования скриптов, написанных на языке C#. В этом приложении использовалась ImageTarget – 2D-мишень, которая представляет собой изображение карты, находящейся на стенде данной школы. Vuforia SDK может выявлять и отслеживать только это изображение. Vuforia обнаруживает и отслеживает особенности реального изображения с камеры, сравнивая эти особенности с известным целевым изображением. Эффективность отслеживания изображения зависит от количества особенностей. Качество отслеживания (англ. augmentable) изображения рассчитывается на официальном сайте Vuforia в виде рейтинга от 1 до 5 звезд [12]. Для достижения наилучших результатов, нужно стремиться к 4 или 5 звездам (Рис.11) [13]. Рис.7 ?Особенности и рейтинг распознаваемости карты лицея-интерната №2? ImageTarget в виде карты был добавлен в проект Unity (Рис. 7). После этого на карте расставлялись модели пешеходов, автомобилей, безопасные маршруты, настраивалось движение объектов, и все это выполнялось вручную разработчиком (Рис. 8). Рис.8 ?Построение интерактивной 3D-карты разработчиком?При наведении камеры, после того, как целевое изображение обнаружено, SDK будет отображать дополненную реальность до тех пор, пока изображение присутствует, по меньшей мере, частично в поле зрения камеры. Т.е. это приложение внедряет дополненную реальность в процесс обучения только одной школы, так как подходит только для одной определенной карты. И для того, чтобы внедрить эту технологию во все общеобразовательные учреждения, нужно было найти решение того, как автоматизировать процесс построения интерактивной 3D-карты ?Паспорт безопасности?. Другими словами, разработать мобильное приложение, которое отображало бы дополненную реальность на любых дорожных картах, правильно определяло бы, где на карте находятся безопасные маршруты, дороги, здание общеобразовательного учреждения. И здесь автор столкнулся с рядом проблем. Безопасные маршруты на карте отображаются как простые линии различных цветов, которые Vuforia не в состоянии распознать, так как в линии очень мало особенностей, рейтинг отслеживания взятых примеров линий маршрутов был равен 0 звездам (Рис. 9). Рис.9 ?Особенности и рейтинг распознаваемости примера обозначения безопасного маршрута?Также, на данный момент не существует какого-либо стандарта для карты дорожной безопасности, и, проанализировав карты школ, стало понятно, что все они абсолютно разные, и каждое общеобразовательное учреждение создает ее по своему усмотрению (Рис. 10). Рис.10 ?Примеры стендов со схемой безопасного маршрута учащихся?Исходя из всех выводов, было решено, что можно предоставить школам возможность самим указать и обозначить безопасные маршруты на карте с помощью хорошо распознаваемых Vuforia маркеров. Поэтому предлагаю следующее бесплатное решение внедрения дополненной реальности в любое общеобразовательное учреждение, которое основано на том, чтобы предложить школам:бесплатный набор хорошо распознаваемых камерой маркеров размером 1,5 * 1,5 см, которые они смогут наклеить на стенд с картой, обозначив ими безопасные маршруты и пути движения автомобилей;бесплатное приложение, которое будет распознавать наклеенные маркеры, и добавлять к ним элементы дополненной реальности.Таким образом, автоматизация построения интерактивной 3D-карты ?Паспорт безопасности? сводится к разработке маркеров и мобильного приложения, которое будет отслеживать маркеры и добавлять к ним элементы дополненной реальности. РАЗРАБОТКА ПРИЛОЖЕНИЯРазработка маркеровДля начала необходимо создать хорошо распознаваемые маркеры, которыми можно будет обозначить безопасные маршруты. Для этого были использованы поддерживаемые Vuforia 2D-мишени – Frame Markers и редактор Adobe Photoshop. У каждого фрейм маркера имеется идентификатор, дизайн маркера можно менять на свое усмотрение. Набор шаблонов маркеров с идентификаторами от 0 до 511 для создания фрейм маркеров с собственным дизайном включен в пакет разработки Vuforia. Чтобы не портить общий вид и восприятие карты, размеры фрейм маркеров должны быть как можно меньше. Опытным путем было выявлено, что наименьшие возможные размеры одного маркера составляет 1,5 см * 1,5 см, маркеры меньших размеров уже не распознаются камерой. Маркеры заполняются цветом, который подходит под общий стиль стандартной карты: фон маркеров для безопасных маршрутов совпадает с цветом тротуаров на карте (серый цвет), а фон маркеров для путей движения автомобилей совпадает с цветом линий, которые обозначают движение автомобилей на карте (синий цвет). Для лучшего отслеживания к каждому маркеру необходимо было добавить обводку в 2мм светло-серого цвета (Рис. 11).Рис.11 ?Примеры маркеров?Чтобы сделать несколько полностью отдельных линий маршрутов, нужно использовать для каждой линии отдельную группу маркеров, пронумерованных от 1 и далее по порядку. Создадим 2 группы маркеров для обозначения двух безопасных маршрутов и 1 группу маркеров для обозначения одного пути движения автомобилей, чтобы не портить восприятие карты большим количеством наклеенных маркеров. Для безопасного маршрута №1 были взяты маркеры с идентификаторами от 0 до 14 (включительно), для безопасного маршрута №2 – от 15 до 29, для пути движения автомобилей – от 30 до 44. Все маркеры пронумерованы начиная с 1 по порядку. Дополнительно к набору маркеров разработана инструкция для общеобразовательных учреждений к размещению маркеров на карте (Приложение 2). Чтобы разместить маркеры на стенде с картой необходимо:Выбрать на карте максимум два безопасных маршрута и один путь движения автомобилей, к которым будет добавлена дополненная реальностьДля первого безопасного маршрута выбрать маркеры из группы ?Безопасный маршрут №1?, для второго безопасного маршрута – из группы ?Безопасный маршрут №2?, для пути движения автомобилей – из группы ?Путь движения автомобилей?Наклеить маркеры, начиная с 1 по порядку номеров по ходу маршрута обязательно на различные повороты пути. Максимальное расстояние между соседними маркерами не больше 20 см. Нельзя смешивать между собой маркеры из разных групп на одном пути Разработка мобильного приложения с использованием технологии дополненной реальностиМобильное приложение на платформе Android создано с помощью Unity, с использованием пакета разработки Vuforia SDK и Microsoft Visual Studio для редактирования скриптов, написанных на языке C#. При использовании C# все классы скриптов должны явно наследовать базовый класс MonoBehaviour. MonoBehaviour является базовым классом, из которого происходит каждый скрипт в Unity. Он позволяет использовать в скрипте различные функции, такие как Start (вызывается при старте работы скрипта), Update (вызывается каждый кадр), OnCollisionEnter (вызывается, когда один объект соприкоснулся с другим) и т.д. Была построена одна сцена в Unity проекте, которая содержит в себе:Directional Light – игровой объект, содержащий в себе компонент инспектор света Light. Свет является основной частью графического отображения, так как он определяет затенение объекта и тени, которые он бросает. Этот компонент можно настраивать различным образом: выбрать тип света, цвет, интенсивность, тип и размер теней и т.д. По умолчанию каждая новая Unity сцена содержит направленный свет (Directional Light), который создает эффект солнечного света, его можно рассматривать как дальний источник света. Направленный свет не имеет никакой определенной позиции источника света и поэтому может быть размещен в любом месте сцены. Все объекты в сцене освещены всегда в одном и том же направлении. Расстояние света от целевого объекта не определен, поэтому свет не изменяется.ARCamera – префаб, содержащийся в Vuforia SDK, который необходимо добавить на сцену Unity проекта, чтобы создать приложение с использованием AR-технологии. Содержит в себе компоненты и скрипты, необходимые для отслеживания маркеров в реальном мире:Vuforia Behaviour включает в себя скрипт VuforiaBehaviour, который обрабатывает отслеживание, обновляет все трекинги на сцене. Здесь есть возможность задать некоторые параметры: добавить лицензионный код, установить приоритет качества или частоты кадров, определить, сколько целей можно отслеживать в поле зрения камеры одновременно, выбрать, какой объект на сцене будет служить в качестве начала координат (0,0,0) мирового пространства сцены.DefaultInitializationErrorHandler (Script) – пользовательский обработчик, который регистрирует ошибки инициализации Vuforia.WebCamBehaviour управляет использованием устройства веб-камеры.Frame Markers помечены тегом ?FrameMarker?, 45 префабов для каждого маркера, каждый из которых содержит в себе анимационную модель пешехода (или автомобиля) и настройки:Transform – компонент, который определяет позицию, поворот и масштаб каждого объекта в сцене. Turn Off Behaviour удаляет компоненты меша во время выполнения, но отображает их при работе в редакторе.Marker Behaviour – настройки маркера, именно здесь для каждого маркера задается соответствующий идентификатор.Mesh Filter – Меши составляют большую часть трёхмерных миров, Unity не имеет встроенных инструментов для моделирования геометрии. Но, несмотря на это, Unity поддерживает работу с мешами, которые состоят как из трёхсторонних, так и из четырёхсторонних полигонов. Компонент меш фильтр (mesh filter) берёт меш, указанный в параметрах, и передаёт его компоненту Mesh Renderer для последующего вывода этого меша на экран монитора.Mesh Renderer – компонент, который принимает меш из меш фильтра и выводит его на сцене в позицию, определяемую компонентом Transform объекта. Компоненту можно задать ряд свойств, в том числе материал для визуализации объекта. Для визуализации всех 45 маркеров было создано 45 материалов. DefaultTrackableEventHandler (Script) – пользовательский обработчик, реализующий интерфейс ITrackableEventHandler. Методы реализации функции ITrackableEventHandler вызываются при изменениях состояния отслеживания маркеров: OnTrackingFound() – объект найден, OnTrackingLost() – объект потерян. При каждом вызове методов определяется, к какой группе относится текущий найденный/потерянный маркер. Lr1Controller – игровой объект, управляющий безопасным маршрутом №1, содержит в себе скрипт DynamicHumanPoint1, который получает от обработчика DefaultTrackableEventHandler маркеры из группы №1, отслеживаемые в данный момент времени, и хранит их в массиве WayPoints. Контроллер помечен тегом ?WP1Controller?. Включает в себя компонент Line Renderer – компонент, принимающий массив WayPoints из двух или более точек, и рисующий прямую линию между каждым из них. Линии можно задать настройки, такие как цвет и ширина. В данном случае линия безопасного маршрута зеленого цвета. Линия всегда непрерывна; поэтому чтобы сделать несколько полностью отдельных линий маршрутов, использовалось несколько GameObjects, каждый со своим собственным компонентом Line Renderer: Lr1Controller для безопасного маршрута №1, Lr2Controller для безопасного маршрута №2 и CarController для пути движения автомобилей. Lr2Controller – игровой объект, аналогичный Lr1Controller, управляющий безопасным маршрутом №2, содержит в себе скрипт DynamicHumanPoint2, который получает от обработчика DefaultTrackableEventHandler маркеры из группы №2, отслеживаемые в данный момент времени, и хранит их в массиве WayPoints. Контроллер помечен тегом ?WP2Controller?. Также включает в себя аналогичный компонент Line Renderer, который соединяет между собой все соседние маркеры зеленой линией. Так, с помощью объектов Lr1Controller и Lr2Controller возможно одновременное отображение двух безопасных маршрутов. CarController – игровой объект, управляющий путем движения автомобилей, содержит в себе скрипт DynamicCarPoint, который получает от обработчика DefaultTrackableEventHandler маркеры из группы №3, отслеживаемые в данный момент времени. Контроллер помечен тегом ?CarController?. Этот объект не содержит в себе компонент Line Renderer, и используется только для хранения точек в массиве WayPoints.МоделиHuman (Пешеход) – Файл модели содержит 3D-модель тела пешехода-школьника (Рис. 12). Он также содержит данные анимации, которые импортируются как анимационный клип. Когда пешеход идет по безопасному маршруту, он передвигает ногами и руками. Чтобы привязать пешехода к маркерам безопасных маршрутов, модель добавляется на сцену путем перетаскивания во все игровые объекты Frame Markers с идентификаторами от 0 до 29. После этого к игровому объекту в соответствии с тем, к какому маршруту относится маркер, добавляется компоненты Human Move 1 (Script) и Human Move 2 (Script) – скрипты, управляющие движением пешеходов по безопасному пути. Скрипты получают точки от DynamicHumanPoint1 и DynamicHumanPoint2 соответственно и передвигают каждого пешехода на позицию следующей точки с определенной скоростью. Рис.12 ?Модель пешехода (Human)?Car (Автомобиль) – Файл модели содержит 3D-модель автомобиля (Рис. 13). Чтобы привязать автомобиль к маркерам пути движения автомобилей, модель добавляется на сцену путем перетаскивания во все игровые объекты Frame Markers с идентификаторами от 30 до 44. После этого к игровому объекту добавляется компонент Car Move (Script) – скрипт, управляющий движением автомобилей по дорогам. Скрипт получает точки от DynamicCarPoint и передвигает каждый автомобиль на позицию следующей точки с определенной скоростью.Рис.13 ?Модель автомобиля (Car)?Общая схема взаимодействия компонентов сцены и вид готовой сцены Unity представлены на рисунках 14 и 15 соответственно. Рис.14 ?Общая схема взаимодействия компонентов сцены?Рис.15 ?Вид готовой сцены Unity?Последний шаг – это собрать мобильное приложение под платформу Android, минимальная поддерживаемая версия Android 2.3.1. Это можно сделать с помощью Unity, установив Android SDK [14], на выходе получаем файл установки приложения на мобильное устройство с расширением .APK. В результате выполнения всех вышеописанных действий после того, как маркеры размещены на карте, можно навести камеру мобильного приложения на карту и увидеть 3D-демонстрацию маршрутов. Созданное мобильное приложение распознает соседние между собой маркеры и проводит между ними линию пути движения, по которым движутся 3D-объекты: пешеходы и автомобили (Рис. 16).Рис.16 ?3D-демонстрация маршрутов?ЗАКЛЮЧЕНИЕВ результате выполнения работы были изучены исследования о влиянии использования технологии дополненной реальности; были проанализированы результаты внедрения технологии дополненной реальности в процесс обучения школьников лицея-интерната №2 г. Казани безопасным маршрутам, находящимся в непосредственной близости от образовательного учреждения. Из этого можно сделать вывод, что внедрение дополненной реальности в процесс обучения действительно улучшает знания учащихся.Также была определена схема автоматизации, были рассмотрены инструменты и решения, которые применились для реализации автоматизированного построения карты с дополненной реальностью. С помощью выбранных инструментов было разработано мобильное приложение с использованием дополненной реальности, которое отображает дополненную реальность на любых дорожных картах в общеобразовательных учреждениях, правильно определяет, где на карте находятся безопасные маршруты, дороги.Цель – автоматизировать процесс построения интерактивной 3D-карты ?Паспорт безопасности? в образовательных учреждениях достигнута. Автоматизированное построение интерактивной 3D-карты ?Паспорт безопасности? позволит внедрить технологию дополненной реальности в процесс обучения любого образовательного учреждения без лишних затрат.Из этого можно сделать вывод, что в результате работы был внесен вклад в решение изначально поставленной проблемы. Также внедрение технологии дополненной реальности во все общеобразовательные учреждения позволит сократить количество несчастных случаев, а ученикам позволит безопаснее добираться до школ, т.е. данная работа вносит вклад в решение такой актуальной проблемы, как дорожно-транспортные происшествия с участием детей.СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВAk?ay?r G. & Ak?ay?r M. (2016). Advantages and challenges associated with augmented reality for education: A systematic review of the literature. Review of Education, 20 (2017), 1-11Ak?ay?r M., Ak?ay?r G., Pektas H. M., & Ocak M. A. (2016). Augmented reality in science laboratories: The effects of augmented reality on university students' laboratory skills and attitudes toward science laboratories. Computers in Human Behavior, 57 (2016), 334-342I-Jui Lee, Chien-Hsu Chen, Kuo-Ping Chang (2016). Augmented reality technology combined with three-dimensional holography to train the mental rotation ability of older adults. Computers in Human Behavior, 65 (2016), 488-500Sevda Kü?ük, Samet Kapakin, Yüksel G?kta? (2016). Learning anatomy via mobile augmented reality: Effects on achievement and cognitive load. Anatomical Sciences Education, 9 (2016), 411-421Ng Giap Weng, Oon Yin Bee, Lee Hong Yew, Teoh Ee Hsia (2016). An Augmented Reality System for Biology Science Education in Malaysia. International Journal of Innovative Computing, 6:2 (2016), 8-13Fadzidah Abdullah, Mohd Hisyamuddin Bin Kassim, Aliyah Nur Zafirah Sanusi (2017). Go Virtual: Exploring Augmented Reality Application in Representation of Steel Architectural Construction for the Enhancement of Architecture Education. Advanced Science Letters, 23:2 (February 2017), 804-808Приложение EstudiAR в Google Play - [Электронный ресурс] – Режим доступа: , свободныйUnity [Электронный ресурс] – Режим доступа: , свободныйVuforia [Электронный ресурс] – Режим доступа: , свободныйMicrosoft Visual Studio [Электронный ресурс] – Режим доступа: , свободныйAdobe Photoshop [Электронный ресурс] – Режим доступа: , свободныйVuforia Target Manager [Электронный ресурс] – Режим доступа: , свободныйOptimizing Target Detection and Tracking Stability [Электронный ресурс] – Режим доступа: , свободныйAndroid SDK [Электронный ресурс] – Режим доступа: , свободныйПРИЛОЖЕНИЯПриложение 1. Тест на знание маршрута от лицея-интерната до общежития.Вопрос №1. Выберете верный маршрут, который не нарушает ни одного правила дорожного движения.1.2.3.4.Вопрос №2. Выберете регулируемые перекрестки (со светофором).1.2.3.4.Вопрос №3. Выберете места наличия пешеходного перехода (зебры).1.2.3.Приложение 2. Набор маркеров и инструкция к размещению их на карте.Приложение 3. DefaultTrackableEventHandler.csusing UnityEngine;using System;namespace Vuforia{ public class DefaultTrackableEventHandler : MonoBehaviour, ITrackableEventHandler { private TrackableBehaviour mTrackableBehaviour DynamicHumanPoint1 dwp1; DynamicHumanPoint2 dwp2; DynamicCarPoint dcp; void Start() { mTrackableBehaviour = GetComponent<TrackableBehaviour>(); if (mTrackableBehaviour) { mTrackableBehaviour.RegisterTrackableEventHandler(this); } dwp1 = GameObject.FindGameObjectWithTag("WP1Controller").GetComponent<DynamicHumanPoint1>(); dwp2 = GameObject.FindGameObjectWithTag("WP2Controller").GetComponent<DynamicHumanPoint2>(); dcp = GameObject.FindGameObjectWithTag("CarController").GetComponent<DynamicCarPoint>(); } public void OnTrackableStateChanged( TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus) { if (newStatus == TrackableBehaviour.Status.DETECTED || newStatus == TrackableBehaviour.Status.TRACKED || newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED) { OnTrackingFound(); } else { OnTrackingLost(); } } bool added=false; private void OnTrackingFound() { Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true); Collider[] colliderComponents = GetComponentsInChildren<Collider>(true); foreach (Renderer component in rendererComponents) { component.enabled = true; } foreach (Collider component in colliderComponents) { component.enabled = true; } if(!added && Convert.ToInt32(this.gameObject.name) <= 29) { if (Convert.ToInt32(this.gameObject.name) <= 14) { dwp1.wayPoints.Add(this.gameObject); dwp1.Draw(); } else { dwp2.wayPoints.Add(this.gameObject); dwp2.Draw(); } added = true; } else { dcp.wayPoints.Add(this.gameObject); added = true; } Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found"); } private void OnTrackingLost() { Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true); Collider[] colliderComponents = GetComponentsInChildren<Collider>(true); foreach (Renderer component in rendererComponents) { component.enabled = false; } foreach (Collider component in colliderComponents) { component.enabled = false; } if (added && Convert.ToInt32(this.gameObject.name) <= 29) { if (Convert.ToInt32(this.gameObject.name) <= 14) { dwp1.wayPoints.Remove(this.gameObject); dwp1.Draw(); } else { dwp2.wayPoints.Remove(this.gameObject); dwp2.Draw(); } added = false; } else { dcp.wayPoints.Add(this.gameObject); added = true; } Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost"); } }}DynamicHumanPoint1.csusing UnityEngine;using System.Collections;using System.Collections.Generic;using System;public class DynamicHumanPoint1 : MonoBehaviour{ public List<GameObject> wayPoints; List<GameObject> newPoints; public LineRenderer lr; void Start() { lr = new LineRenderer(); lr = gameObject.AddComponent<LineRenderer>(); wayPoints = new List<GameObject>(); StartCoroutine(drawLine()); } IEnumerator drawLine() { int i = 0; wayPoints.Sort((a, b) => a.pareTo(b.name)); lr.material.color = Color.green; lr.SetVertexCount(CheckCount()); for (i = 0; i < CheckCount(); i++) { if (i == 0) { lr.SetPosition(i, wayPoints[i].transform.position); } else { if (Convert.ToInt32(wayPoints[i].name) - Convert.ToInt32(wayPoints[i - 1].name) == 1) { lr.SetPosition(i, wayPoints[i].transform.position); } } } yield return null; } public int CheckCount () { int k = 0; for (int i = 0; i < wayPoints.Count; i++) { if (i == 0) { k++; } else { if (Convert.ToInt32(wayPoints[i].name) - Convert.ToInt32(wayPoints[i - 1].name) == 1) { k++; } else { break; } } } return k; } public void Draw() { StartCoroutine(drawLine()); }}DynamicHumanPoint2.csusing UnityEngine;using System.Collections;using System.Collections.Generic;using System;public class DynamicHumanPoint2 : MonoBehaviour{ public List<GameObject> wayPoints; public LineRenderer lr; void Start() { lr = new LineRenderer(); lr = gameObject.AddComponent<LineRenderer>(); wayPoints = new List<GameObject>(); StartCoroutine(drawLine()); } IEnumerator drawLine() { int i = 0; wayPoints.Sort((a, b) => a.pareTo(b.name)); lr.material.color = Color.green; lr.SetVertexCount(CheckCount()); for (i = 0; i < CheckCount(); i++) { if (i == 0) { lr.SetPosition(i, wayPoints[i].transform.position); } else { if (Convert.ToInt32(wayPoints[i].name) - Convert.ToInt32(wayPoints[i - 1].name) == 1) { lr.SetPosition(i, wayPoints[i].transform.position); } } } yield return null; } public int CheckCount() { int k = 0; for (int i = 0; i < wayPoints.Count; i++) { if (i == 0) { k++; } else { if (Convert.ToInt32(wayPoints[i].name) - Convert.ToInt32(wayPoints[i - 1].name) == 1) { k++; } else { break; } } } return k; } public void Draw() { StartCoroutine(drawLine()); }}DynamicCarPoint.csusing UnityEngine;using System.Collections;using System.Collections.Generic;using System;public class DynamicCarPoint : MonoBehaviour{ public List<GameObject> wayPoints; public LineRenderer lr; void Start() { lr = new LineRenderer(); lr = gameObject.AddComponent<LineRenderer>(); wayPoints = new List<GameObject>(); StartCoroutine(drawLine()); } IEnumerator drawLine() { int i = 0; wayPoints.Sort((a, b) => a.pareTo(b.name)); lr.material.color = Color.green; lr.SetVertexCount(wayPoints.Count); for (i = 0; i < wayPoints.Count; i++) { if (i == 0) { lr.SetPosition(i, wayPoints[i].transform.position); } else { if (Convert.ToInt32(wayPoints[i].name) - Convert.ToInt32(wayPoints[i - 1].name) == 1) { lr.SetPosition(i, wayPoints[i].transform.position); } } } yield return null; } public void Draw() { StartCoroutine(drawLine()); }}HumanMove1.csusing UnityEngine;using System.Collections;using System.Collections.Generic;using System;public class HumanMove1 : MonoBehaviour{ public List<GameObject> points; DynamicHumanPoint1 dwp; public float speed = 3f; void Start() { points = new List<GameObject>(); dwp = GameObject.FindGameObjectWithTag("WP1Controller").GetComponent<DynamicHumanPoint1>(); } int currentPoint = 0; void Update() { points = dwp.wayPoints; points.Sort((a, b) => a.pareTo(b.name)); if (CheckCount(points) > 1) { if (currentPoint < CheckCount(points)) { if (Vector3.Distance(transform.position, points[currentPoint].transform.position) > 0.3f) { transform.LookAt(points[currentPoint].transform); transform.position += transform.forward * Time.deltaTime * speed; } else { currentPoint++; if (currentPoint == CheckCount(points)) { currentPoint = 0; transform.position = points[currentPoint].transform.position; } } } } } public int CheckCount(List<GameObject> points) { int k = 0; for (int i = 0; i < points.Count; i++) { if (i == 0) { k++; } else { if (Convert.ToInt32(points[i].name) - Convert.ToInt32(points[i - 1].name) == 1) { k++; } else { break; } } } return k; }}HumanMove2.csusing UnityEngine;using System.Collections;using System.Collections.Generic;using System;public class HumanMove2 : MonoBehaviour{ public List<GameObject> points; DynamicHumanPoint2 dwp; public float speed = 3f; void Start() { points = new List<GameObject>(); dwp = GameObject.FindGameObjectWithTag("WP2Controller").GetComponent<DynamicHumanPoint2>(); } int currentPoint = 0; void Update() { points = dwp.wayPoints; points.Sort((a, b) => a.pareTo(b.name)); if (CheckCount(points) > 1) { if (currentPoint < CheckCount(points)) { if (Vector3.Distance(transform.position, points[currentPoint].transform.position) > 0.3f) { transform.LookAt(points[currentPoint].transform); transform.position += transform.forward * Time.deltaTime * speed; } else { currentPoint++; if (currentPoint == CheckCount(points)) { currentPoint = 0; transform.position = points[currentPoint].transform.position; } } } } } public int CheckCount(List<GameObject> points) { int k = 0; for (int i = 0; i < points.Count; i++) { if (i == 0) { k++; } else { if (Convert.ToInt32(points[i].name) - Convert.ToInt32(points[i - 1].name) == 1) { k++; } else { break; } } } return k; }}CarMove.csusing UnityEngine;using System.Collections;using System.Collections.Generic;using System;using System.Threading;public class CarMove : MonoBehaviour { public List<GameObject> points; DynamicCarPoint dcp; public float speed = 4f; void Start() { points = new List<GameObject>(); dcp = GameObject.FindGameObjectWithTag("CarController").GetComponent<DynamicCarPoint>(); } int currentPoint = 0; void Update() { points = dcp.wayPoints; points.Sort((a, b) => a.pareTo(b.name)); if (CheckCount(points) > 1) { if (currentPoint < CheckCount(points)) { if (Vector3.Distance(transform.position, points[currentPoint].transform.position) > 0.3f) { transform.LookAt(points[currentPoint].transform); transform.position += transform.forward * Time.deltaTime * speed; } else { currentPoint++; if (currentPoint == CheckCount(points)) { currentPoint = 0; transform.position = points[currentPoint].transform.position; } } } } } public int CheckCount(List<GameObject> points) { int k = 0; for (int i = 0; i < points.Count; i++) { if (i == 0) { k++; } else { if (Convert.ToInt32(points[i].name) - Convert.ToInt32(points[i - 1].name) == 1) { k++; } else { break; } } } return k; }} ................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.