HoloLens开发的需求与标准总结

相关资料

HoloLens SDK地址: https://github.com/Microsoft/MixedRealityToolkit-Unity
XR:https://docs.unity3d.com/Manual/VROverview.html

技术

HoloLens 的使用场景主要受限于现在还不成熟的CV技术,所以 HoloLens 只能在小型室内、中等光照、较简洁的空间里使用。HoloLens 的slam技术,官方叫 spatial mapping 。每秒钟会『拍』5帧画面,然后对周围的空间进行『学习』和『理解』。

功能

HoloLens的基本功能

凝视,语音,手势,空间定位
(a) 摄像头看到的图像,即当前场景的 color buffer。
(b) 当前场景的深度图,depth map 或 z buffer。
(c) SLAM 合成后的三维场景,这个场景所在的空间下文我们暂且称为 Holo Space,它可能是以乐高方块的形式表示,也可能是用三角形来表示。
(d) HoloLens 设备在 Holo Space 中的坐标 (x, y, z)、朝向 (tx, ty, tz)。
(e) 手势识别的结果,类似 HRESULT OnGestureDetected(DWORD dwHandId, DWORD dwEventId, LPVOID lpUserInfo) 的样子。
(f) 语音识别的结果,类似 HRESULT OnVoiceRecognized(std::string& strSentence, FLOAT confidence) 的样子。

HoloLens设置

打开硬件接口

  1. Settings;
  2. Update&Security;
  3. ForDevelopers中打开Deverlorper mode;
  4. 打开Device Portal;

安装安全证书

  1. 在网页上输入HoloLens的IP地址;
  2. Home页面右上角SECURITY;
  3. 选择Download this device’s certificate下载安全证书;
  4. 有些可以双击安装;
  5. 或者Microsoft Edge进入网页,使用IE打开;
  6. Internet选项;
  7. 选择内容 — 证书 — 受信任的根证书;
    8.点击“导入…”按钮,弹出证书导入向导,点击下一步;
  8. 选择证书路径,打开,下一步,下一步,导入完成;

HoloLens与电脑的连接方式

  1. 通过wifi连接;
  2. 通过USB线连接,地址:127.0.0.1:10080;
    注:使用USB2.0的口;

开发环境的配置

  1. 系统要求Windows10;
  2. 安装VS2015及以上;
    注:Windows个人版是不能使用HoloLens模拟器的;

电脑设置

  1. 打开Windows设置;
  2. 打开更新和安全;
  3. 找到针对开发人员;
  4. 打开开发人员模式;

安装VS的注意事项

  1. 使用自定义项目安装;
  2. 将“通用Windows应用开发工具”全部勾选;
  3. 然后再找到“通用工具”;
    4.然后勾选“Visual Studio扩展工具Update 3”;

安装Unity的注意事项

  1. 必须安装“Windows Store .NET Scripting Backe”和“Windows Store IL2CPP Scripting Backe”

Unity中的设置

Microsoft Holographic平台的Unity项目与其他平台的Unity项目并没有太大的不同,除了一些明显的例外:
确保您打算跟踪HoloLens设备位置的相机在巡视窗口中被标记为主相机。场景中的默认相机应已被正确标记。
将主相机的背景属性设置为纯色,而不是默认的天空盒。将背景颜色设置为(0,0,0,0)。
在编辑 > 项目设置 > 质量中使用最快的质量设置。这最大限度地提高了性能并降低了功耗。尤其是软阴影和阴影级联在HoloLens上使用太昂贵,应该避免使用。
根据应用程序使用的子系统启用适当的发布标志。

资源需求

  1. 图片:建议PNG格式。
  2. 模型:FBX格式。
  3. 贴图:建议Tga格式。
  4. 音频:建议MP3格式。
  5. 视频:建议MP4格式。

图片

  1. Hololens应用的图标,固定大小465*465。
  2. Hololens启动面板的图片,固定大小930*450像素。
  3. Hololens应用启动画面,图片尺寸不固定(但是画面显示时会自动缩放为正方正形)。
  4. 程序中的UI。
  5. UI:进度条背景与进度条。
  6. 功能面板及凝视时的提示图片。

模型注意事项

1. 需要低面数模型

a. 实时光照同场景控制在10W面以内。
b. 不同实时光照同场景控制在20W面以内。
c. 面数是指三角面“Tris”。

2. 在建模阶段把缩放等内容处理好。

a. 建模阶段的单位尺寸和Unity保持一致使用米为单位。
b. 调整好模型的大小。
c. 坐标轴放在模型下方。

3. 贴图

a. Hololens中要使用光照贴图。
b. 贴图种类尽量少一些。
c. Shader最好使用微软Hololens官方实例中提供的Shader。

ProjectSetting

Company Name
ProductName:app的显示的名称

Icon

Tile—Short name:将应用添加到主菜单的时候的名称;

应用图标 (旧版本,适用于Windows version 17134.111.x86fre.rs4_release_svc_prod1.180605-2350)

Icon:是在Square 310*310
1. Scale 100% 310*310
2. Scale 125% 388*388
3. Scale 150% 465*465
4. Scale 125% 620*620 **

启动画面

Splash Image
Vitual Reality Splash Image:启用画面

启动面板

在Windows
Scale 150%(930*450pix)

性能

指标 目标
帧速率 60fps
功耗 一分钟内平均功耗处于HoloLens Device Portal性能工具图标中的橙色和绿色区域。如图9中Power部分
内存 总提交内存小于900M

为HoloLen开发应用与开发传统桌面应用是完全不同的,因为用户会在物理世界中移动,所以为了使得全息图像能有逼真的体验,必须快速的刷新用户视图。用户每只眼睛看到的视图是不同的,所以我们必须在能模拟物理法则的情况下,以最低的延迟来刷新用户视野,避免全息图形相对真实世界发生漂移。全息场景的渲染管道和第一人称视角的3D游戏的渲染管道是相似的,60fps对HoloLens也是理想的指标,当应用的帧速率接近或达到60fps时,实时低延迟的渲染会让全息场景会达到最佳的视觉体验,看起来会更接近很真实物体。

在应用开发周期中,60fps的目标是我们应该最先努力达成,只有在满足帧速率后,才应当去考虑功耗的优化。而且当画面的帧速率远低于60fps时,此时测出的功耗会有较大的误差。

性能优化建议

全息应用和其他图形应用一样,视图的复杂度会严重影响渲染性能,因此为了尽可能达到60fps,我们首先关注的应该是对视图复杂度的优化。对于HoloLens而言,视图复杂度的优化应当关注以下方面:

模型面数

场景中的3D模型的面数越多,虽然在视觉效果上会越精细越动人,但也意味着会消耗更多的计算和存储资源,对设备的负担越大。当场景中模型的面数过多时,会导致帧速率大幅降低,用户会明显感到画面出现延迟、卡顿,这对于全息场景而言是致命的。在这种情况下,在保证观看效果的情况下,模型的面数越少越好。从我个人的实践经验来看,整个场景中,总渲染面数应当控制在10-20万以内。

着色器Shader

Shader对于图形渲染是至关重要的组件,在HoloLens上也是我们优化的重点。一般来讲,工具生成的通用shader一般太过复杂,很多内容对HoloLens无用,因此我们可以使用高阶着色器语言(HLSL)来自己编写shader,提高视图的渲染效率。Unity3D自带的shader不被推荐使用,取而代之的是推荐使用HoloToolkit-Unity项目中的经过精简优化的shader。

此外,切换shader渲染不同的全息图像对性能的代价非常大,推荐应当对Draw Call进行排序,使得能顺序渲染具有同一着色器的对象,减少切换shader的次数,提高渲染效率。

手势

  • IFocusable

    for focus enter and exit. The focus can be triggered by the user’s gaze or any other gaze source.
    凝视聚焦事件,当视线进入或离开物体的触发

  • IHoldHandle

    for the Windows hold gesture.
    处理Hold手势事件

  • IInputHandler

    for source up and down. The source can be a hand that tapped, a clicker that was pressed, etc.
    处理点击过程中的按下和松开事件

  • IInputClickHandler

    for source clicked.
    The source can be a hand that tapped, a clicker that was pressed, etc.
    处理点击事件

  • IManipulationHandler

    for the Windows manipulation gesture.
    处理手势操纵事件,事件返回手势偏移量

  • INavigationHandler

    for the Windows navigation gesture.
    处理手势导航事件,事件返回手势偏移量,值域[-1, 1]

  • ISourceStateHandler

    for the source detected and source lost events.
    处理事件源的状态监测,比如:手势离开检测区域

  • ISpeechHandler

    for voice commands.
    处理语音命令(5.5.1f1新增)

  • IDictationHandler

    for speech to text dictation.

  • IGamePadHandler

    for generic gamepad events.

  • IXboxControllerHandler

    for Xbox One Controller events.

语音输入

语音是HoloLens三种主要输入形式之一。它可以让你直接命令一个全息图,而不必使用手势。你只是注视全息图并说出你的命令。语音输入可以是一种自然的方式来传达你的意图。语音特别擅长遍历复杂的接口,因为它可以让用户用一个命令切换嵌套菜单。
语音输入由支持所有其他通用Windows应用程序中的语音的相同引擎驱动。

What can I say?
Go home | Go to Start - instead of bloom to get to Start Menu
Launch
Move here
Take a picture
Start recording
Stop recording
Increase the brightness
Decrease the brightness
Increase the volume
Decrease the volume
Mute | Unmute
Shut down the device
Restart the device
Go to sleep
What time is it?
How much battery do I have left?
Call (requires HoloSkype)

————————————————开发过程中查阅的资料和自己的一些总结;————————————————

猜你喜欢

转载自blog.csdn.net/qq_28772769/article/details/82662091