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



Цикл, посвященный Imagine Cup 2018


1. Психологический портрет с помощью нейросети и обычной камеры.
2. Изучение истории без штудирования книг.

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

Введение


Всем привет! Меня зовут Максим Еремин и я являюсь студентом МАИ и студентом-партнером 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

Комментарии (3)


  1. RouR
    19.02.2018 21:46

    Проект поможет лучше запомнить исторические моменты и сражения, находясь в гуще событий, и позволит прослушать информацию об объектах и личностях, находящихся на локации.
    В этом плане мне очень нравится игра Assassin's Creed. Вот там отличное погружение в историю. Возможность залезть чуть ли не в каждый угол города. Исторические справки об объектах архитектуры и личностях.


  1. opckSheff
    20.02.2018 07:51

    Замечательно, интересный проект, желаю вам успехов в дальнейшем развитии! Но в Play Market я ваше приложение так и не нашёл, а в статье нет ссылок на какой-нибудь apk. Где можно пощупать приложение?


    1. sahsAGU Автор
      20.02.2018 10:51

      Ребята сейчас ушли в B2B и пощупать пока нельзя, к сожалению.