Хабр, привет! Продолжаем рассказывать о прошлогодних финалистах нашего конкурса студенческих стартапов IT ImagineCup. Сегодня у нас есть победители Приза зрительских симпатий: VR-HistoryTeam. Они создали VR-платформу, с помощью которой люди могут изучать историю, находясь в ее гуще.
Предоставляю слово автору.Серия посвященная Imagine Cup 2018
1. Психологический портрет с помощью нейросети и обычной камеры .2. Изучение истории без изучения книг .
Введение
Всем привет! Меня зовут Максим Еремин, я студент МАИ и студенческий партнер Microsoft. Я хотел бы рассказать о своем VR-проекте и о том, как обычная университетская поделка, сделанная для конкурса, может стать стартапом.Я начну с малого.
О соревнованиях Imagine Cup я узнал от своего преподавателя Александра Поповкина в начале второго курса, который на тот момент тоже был MSP. В качестве темы мы сразу выбрали изучение истории с использованием VR, так как на тот момент категория VR была еще достаточно популярна и наш проект выглядел оригинально на фоне других.
В проекте участвовали мой однокурсник Сергей Посохин и приглашенный дизайнер Дарья Соколова.
Ознакомиться с составом нашей команды и презентацией вы можете на самом соревновании.
Здесь .
Разработка проекта
Основную часть нашего проекта мы разработали в Unity для мобильной платформы.Идея заключалась в том, что пользователь, будь то студент, школьник, посетитель музея или исторического места, надевает VR-шлем с телефоном, предварительно подключив джойстик VR-Park по Bluetooth, и начинает бродить по виртуальному историческому месту, находясь в гуще событий.
В нашем проекте мы реализовали реконструкцию сражения на Бородинском поле.
Поскольку проект задумывался как образовательный, помимо визуального контента для приложения было создано звуковое сопровождение, которое помогло пользователю освоиться в виртуальной реальности.
Дизайн проекта
Карту боя и все модели создал наш дизайнер Дарья Соколова.Одежда всех солдат взята из энциклопедического справочника о Великой Отечественной войне 1812 года.
Карта реализована совместно с историком Первого Московского учебного комплекса.
Модели разработаны в 3DMax.
Звуковое сопровождение
В нашем проекте много интерактивности.Помимо обычного блуждания по Бородинскому полю, вы можете подойти к солдату, пушке или Кутузову и послушать краткую историческую справку об объекте наблюдения.
И не только на русском, но и на английском.
С точки зрения программирования реализовать это было несложно.
Все, что мне нужно было сделать, это записать звук с помощью карты и запустить его по триггеру.
Триггером является Коллайдер объекта, к которому мы виртуально приближаемся.
Соответственно, пересечение этого коллайдера и прозрачного «луча», исходящего из «нашего» «носа», вызывает воспроизведение звука.
И примерно один и тот же код выполнялся каждый раз для каждого объекта, с которым можно взаимодействовать.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 года во время Бородинской битвы.
Режим Autowalk предполагает перемещение пользователя.
В 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 с Unity
Ключевую задачу в нашем проекте выполняет сервис Azure Mobile Engagement, который помогает нам не терять пользователей.Идея состоит в том, чтобы собрать статистику посещения зон, на которые была разделена вся карта.
Для проекта мы реализовали три зоны — лагерь Кутузова, артиллерийский полк и пехотный разведывательный отряд. В облако отправлялась статистика о том, сколько раз пользователь посещал эти зоны и на основании этого каждое новое появление пользователя в приложении сопровождалось его спавном в той точке, где пользователю было наиболее интересно находиться.
Для реализации этой идеи мы использовали специальный пакет Mobile Engagement для Unity. EngagementAgent.Initialize();
EngagementAgent.StartActivity("Borodino");
EngagementAgent.SendSessionEvent("sessionEvent");
Теги: #Разработка стартапов #vr #microsoft #Microsoft Azure #Разработка для AR и VR #startup #unity #azure #2017 #2018 #stories #virtual #history #vs #reality #imagine #cup
-
О Компании Веб-Решений
19 Oct, 24 -
Как Читать Отчеты Ит-Компаний
19 Oct, 24 -
Праздник Или Выходной?
19 Oct, 24