...

понедельник, 19 февраля 2018 г.

Изучение истории без штудирования книг

Хабр, привет! Мы продолжаем рассказывать о прошлогодних финалистах нашего конкурса студенческих стартапов в сфере IT ImagineCup. Сегодня у нас обладатели приза зрительских симпатий: VR-HistoryTeam. Они создали VR-платформу, с помощью которой люди могут изучать историю, находясь в гуще событий.

Передаю слово автору.

Введение


Всем привет! Меня зовут Максим Еремин и я являюсь студентом МАИ и студентом-партнером Microsoft. Хотел бы рассказать о своем VR-ном проекте и о том, как обычная университетская поделка, выполненная для конкурса, может стать стартапом.

Начну с малого. О конкурсе Imagine Cup я узнал от своего преподавателя, Александра Поповкина, в начале второго курса, который тоже являлся MSP на тот момент. В качестве темы мы сразу выбрали изучение истории с помощью VR, поскольку тогда категория VR еще имела достаточную популярность и наш проект выглядел оригинально на фоне других. В проекте участвовал мой одногруппник Сергей Посохин и приглашенный дизайнер Дарья Соколова. С составом нашей команды и с презентацией на самом конкурсе вы сможете ознакомиться здесь.

Разработка проекта


Основную часть нашего проекта мы разрабатывали на Unity под мобильную платформу. Концепция заключалась в том, что пользователь, будь то студент, ученик школы, посетитель музея или исторического места, надевает VR шлем с телефоном, заранее подключив по Bluetooth джойстик VR-Park, и начинает бродить по виртуальному историческому месту, находясь в гуще события.

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

Дизайн проекта


Карта боя и все модели были реализованы нашим дизайнером Дарьей Соколовой. Одежда всех солдат была взята из справочника-энциклопедии о Великой отечественной войне 1812 года. Карта была реализована совместно с историком из Первого московского образовательного комплекса. Модели разрабатывались в 3DMax.

Звуковое сопровождение


В нашем проекте очень много интерактива. Помимо обычного скитания по Бородинскому полю, можно подойти к солдату, пушке или к Кутузову и прослушать краткую историческую справку об объекте наблюдения. Причем не только на русском, но и на английском языке. С точки зрения программирования, это было несложно реализовать. Понадобилось лишь записать звук с помощью карты и заставить запускаться по триггеру. Триггером служит Collider объекта, к которому мы виртуально приближаемся. Соответственно, пересечение этого коллайдера и прозрачного «луча», который идет от «нашего» «носа», вызывает воспроизведение звука.
void OnTriggerEnter(Collider other)
    {
if (other.gameObject.name == "Kutuzov")
        {
            zone.SetActive(false);
            if (Rus_Language == true)
            {
                Audio.clip = rus_kutuzov;
            } else
            {
                Audio.clip = eng_kutuzov;
            }
            Audio.Play();
        }
}

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

Режим экскурсии


В приложении существует два режима – экскурсия и свободный режим. Режим экскурсии позволяет пользователю отложить джойстик и насладиться интересной поездкой на лошади в 1812 году во время Бородинского сражения. Режим автопрогулки заключается в передвижении пользователя. На C# это выглядит примерно так:
    public Transform[] wayPointList;

    public int currentWayPoint = 0;
    Transform targetWayPoint;
    public GameObject Horse;

    public float speed = 0.02f;

    void Start()
    {
        wayPointList[0] = GameObject.Find("Point1").transform;
        wayPointList[1] = GameObject.Find("Point2").transform;
        wayPointList[2] = GameObject.Find("Point3").transform;
        targetWayPoint = wayPointList[0];
        Horse = GameObject.Find("Horse");
    }
    // Update is called once per frame
    void Update()
    {
        // check if we have somewere to walk
        if (currentWayPoint < this.wayPointList.Length)
        {
            if (targetWayPoint != null)
                walk();

        }
    }

    void walk()
    {
        // rotate towards the target
        transform.forward = Vector3.RotateTowards(transform.forward, targetWayPoint.position - transform.position, speed, 0.0f);

        // move towards the target
        transform.position = Vector3.MoveTowards(transform.position, targetWayPoint.position, speed);

        if (transform.position == targetWayPoint.position)
        {
            targetWayPoint.gameObject.SetActive(false);
            currentWayPoint++;
            targetWayPoint = wayPointList[currentWayPoint];
            if (currentWayPoint == 1)
            {
                Horse.transform.Rotate(0, 0, -90);
            }
            
        }
    }

Azure Mobile Engagement with Unity


Ключевую задачу в нашем проекте выполняет сервис Azure Mobile Engagement, который помогает нам не терять пользователей. Суть заключается в сборе статистики посещения зон, на которые была поделена вся карта. Для проекта мы реализовали три зоны – лагерь Кутузова, артиллерийский полк и Разведотряд пехотинцев. В облако отправлялась статистика о том, сколько раз пользователь посетил эти зоны и на основе этого, каждое новое появление пользователя в приложении сопровождалось спавном его в той точке, где пользователю было наиболее интересно находиться.

Для реализации этой идеи мы использовали специальный пакет Mobile Engagement для Unity.

 EngagementAgent.Initialize();
        EngagementAgent.StartActivity("Borodino");
        EngagementAgent.SendSessionEvent("sessionEvent");
         void OnTriggerEnter(Collider other)
        {
                if (other.gameObject.name == "Warning_Zone_1")
                {
                                    EngagementAgent.SendEvent("Russian_Artillery_Battarey_1");
        }
                else if (other.gameObject.name == "Warning_Zone_2")
                {
                        EngagementAgent.SendEvent("Kutusov's_Place");
                }
 }

Также мы реализовали push-уведомления, которые рассылаются пользователям раз в день, чтобы они снова начали пользоваться нашим приложением.

Апробация


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

Итоги


Работа над этим проектом помогла нам освоить Unity и разобраться в работе Mobile Engagement, потому что на тот момент для нас это был первый опыт создания проекта для такого конкурса, как Imagine Cup. На конкурсе мы получили две награды – второе место на региональном этапе и спецприз «Выбор зрителей» на всероссийском этапе конкурса.

Помимо этого, проект сейчас не стоит на месте! Мы не стали останавливаться и продолжили развивать тему VR в образовании. Сейчас проект переименован в VR-Education. В нем уже есть два направления – история и физика. Для истории послужил фундамент VR-History, а для физики – проект, созданный на хакатоне EdHack в mail.ru. Проект прошел заочную акселерацию во ФРИИ при поддержке IT-центра МАИ, где мы смогли улучшить нашу бизнес-модель и начинаем внедрение в школы нашего проекта.

Немного о команде


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

Кстати, тут вы можете посмотреть мини-интервью с ребятами.

Imagine Cup 2018


Крупнейший международный технологический конкурс от Microsoft, в котором вы можете побороться за приз в $100 000. Для этого нужно собрать команду до 3 человек, придумать и реализовать идею проекта в категории AI, Big Data, Mixed Reality и презентовать её нам.

Всю последнюю информацию можно найти в группе ВКонтакте и в канале Telegram.

Регистрируйтесь!

Вы из России: aka.ms/ImagineCup2018_ru
Вы из Казахстана: aka.ms/ImagineCup2018_kz
Вы из Беларуси: aka.ms/ImagineCup2018_by
Вы из другой страны: aka.ms/ImagineCup2018_ot

Let's block ads! (Why?)

Комментариев нет:

Отправить комментарий