- PVSM.RU - https://www.pvsm.ru -
Здравствуйте, дорогие читатели!
В этом году на конференции Microsoft //Build [1] представлено не только много технологических анонсов и нововведений, но и не мало интересных возможностей на самом мероприятии.
HoloLens и Holographic Academy, Xbox One Developer Mode и подробности интересных технологических проектов с финала Imagine Cup США — об этом я хочу рассказать вам в данной статье.
Microsoft совместно с NASA представили совместный проект по изучению Марса посредством использования устройства HoloLens под названием: “Destination: MARS”.
На конференции присутствовал большой стенд с демонстрацией высадки на марс, где каждый посетитель, получивший билет на демо, мог почувствовать себя в облике исследователя Марса.
Прошло несколько лет, и у NASA появилось много различных данных, снимков, анализов поверхности и атмосферы марса.
Весь материал, полученный с curiosity и его предшественников, был использован для воссоздания точной поверхности марса. Именно на неё ты попадаешь во время демонстрации “Destination: MARS”.
В самой NASA все возможности и инструменты HoloLens используются для изучения марса и планирования маршрута и деятельности Curiosity на «красной планете». Это те же самые инструменты разработки [2], которые каждый разработчик уже сейчас может установить к себе на компьютер и начать работать в эмуляторе над созданием голограмм.
Попадая в комнату примерно 25 кв. м., все участники располагаются по комнате и, после небольшого вступления, попадают на 3d модель поверхности марса. Демонстрация даёт прочувствовать, а каково находится на «красной планете», когда ты стоишь на её земле.
Можно ходить, рассматривать все объекты вокруг, увидеть сам марсоход Сuriosity в том числе.
Параллельно с этим появляются 3d модели сотрудников NASA, которые поясняют и рассказывают происходящее вокруг и всю историю проекта в целом.
За счёт мощного процессора для HoloLens можно использовать модели любой степени качества, в шлеме модель отобразится именно такой, какой её создали.
На сайте [4] представлена более подробная картина с визуализацией всех частей, из которых состоит HoloLens.
В прошлом году на //Build 2015 была впервые представлена академия разработки под HoloLens – Holographic Academy. Это целых 4.5 часа интересного обучения созданию голограмм для Microsoft HoloLens с нуля.
За все 3 дня из всех посетителей в 2015г. на неё смогло попасть только ~180 человек, в том числе и мне улыбнулась удача.
На академии шаг за шагом обучали как разрабатывать голограммы, и исследовался опыт использования именно “персональных голограмм”: каждый человек разрабатывает свою персональную голограмму и взаимодействует с ней, никак не может повлиять на голограмму другого человека.
Перед началом академии всех просили подписать разрешение на использование фото и видео материалов, т.к. на академии камеры стояли в каждом углу. Все устройства мы сдали в сейфы и проходили через рамку металлоискателя, чтобы дополнительно просканировать, осталось ли что-то в карманах.
Затем идёт немаловажный процесс – измерение расстояния между глазами и дальности видимости, т.к. каждое устройство HoloLens программно настраивается персонально под человека.
Академия в себя включала следующие этапы:
Уже сейчас можно начать разрабатывать под HoloLens, установив инструменты разработки [6].
Не существует специального HoloLens SDK, все инструменты для работы с голограммами уже встроены в Visual Studio 2015 Update 2 & Windows 10 SDK (версия 1511 и выше).
Что вам потребуется:
Далее необходимо сконфигурировать сконфигурировать [10] проект Unity для HoloLens.
Конфигурация проекта:
Capabilities | API |
WebCam | PhotoCapture and VideoCapture |
SpatialPerception | SurfaceObserver and SpatialAnchor |
Microphone | VideoCapture, DictationRecognizer, GrammarRecognizer, and KeywordRecognizer |
picturesLibrary / videosLibrary / musicLibrary | PhotoCapture и VideoCapture |
В HoloLens определенно несколько стандартных жестов, которые позволяют взаимодействовать с голограмми:
Комбинаций движений и стандартных жестов могут дать следующие более сложные жесты:
Microsoft уже опубликовало ресурсы прошлого года, вы можете скачать [11] и попробовать самим воссоздать проект, используя эмулятор.
Unity предоставляет как низкоуровневый доступ (чистая информация о координатах и скорости), так и высокоуровневый распознаватель жестов, который предоставляет более комплексные события жестов (например: tap, double tap, hold, manipulation и navigation).
Ввод жестов (Gesture Input)
Namespace: UnityEngine.VR.WSA.Input
Типы: GestureRecognizer, GestureSettings, InteractionSourceKind
Высокоуровневые жесты генерируются с помощью источников ввода. Каждый Gesture event предоставляет SourceKind для ввода, в том числе и позиционирование луча головы (про который упоминалось выше) во время активации события. Некоторые события предоставляют дополнительную контекстную информацию.
Требуется всего-лишь несколько шагов, чтобы осуществить захват жестов с использованием Gesture Recognizer:
GestureRecognizer recognizer = new GestureRecognizer();
recognizer.SetRecognizableGestures(GestureSettings.Tap | GestureSettings.Hold);
recognizer.TappedEvent += MyTapEventHandler;
recognizer.HoldEvent += MyHoldEventHandler;
recognizer.StartCapturingGestures();
recognizer.StopCapturingGestures();
void OnDestroy()
{
recognizer.TappedEvent -= MyTapEventHandler;
recognizer.HoldEvent -= MyHoldEventHandler;
}
Ввод взаимодействия (Interaction Input)
Namespace: UnityEngine.VR.WSA.Input
Типы: InteractionManager, SourceState, Source, InteractionSourceProperties, InteractionSourceKind, InteractionSourceLocation
Как ранее говорилось, низкоуровневый ввод предоставляет возможность получить больше информации об объекте ввода, такой как координаты позиции и скорость в мире.
InteractionManager.SourcePressed += InteractionManager_SourcePressed;
void InteractionManager_SourcePressed(SourceState state)
{
// state has information about:
// targeting head ray at the time when the event was triggered
// whether the source is pressed or not
// properties like position, velocity, source loss risk
// source id (which hand id for example) and source kind like hand, voice, controller or other
}
InteractionManager.SourcePressed -= InteractionManager_SourcePressed;
using UnityEngine.VR.WSA.Input;
void Start ()
{
InteractionManager.SourceDetected += InteractionManager_SourceDetected;
InteractionManager.SourceUpdated += InteractionManager_SourceUpdated;
InteractionManager.SourceLost += InteractionManager_SourceLost;
InteractionManager.SourcePressed += InteractionManager_SourcePressed;
InteractionManager.SourceReleased += InteractionManager_SourceReleased;
}
void OnDestroy()
{
InteractionManager.SourceDetected -= InteractionManager_SourceDetected;
InteractionManager.SourceUpdated -= InteractionManager_SourceUpdated;
InteractionManager.SourceLost -= InteractionManager_SourceLost;
InteractionManager.SourcePressed -= InteractionManager_SourcePressed;
InteractionManager.SourceReleased -= InteractionManager_SourceReleased;
}
void InteractionManager_SourceDetected(SourceState state)
{
// Source was detected
// state has the current state of the source including id, position, kind, etc.
}
void InteractionManager_SourceLost(SourceState state)
{
// Source was lost. This will be after a SourceDetected event and no other events for this source id will occur until it is Detected again
// state has the current state of the source including id, position, kind, etc.
}
void InteractionManager_SourceUpdated(SourceState state)
{
// Source was updated. The source would have been detected before this point
// state has the current state of the source including id, position, kind, etc.
}
void InteractionManager_SourcePressed(SourceState state)
{
// Source was pressed. This will be after the source was detected and before it is released or lost
// state has the current state of the source including id, position, kind, etc.
}
void InteractionManager_SourceReleased(SourceState state)
{
// Source was released. The source would have been detected and pressed before this point. This event will not fire if the source is lost
// state has the current state of the source including id, position, kind, etc.
}
Также с помощью небольшого кода мы добавили взаимодействие со свёртком газеты и произведением оригами. Если посмотреть на объект, а потом “нажать” на него, то происходило следующее:
Объект падал на виртуальный бумажный самолётик, скатывался по нему на реальный стол, катился по этому столу и падал на реальный пол и продолжал дальше катиться с учётом всей физики движения! А также в конце объект может стукнуться об вашу стопу, если вы преградите объекту путь.
Ведь когда объекты находятся вне нашей зоны видимости, одним из способов, которым мы можем воспринимать то, что происходит вокруг нас, это звук. Для наилучшего опыта смешанной реальности аудио движок HoloLens обеспечивает звук путем симуляции 3D звука с использованием направления, расстояния и моделирования окружающей среды.
Как добавить пространственный звук в ваш проект:
И всё, ваш Unity проект теперь может использовать пространственный звук (Spatial Sound).
И всё, ваш Unity проект теперь может использовать пространственный звук (Spartial Sound).
Minimum gain (Минимальное усиление)
Минимальное усиление применимо (от -96 до +12 децибел) на любую дистанцию. Изначальное значение: -96 децибел.
Maximum gain (Максимальное усиление)
Максимальное усиление применимо (от -96 до +12 децибел) на любую дистанцию. Изначальное значение: +12 децибел.
Unity gain distance (Дистанция усиления Unity)
Дистанция, в метрах (от 0.05 до бесконечности), в которой усиление равно 0 децибел. Изначальное значение: 1 метр.
Room Size (Размеры комнаты)
Размеры комнаты, которые могут быть симулированы с помощью плагина. Приблизительные размеры комнат: маленькая (от офисной комнаты до маленького конференц-зала), средняя (большой конференц-зал) и большая (аудитория). Также можно поставить значение none для имитации внешней среды (вне здания). По умолчанию комната маленькая.
Пример
The HoloToolkit for Unity provides a static class that makes setting the Spatial Sound settings easy. This class can be found in the HoloToolkitSpatialSound folder and can be called from any script in your project. It is recommended that you set these parameters on each Audio Source component in your project. The following example shows selecting the medium room size for an attached Audio Source.
AudioSource audioSource = gameObject.GetComponent<AudioSource>()
if (audioSource != null) {
SpatialSoundSettings.SetRoomSize(audioSource, SpatialMappingRoomSizes.Medium);
}
</source lang>
<b>Прямой доступ к параметрам из Unity</b>
Ещё один способ изменить данные параметры вручную. Скопируйте это в скрипт SetHRTF.cs, который вы прикрепите к каждому HRTF AudioSource. После этого вы можете менять параметры посредством кода.
<source lang="cs">
using UnityEngine;
using System.Collections;
public class SetHRTF : MonoBehaviour {
public enum ROOMSIZE { Small, Medium, Large, None };
public ROOMSIZE room = ROOMSIZE.Small; // Small is regarded as the "most average"
// defaults and docs from MSDN
// https://msdn.microsoft.com/en-us/library/windows/desktop/mt186602(v=vs.85).aspx
public float mingain = -96f; // The minimum gain limit applied at any distance, from -96 to + 12
public float maxgain = 12f; // The maximum gain applied at any distance, from -96 to + 12
public float unityGainDistance = 1; // The distance at which the gain applied is 0dB, from 0.05 to infinity
public float bypassCurves = 1; // if > 0, will bypass Unity's volume attenuation and make a more accurate volume simulation automatically in the plugin
AudioSource audiosource;
void Awake()
{
audiosource = this.gameObject.GetComponent<AudioSource>();
if (audiosource == null)
{
print("SetHRTFParams needs an audio source to do anything.");
return;
}
audiosource.spread = 0; // we dont want to reduce our angle of hearing
audiosource.spatialBlend = 1; // we do want to hear spatialized audio
audiosource.SetSpatializerFloat(1, (float)room); // 1 is the roomsize param
audiosource.SetSpatializerFloat(2, mingain); // 2 is the mingain param
audiosource.SetSpatializerFloat(3, maxgain); // 3 is the maxgain param
audiosource.SetSpatializerFloat(4, unityGainDistance); // 4 is the unitygain param
audiosource.SetSpatializerFloat(5, bypassCurves ); // 5 is bypassCurves, which is usually a good idea
}
}
Для этого достаточно прописать несколько строчек, чтобы HoloLens ожидал от вас какого-либо звука, и ввести на английском языке, на какую команду необходимо реагировать, и какова будет реакция.
Разбёрем по порядку, как реализовать голосовой ввод:
using UnityEngine.Windows.Speech;
using System.Collections.Generic;
using System.Linq;
Затем добавим несколько полей в ваш класс для хранения распознавателя и словаря keyword->action:
KeywordRecognizer keywordRecognizer;
Dictionary<string, System.Action> keywords = new Dictionary<string, System.Action>();
Теперь добавим ключевое слово (keyword) в словарь (например внутри метода Start()). В данном примере мы добавим ключевое слово «activate»:
//Добавляем ключевые слова для распознавания
keywords.Add("activate", () =>
{
// здесь будут находиться действия, которые активируются после распознавания фразы
});
Создайте KeywordRecognizer и задайте ему, что мы хотим распознавать:
keywordRecognizer = new KeywordRecognizer(keywords.Keys.ToArray());
Подпишитесь на событие OnPhraseRecognized:
keywordRecognizer.OnPhraseRecognized += KeywordRecognizer_OnPhraseRecognized;
Пример:
private void KeywordRecognizer_OnPhraseRecognized(PhraseRecognizedEventArgs args)
{
System.Action keywordAction;
//Если ключевое слово есть в нашем словаре, то вызываем keywordAction.
if (keywords.TryGetValue(args.text, out keywordAction))
{
keywordAction.Invoke();
}
}
Наконец, запускаем распознавание:
keywordRecognizer.Start();
После создания своей грамматики SRGS, и помещения её в проект в папку StreamingAssets [13]:
<PROJECT_ROOT>/Assets/StreamingAssets/SRGS/myGrammar.xml
Создаем GrammarRecognizer и пропускаем через него наш файл SRGS:
private GrammarRecognizer grammarRecognizer;
grammarRecognizer = new GrammarRecognizer(Application.streamingDataPath + "/SRGS/myGrammar.xml");
Подписываемся на событие OnPhraseRecognized:
grammarRecognizer.OnPhraseRecognized += grammarRecognizer_OnPhraseRecognized;
Вы получите информацию в соответствии с вашей SRGS грамматикой, которую вы можете без проблем обработать. Большинство необходимой информации будет предоставлено в массиве semanticMeanings.
private void Grammar_OnPhraseRecognized(PhraseRecognizedEventArgs args)
{
SemanticMeaning[] meanings = args.semanticMeanings;
// сделать что-то
}
Запускаем распознавание:
grammarRecognizer.Start();
Требуется всего пару шагов для реализации DictationRecognizer:
dictationRecognizer = new DictationRecognizer();
Сначала подписываемся на событие DictationResult:
dictationRecognizer.DictationResult += DictationRecognizer_DictationResult;
Затем обрабатываем вызов DictationResult:
private void DictationRecognizer_DictationResult(string text, ConfidenceLevel confidence)
{
// действия
}
Сначала подписываемся на событие DictationHypothesis:
dictationRecognizer.DictationHypothesis += DictationRecognizer_DictationHypothesis;
Затем обрабатываем вызов DictationHypothesis:
private void DictationRecognizer_DictationHypothesis(string text)
{
// действия
}
Сначала подписываемся на событие DictationComplete:
dictationRecognizer.DictationComplete += DictationRecognizer_DictationComplete;
Затем обрабатываем вызов DictationComplete:
private void DictationRecognizer_DictationComplete(DictationCompletionCause cause)
{
// действия
}
Сначала подписываемся на событие DictationError:
dictationRecognizer.DictationError += DictationRecognizer_DictationError;
Затем обрабатываем вызов DictationError:
private void DictationRecognizer_DictationError(string error, int hresult)
{
// действия
}
dictationRecognizer.Start();
Чтобы завершить работу распознавателя необходимо отписаться от событий и применить метод Dispose():
dictationRecognizer.DictationResult -= DictationRecognizer_DictationResult;
dictationRecognizer.DictationComplete -= DictationRecognizer_DictationComplete ;
dictationRecognizer.DictationHypothesis -= DictationRecognizer_DictationHypothesis ;
dictationRecognizer.DictationError -= DictationRecognizer_DictationError ;
dictationRecognizer.Dispose();
На академии в данном случае мы запрограммировали так, чтобы после слов “Drop it” предмет, на который ты смотришь, падал на поверхность. (например, свёрток газеты). В примере, указанном выше, этим словом являлось «Activate».
Представьте, он строит сетку мира, каждого объекта (на величину своего угла обзора) моментально, буквально за миллисекунды! Это очень феерично!
Затем мы сделали возможность переноса стола с оригами на любую поверхность, хоть даже в другой конец зала академии.
Это настолько реально, что хотелось дотронутся до этого мира, но увы, реальный пол мешает это сделать.
Затем предложили поместить кому-нибудь данный ассет на голову. После этого весь тот мир, который мы видели в дыре, переходит в наш реальный мир. Уже озираясь вокруг мимо вас пролетают бумажные самолетики, вокруг деревья, плещется вода, и вы можете взаимодействовать со всем этим миром.
После каждого этапа нам выдавали “достижение” за проделанную работу, что приносило ещё больше позитива в процесс обучения разработки.
Одно видео из академии:
Во время академии у каждого участника (с его согласия) брали интервью, спрашивали об ощущениях, какие проекты хотелось бы разработать под HoloLens и многие другие вопросы. И можно было подписаться на участие в дальнейших исследованиях по HoloLens.
По окончании академии все участники получают статус “Holographic Developer”.
На //Build 2016 также проводилась Holographic Academy, но только для представителей прессы и тех, кто предзаказал устройство HoloLens Development Edition [14]. Пока что программа предзаказа доступна только для разработчиков из США и Канады, стоимость самого устройства 3000 $.
Если в прошлом году главной темой было “персональные голограммы”, то в этот раз – “общие голограммы”, т.е. доступные для взаимодействия одновременно всем участникам. Все видят единственную голограмму и взаимодействуют с ней.
Здесь также шаг за шагом Microsoft обучал участников, как создавать голограммы и взаимодействовать с ними в течении ~4 часов.
В конечном итоге получалась игра, в которой все участники, находясь в едином мире, уничтожают врагов посредством огненных шаров, все взаимодействуют с одной и той же голограммой и друг с другом.
Как и в прошлый раз это не только другой уникальный опыт, но и полезное исследование для Microsoft.
В заключение темы Holographic Academy я очень рекомендую вам всё сконфигурировать, попробовать создать свои голограммы и посмотреть их на эмуляторе. А также пройти некий похожий путь академии по данной ссылке [15].
Как известно, Microsoft наконец-то представили Xbox One Developer Mode, позволяющей тестировать UWP приложенияигры на Xbox One.
Данная возможность находится в стадии Preview, для установки необходимо скачать специальное приложение Dev Mode Activation.
На конференции //Build 2016 был целый стенд The Garage, на котором можно было опробовать консоли, которые сконвертированы в DevKit именно таким образом.
Что предоставляет Developer Preview:
При этом вы получаете полноценные возможности по разработке и тестированию ваших UWP приложенийигр на Xbox One. Но есть одна особенность: для того чтобы выпустить игру на Xbox One или использовать все мощности консоли, вам всё-равно будет надо зарегистрироваться в программе ID@Xbox [16].
Перед активацией в первую очередь необходимо убедиться, что у вас консоль в режиме Retail. К сожалению, нельзя участвовать в двух Preview программах одновременно.
Если вы в Xbox One Preview программе, то через приложение Xbox Preview Dashboard -> Registration вам надо выйти из Preview программы.
Этот процесс может затянуться, т.к. Preview обновление должно выйти в стадию Release, после этого вас переключат в Retail режим.
Теперь приступим к Dev Mode:
Зайдите на developer.microsoft.com/xboxactivate [17] и авторизуйтесь в ваш Dev Center аккаунт.
После ввода кода ваш Xbox One начнёт процесс активации и после этого консоль начнёт устанавливать необходимое программное обеспечение.
Осталось нажать на «Switch and Restart».
На PC вам потребуется установить:
В этом году на конференции проходил американский финал технологического конкурса Imagine Cup [18] для студентов. До этого проходили региональные финалы по городам США, из которых избранные проекты перешли в американский финал.
У участников была очень насыщенная программа, начиная от приветствия в арендованном ресторане вечером 29 апреля, встречей с Сатья Нанделла и мастер-классов крутых спикеров в остальные дни; заканчивая показом проектов в самом “сердце” //Build, питчами и церемонией награждения.
Я успел изучить несколько проектов Imagine Cup во время их выставки на конференции.
Достаточно необычная игра для планшетов. Есть возможность выбора персонажа с своим уникальным набором характеристик: Fire, Water, Wood, Number, Capacity.
Cоздана на движке Unity [19] для Windows платформ.
Сайт проекта [20]
По игровому процессу игра напомнила мне Trine, если играть за персонажа Зою. Сразу заметно, чем вдохновлялись.
Cоздана на движке Unity [19] для Windows платформ.
Сайт проекта [21]
Чем больше игроков играет, тем игра становится забавнее. В демке уже было много разнообразных уровней, возможно сделают и редактор уровней.
Cоздана на движке Unity [19] для Windows платформ.
Сайт проекта [22]
Создатели вдохновлялись японской настольной игрой “Advance Wars”. Очень необычная игра для США и Европы, но неплохо играется на планшете.
Cоздана на движке Unity [19] для Windows платформ.
Сайт проекта [23]
Сайт проекта [26]
Далее буквы переходят в Arduino, где Arduino управляет отдельными серводвигателями, которые перемещают контакты Брайля вверх и вниз на основании букв сообщения.
Есть в общей сложности два блока Брайля, и каждый блок имеет шесть контактов Брайля. Два блока Брайля чередуют буквы, чтобы продемонстрировать возможности воспроизведения всех букв на заключительной версии дисплея Брайля.
С ‘дисплея’ человек с проблемами зрения может тактильно считать получившееся слово.
На фотографии – третий прототип устройства, но на //Build был представлен уже четвертый прототип, более портативный. Команда постоянно взаимодействует с фокус группами и сообществами людей с проблемами зрения, что даёт им ценную обратную связь.
Сайт проекта [27]
Сайт проекта [28]
Весь последний день проходила презентация проектов [29] перед судьями – представителями индустрии. В завершении дня была церемония награждения, в которой не только назвали победителей, но и победители ещё раз рассказали полностью о своём проекте и показали его в действии.
Победители
Категория | Команда | Проект |
Социальные проекты | BoloVR | B.E.S.T. Police Training simulator [30] |
Игры | Mild Beast Games | Sundown [22] |
Инновации | HealthX | HealthX [31] |
У HealthX технология представляет собой комплексное решение для офтальмологических клиник и их пациентов, направленных на диагностику и лечение амблиопии, широко известной как «ленивый глаз». Амблиопия является наиболее распространенной причиной потери зрения среди детей.
Каждая победившая команда получила в качестве приза 4000$ и прошла в международный полуфинал, где будет определёно по одному проекту от каждой страны, которые поедут на международный финал Imagine Cup.
Стоит отметить, что российский финал Imagine Cup будет проходить уже 23 апреля [32] в Москве в Digital October.
Спасибо за внимание!
Если появятся какие-нибудь вопросы или что-то хочется узнать поподробнее, обязательно напишите, всегда отвечу. До новых встреч!
Автор: Draconifore
Источник [33]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka/118301
Ссылки в тексте:
[1] //Build: http://build.microsoft.com
[2] инструменты разработки: https://developer.microsoft.com/windows/holographic/install_the_tools
[3] Bluetooth Clicker: https://developer.microsoft.com/en-us/windows/holographic/working_with_accessories
[4] сайте: https://www.microsoft.com/microsoft-hololens/en-us/hardware
[5] Unity: http://unity3d.com/ru/
[6] инструменты разработки: https://developer.microsoft.com/en-us/windows/holographic/install_the_tools
[7] Visual Studio 2015 Update 2: http://dev.windows.com/downloads
[8] HoloLens Emulator: http://go.microsoft.com/fwlink/?LinkID=724053
[9] Unity HoloLens Technical Preview Beta 10: http://aka.ms/HoloLensUnity
[10] сконфигурировать: https://developer.microsoft.com/en-us/windows/holographic/unity_development_overview
[11] скачать: https://github.com/Microsoft/HolographicAcademy/archive/Holograms-101.zip
[12] SRGS: https://msdn.microsoft.com/en-us/library/hh378349(v=office.14).aspx
[13] StreamingAssets: http://docs.unity3d.com/Manual/StreamingAssets.html
[14] HoloLens Development Edition: https://www.microsoft.com/microsoft-hololens/en-us/development-edition
[15] ссылке: https://developer.microsoft.com/en-us/windows/holographic/holograms_101
[16] ID@Xbox: http://www.xbox.com/en-US/developers/id
[17] developer.microsoft.com/xboxactivate: https://developer.microsoft.com/xboxactivate
[18] Imagine Cup: https://www.imaginecup.com
[19] Unity: https://unity3d.com/ru
[20] Сайт проекта: http://max79137913.wix.com/nova
[21] Сайт проекта: http://www.prinistae.com
[22] Сайт проекта: http://sundown-game.com
[23] Сайт проекта: https://grimgob.wordpress.com
[24] SnakEscape: http://goo.gl/j0F5T2
[25] Lost Story: The last days of Earth: http://goo.gl/bvhVAR
[26] Сайт проекта: http://bestpolicetraining.com
[27] Сайт проекта: http://devpost.com/software/tactile-par4yx
[28] Сайт проекта: http://benguin.net/REST/
[29] презентация проектов: https://channel9.msdn.com/Events/ImagineCup/USA
[30] B.E.S.T. Police Training simulator: http://bestpolicetraining.com/
[31] HealthX: http://www.healthx.com
[32] 23 апреля: https://events.techdays.ru/ImagineCup-2016/final/
[33] Источник: https://habrahabr.ru/post/281539/
Нажмите здесь для печати.