将探索如何将微软的两项令人惊叹的技术——Azure云服务和HoloLens混合现实头显——结合起来,创造出令人难以置信的体验。
Microsoft Azure是一个安全的云解决方案,允许快速构建可扩展的Web应用程序。它易于使用,提供大量可定制的服务,并且在全球50个地区提供服务。
Microsoft HoloLens是一款尖端的混合现实头显,自2016年以来即将迎来其首次重大更新。HoloLens能够映射周围的3D空间,并将全息图投影到眼前,让能够以自然的方式与它们互动。
回想一下,每个Azure教程中都包含的简单待办事项列表演示。请继续关注,因为将向展示如何在HoloLens上实现这个示例。
将开发一个简单的混合现实应用程序,具有以下功能:
可以在GitHub上获取源代码。
要运行演示,需要一台安装了以下软件的Windows 10电脑:
可以在HoloLens设备或HoloLens模拟器上运行应用程序。
是时候开始了!假设已经打开了Unity3D和Visual Studio。
如果使用正确的工具,复杂任务可以变得简单。有几个工具将帮助简化流程。
第一个是Unity3D的Azure SDK。Azure SDK是一个Unity插件,允许连接到远程应用服务并更新数据。下载Unity包并将其导入Unity编辑器。
将使用的第二个插件是微软的混合现实工具包。混合现实工具包(以前称为“HoloToolkit”)包括大量的全息控制和界面构建元素,包括光标、空间映射、手势检测等。
Azure SDK和混合现实工具包可以顺利地协同工作。
现在Unity编辑器有了所需的插件,创建一个空场景并添加4个对象:
在现实世界场景中,应该已经部署了Azure服务和数据库。对于演示,为设置了一个Azure服务:
private string mobileAppUri = "https://testtodolightbuzz.azurewebsites.net";
该服务包括一个带有待办事项的虚拟数据库。待办事项由TodoItem C#类表示:
public class TodoItem
{
[JsonProperty(PropertyName = "id")]
public string Id { get; set; }
[JsonProperty(PropertyName = "text")]
public string Text { get; set; }
[JsonProperty(PropertyName = "complete")]
public bool Complete { get; set; }
}
要获取待办事项,需要创建一个Azure服务客户端,一个Azure服务数据访问对象,以及待办事项的列表:
private LightBuzzMobileServiceClient azureClient;
private AppServiceTableDAO todoTableDAO;
private List todoItems;
现在可以在Unity的Start()方法中连接到远程服务并获取数据:
// Initialize Azure
azureClient = new SampleMobileClient(mobileAppUri, supportLocalDatabase);
await azureClient.InitializeLocalStore();
// Retrieve the items from the server
todoTableDAO = new AppServiceTableDAO(azureClient);
todoItems = await todoTableDAO.FindAll();
提示:Unity3D的Azure SDK还允许将数据存储在本地。这对于开发HoloLens应用程序至关重要,因为互联网连接可能并不总是可用的。因此,能够在设备上存储数据并在稍后与云端同步是一个救星。
现在,数据可以很容易地显示在Unity 3D用户界面中。源代码附带了一个HoloLensClickableElement预制件。HoloLensClickableElement是一个可以使用简单的HoloLens手势与之交互的对象。以下是如何实例化它:
private HoloLensClickableElement tile;
for (int i = 0; i < todoItems.Count; i++)
{
TodoItem item = todoItems[i];
HoloLensClickableElement obj = Instantiate(tile);
obj.Setup(item);
}
让深入了解HoloLensClickableElement类。如何与3D全息图交互?答案是使用空中点击手势。空中点击是目前在3D空间中“点击”对象的唯一方式。
微软已经做了令人难以置信的工作,将所有必要的功能暴露在一个易于使用的API中。多亏了混合现实工具包,所要做的就是实现IInputClickHandler接口:
public class HoloLensClickableElement : MonoBehaviour, IInputClickHandler
{
public void OnInputClicked(InputClickedEventData eventData)
{
Debug.Log("Item Clicked");
}
}
再次,可以在GitHub上找到完整的源代码。为了简单起见,在这里没有包括所有的源代码。完整的源代码还包括事件处理程序和聚焦元素的动画。
现在让把所有东西都放在一起:
HoloLensClickableElement监听空中点击手势。
当检测到空中点击手势时,应该将待办事项标记为“完成”。
让扩展HoloLensClickableElement类,包括对待办事项的引用:
public class HoloLensClickableElement : MonoBehaviour, IInputClickHandler
{
public event EventHandler OnClick;
public TodoItem Item { get; set; }
public void Setup(TodoItem item)
{
Item = item;
}
public void OnInputClicked(InputClickedEventData eventData)
{
OnClick?.Invoke(this, new EventArgs());
}
}
之后,所需要做的就是订阅Clicked事件:
HoloLensClickableElement obj = Instantiate(tile, new Vector3(x, y, z), Quaternion.identity);
obj.Setup(item);
obj.OnClick += async (sender, e) =>
{
HoloLensClickableElement source = sender as HoloLensClickableElement;
await todoTableDAO.Delete(source.Item);
};
就是这样!数据库现在已更新。
还有一个最后一步:将应用程序部署到HoloLens设备(或模拟器)。为此,请导航到Unity菜单并选择以下选项:
点击“应用”,然后转到文件 → 构建设置来创建UWP项目。耐心等待Unity构建项目。
最后,在Visual Studio中打开生成的项目,连接HoloLens设备,然后点击运行按钮。
有关构建和部署HoloLens项目的完整教程,请参阅关于为UWP构建项目的HoloLens入门文章。
想要成为混合现实和云计算的专家吗?专家从基础开始:
软件开发工具包(开源):
更多教程和指南: