Введение в UrhoSharp для HoloLens
HoloLens является устройством дополнительной реальности, которое позволяет комбинировать реальный мир с виртуальными объектами. Когда разрабатывают под HoloLens, зачастую используют Unity3D и HoloLens SDK. Unity это коммерческий продукт и не бесплатный для коммерческого использования. Однако, другим вариантом будет использование UrhoSharp, портированной Xamarin версии открытого движка Urho3D для .Net.
Установка
Даже если у вас нет лишней кучи денег для покупки HoloLens, есть эмулятор, который поможет вам легко начать. Скачать его можно здесь.
После этого, вы можете создать свой первый UrhoSharp проект, используя готовый шаблон:
Выберите HoloLens Emulator и запустите приложение.
Вы должны будете увидеть запущенный эмулятор и Луну на орбите Земли.
Портал устройства
Прежде чем углубиться в код, стоит отметить портал устройства. Нажмите кнопку “открыть портал устройства” на панели эмулятора.
Вам будет представлен портал, который имеет много полезной информации и функций, таких как ведение журнала и т.п.
Приложение HoloLens
В этом простом примере у вас есть Луна и Земля. Две сферы, одна вращается вокруг другой. В введение в UrhoSharp и перемещение 3D объектов в UrhoSharp я вдавался в подробности создания базовых объектов.
Отличием приложения для HoloLens, будет наследование от SteroApplication
.
public class HelloWorldApplication : StereoApplication
Как и в любом UrhoSharp приложении, у вас есть сцена, и вы создаете дочерние объекты. После того, как дочерний элемент будет создан, вы можете добавлять к нему текстуры и действия. Чтобы получить больше информации об этом, посмотрите предыдущие статьи по UrhoSharp.
// создаем узел "Земля"
earthNode = Scene.CreateChild();
HoloLens принимает ввод с помощью жестов, поэтому мы можем переопределить эти события. Чтобы имитировать жесты в эмуляторе, обратите внимание на эту статью.
public override void OnGestureManipulationStarted() =>
earthPosBeforeManipulations = earthNode.Position;
public override void OnGestureManipulationUpdated(Vector3 relativeHandPosition) =>
earthNode.Position = relativeHandPosition + earthPosBeforeManipulations;
public override void OnGestureTapped() { }
public override void OnGestureDoubleTapped() { }
Конечно, HoloLens позволяет намного больше чем просто отображение виртуальных объектов. Он также принимает голосовой ввод, распознавание жестов, и коммуникация с веб-сервисами. Примером может быть использование Azure Cognitive Services для распознавания лиц.
Узнать больше
Этот был очень простой взгляд на то, как начать работать с HoloLens и UrhoSharp. Чтобы начать вникать глубже, посмотрите на примеры использования UrhoSharp с HoloLens, которые включают в себя танцующего мутанта, взаимодействие с когнитивными сервисами и многое другое.