admin 管理员组

文章数量: 887016

HoloLens 2 打包发布过程中 常见问题汇总(长期更新)

                  目 录

1. Unity 中发布Hololens的时候界面变灰,提示无发布权限。

2. Unity发布UWP过程中莫名失败,error: "IOException: Win32 IO returned 234"

3. Unity发布UWP过程中提示SDK找不到或版本不足。

4.在导出VS文件后向设备发布时,出现提示找不到WindowsMobileSDK。

5.当电脑和Hololens处于一个局域网中,想要使用远程设备发布时发现之前Hololens1远程设备发布时填写IP地址的选项找不到。

6.导入MRTK和TextMeshPro资源后依旧Console面板飚红。

7.在Unity编辑器中点击运行按钮测试正常,发布后部分或全部场景内容丢失。

8.发布到设备后发现有些内容只在单目中渲染显示。

9.其它未知原因,例如商店中的应用无法下载,运行速度变慢,未知原因发布失败,远程连接失败等。

10.VS部署程序报错:无法找到v142的生成工具,具体报错:error MSB8020: 无法找到 v142 的生成工具(平台工具集 =“v142”)。若要使用 v142 生成工具进行生成,请安装 v142 生成工具。

11.HoloLens 2 真机报错,测试时一切正常,上传到真机就会报错。


1. Unity 中发布Hololens的时候界面变灰,提示无发布权限。

原因:Unity Hub的许可证错误(不一定是过期,有效期内也可能出现这种情况)。

解决办法:如果许可证未过期,关闭Unity编辑器,回到Unity Hub,在页面下方点击“MANAGE LICENSE”,在License页面中点击CHECK FOR UPDATES,问题解决。如果许可证已过期请重新申请许可证。

 

2. Unity发布UWP过程中莫名失败,error: "IOException: Win32 IO returned 234"

原因:这种情况原因不唯一,但大几率是项目文件夹的路径过长或是存在非英文字符

解决办法一:把项目文件夹移动到纯英文字符且较短的路径中。尽量靠近驱动器根目,主要原因文件名字太长了,直接删掉C:\Program Files (x86)\Windows Kits\10\References\10.0.17763.0\Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract\2.0.0.0\Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract.winmd 文件

解决办法二:把问题报错的这个目录下:v2020.08.25 update
C:\Program Files (x86)\Windows Kits\10\References\10.0.17763.0\Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract\2.0.0.0\Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract.winmd 这个文件重命名1.winmd 这样源文件不但没有报错,遇到的不能导出问题完美解决!

问题深入描述链接

 

3. Unity发布UWP过程中提示SDK找不到或版本不足。

原因:Windows10SDK安装的路径过长或者存在非英文字符。

解决办法:将已安装的Windows10SDK完全卸载,并且将VisualStudio 2019完全卸载。重新安装时要单独下载Windows10SDK的安装包,在安装VS之前选择纯英文字符的较短路径安装Windows10SDK。笔者是安装在了C:/W10SDK路径中。注意不要使用Visual Studio2019来安装Windows10SDK。否则会导致SDK安装进默认路径中。

 

4.在导出VS文件后向设备发布时,出现提示找不到WindowsMobileSDK。

原因:系统默认的Windows10SDK的路径下,没有对应的所需文件。

解决方法:

A.如果你的C盘足够大,那么找到之前安装Windows10SDK的路径,在其中找到“Extension SDKs”文件夹。将这个文件夹整个拷贝到路径C:\Program Files (x86)\Windows Kits\10\中,这个方法可以一劳永逸的解决此问题。

B.如果你的C盘已经空间不足。那么在出现这个错误提示后,关闭VS项目,找到报错对应的.vcxproj文件。将其中的代码:“<SDKReferenceInclude="WindowsMobile, Version=10.0.17763.0" />”删除或注释掉,保存关闭。这个方法不推荐,但可以暂时解决此问题。

C:把下载的WindowsMobile SDK从下载的目录,[Windows Kit Root Dir]\10\Extension SDKs\WindowsMobile

拷贝到 C:\Program Files (x86)\Windows Kits\10\Extension SDKs\

问题深入描述链接

 

5.当电脑和Hololens处于一个局域网中,想要使用远程设备发布时发现之前Hololens1远程设备发布时填写IP地址的选项找不到。

原因:Hololens 2的发布设置变更。

解决办法:在发布目标的下拉框中找到项目属性-配置属性-调试,在右侧面板的“计算机名”的后方输入Hololens 2的IP地址。

 

6.导入MRTK和TextMeshPro资源后依旧Console面板飚红。

原因:使用了较低的Unity版本。

解决办法:建议使用2019.3以上的版本。

 

7.在Unity编辑器中点击运行按钮测试正常,发布后部分或全部场景内容丢失。

原因:未知的配置错误或文件冲突。

解决办法:果断放弃该工程文件,开启新工程,将原本的资源、脚本场景等内容打包载入新的工程文件中。

 

8.发布到设备后发现有些内容只在单目中渲染显示。

原因:在Unity的PlayerSettings-XR Settings中下方的Stereo Rendering Mode(立体渲染模式)选择了SinglePass Instanced(单通道实例渲染)。而出错的内容所使用的Shader未进行相关的配置。

原理:在使用Hololens设备时,有两种常用的立体渲染模式:Single-passInstanced和Multi-pass。

Multi-Pass很好理解即普通的双目渲染,它会执行两次完整的pass渲染(每只眼睛一次)。但这种渲染方式会产生大量的cup工作量,这种渲染方式基本支持所有的shader,不需要对shader进行任何改变,但相应的它的性能消耗也是Single-pass Instanced渲染方式的两倍。

Single-Pass Instanced 即单目实例渲染,实例渲染一个单独pass,然后每一侧的Draw call都会使用这个实例化的Draw Call。这可以大大降低CPU的利用率,另外由于两边的Draw Call缓存有一致性,也可以稍微降低一些GPU的利用率。

解决办法:

A. 重新配置Shader:所有非内置Shader都需要进行修改才能适用于single passInstanced。具体操作步骤请参考Unity手册中Hololens立体渲染模式部分。非专业图形学工程师不建议采用这种方法

B. 将Stereo Rendering Mode更改为Multi-pass。极度不推荐!这种方式对本来就紧张的渲染性能雪上加霜。

C. 使用官方MRTK的内置Shader。极度推荐!官方MRTK中的内置Shader几乎囊括了所有将在Hololens中使用的效果,且性能方面有很好的优化。其示例路径在:MixedRealityToolkit.Examples/StandardShader/Scenes。

 

9.其它未知原因,例如商店中的应用无法下载,运行速度变慢,未知原因发布失败,远程连接失败等。

解决办法:逐一排查,优先排查常规性问题,例如Holoelns 2设备的系统是否有及时更新,开发电脑的系统是否为正版(推荐Windows10专业版),电脑与HoloLens 2设备的开发者选项是否开启等。

 

10.VS部署程序报错:无法找到v142的生成工具,具体报错:error MSB8020: 无法找到 v142 的生成工具(平台工具集 =“v142”)。若要使用 v142 生成工具进行生成,请安装 v142 生成工具。

解决办法:删除工程下隐藏的.vs文件夹,项目--重定解决方案目标 即可

问题深入描述链接

 

11.HoloLens 2 真机报错,测试时一切正常,上传到真机就会报错。

解决办法 :Player--Other Settings--Graphics jobs 设置为fales

 

欢迎遇到其他问题的小伙伴留言,此贴会长期更新!


以下内容为官方问答,详情。为了查看方便,整合到下面了!

目录

1.目前HoloLens相关的安卓、iOS应用似乎仅有Dynamic 365是一个模型查看软件,请问HoloLens官方有没有更多的移动端开发项目?类似于手机端HoloLens操控,或者用手机作为控制器之类?

2.如何做到戴上HoloLens之后,将处于不规则表面(比如曲面)的待处理的目标用高亮线把目标的轮廓标记出来

3.用MRTK开发安卓、苹果AR App有没有可行性,需要将Unity打包成Library嵌入到Flutter,有没有已经成功的案例,目前是否是成熟产品的可选技术方案

4.关于HoloLens第三方视角开发,如何导出第三人称视角视频

5.如何将HoloLens开放接口给第三方软件数据处理软件,并将反馈结果在HoloLens中显示

6.如何优化场景才能更好适配HoloLens

7.怎么将微软远程专家系统集成进自己应用中,作为一个整体使用

8.外接蓝牙键盘怎么使用输入法输入中文

9.如何把自建三维模型导入HoloLens中

10.多台设备如何实现空间坐标同步

11.HoloLens数字沙盘如何开发

12.HoloLens应用场景中的模型如何产生阴影效果

13.如何提高叠加物体定位的精度和稳定性

14.最新版本MRTK关于HoloLens 1代的配置文件适配问题

15.HoloLens 1代与Unity连接调试的前置条件有哪些

16.工业使用中OPC与产品接口相关参数

17.现在MRTK中的面板都是用的Quad Mesh面片,没有用UI,这样有什么好处

18.HoloLens因为没有配备GPS,请问在户外使用设备时,如何让其更高效的引导用户?SLAM还能是该问题的最佳方案吗

19.Spatial Mapping 里的场景理解是其核心技术之一,请问可否具体讲解一下它的使用逻辑和方法?以及其算法可否再次优化以带来更友好的创建数字内容的体验

20.怎么样实现远程标注

21.多台HoloLens实时视频通话该如何实现,后续能否出Demo

22.目前能否接入讯飞等中文语音识别,微软的好像无法识别中文

23.如何用Unity实现在HoloLens2中显示视频

24.怎样添加多个Anchor在人走动的过程中使3D模型更稳定?有没有用过World Locking,是怎么使用的

25.有没有PC Remote Rendering成功使用的经验,我们试过但是失败了,安装包安装到电脑上之后,连不到HoloLens View怎么办

26.HoloLens 2目前比较好的AR工具包是什么以及基本使用方法

27.如何较好地实现远程语音或视频传输功能

28.手机观看第三方视角能否进行直接交互

29.如何实现多设备共享场景展示与交互

30.有无API重置世界坐标原点

31.HoloLens 2,Vuforia代码进行录像只能录几秒吗

32.多个佩戴HoloLens 1或2的体验者集中操作时,以上帝视角拍摄时最优的硬件方案及网络布局方案是什么

33.在图像识别不理想的情况下,HoloLens 2是否支持局部空间扫描?另外,真实物体与虚拟物体的前后的遮挡关系如何以最低开发难度的方式解决?

34.纯黑色材质在HoloLens中渲染不出效果,被视为透明穿透显示现实空间,有什么好的解决办法遮挡住现实物体凸显黑色材质模型吗

35.如何实现环境扫描,让内容可以基于环境做交互,如何保存环境扫描数据,并上传网络,自己的服务器可以吗

36.如何让HoloLens识别所在房间并在房间设备上叠加虚拟信息

37.HoloLens的远程渲染,较大文件的HoloLens发布,是否可以放在云端,目前有什么比较好的的方法

38.如何在减少模型面数的情况下提高视觉效果

39.Microsoft Mixed Reality Toolkit和Unity Package Manager是如何配合使用的

40.HoloLens是否有远程渲染的解决方案,是否支持一台服务器同时渲染多个画面不同的HoloLens终端

41.HoloLens的摄像机矩阵,官方的Try Get Camera To World Matrix方法 只能是调用拍照时返回,我现在用的是微软Github上的Webrtc框架做的视频通讯,请问怎么能在视频时,实时获取摄像机的Try Get Camera To World Matrix和Try Get Camera To World Matrix的数据呢


1.目前HoloLens相关的安卓、iOS应用似乎仅有Dynamic 365是一个模型查看软件,请问HoloLens官方有没有更多的移动端开发项目?类似于手机端HoloLens操控,或者用手机作为控制器之类?

我们所了解到的是没有的。

 

2.如何做到戴上HoloLens之后,将处于不规则表面(比如曲面)的待处理的目标用高亮线把目标的轮廓标记出来

  • HoloLens的表面识别是有精度的,不能保证陶瓷这个大小的物体破损能够识别出来。MRTK缺省定义三种精度:粗糙、中等、精细,分别对应的精度为大平面、墙壁、物体遮挡。也可以自己设定每立方体单位三角面数。但是设定越精细则对性能的影响越大。以我们的经验来看,在茶杯级别的表面识别破损估计很难实现,而且对应能的冲击也很大。

  • 如果识别的破碎范围比较大,则可以参考MRTK项目里的Spatial Understanding里的代码自己根据不规则表面的特性做算法判断来标注破损边缘。

参考资料:https://github/microsoft/MixedRealityToolkit/tree/master/SpatialUnderstanding

 

3.用MRTK开发安卓、苹果AR App有没有可行性,需要将Unity打包成Library嵌入到Flutter,有没有已经成功的案例,目前是否是成熟产品的可选技术方案

可以使用MRTK + Unity AR Foundation来开发Android / iOS AR App,这个我们有实现过。但是没有将Unity打包成Library嵌入Flutter的经验。理论上都是可以按照以下步骤实现:

  • 把Unity项目打包成 Android / iOS native library。

  • 使用Flutter的Platform Channel特性调用Native Library。

参考资料:https://medium/xrpractices/embedding-unity-app-inside-native-android-application-c7b82245f8af

参考资料:https://medium/fluttervn/platform-channels-solution-for-using-a-native-library-in-flutter-3ccfabb97f30

 

4.关于HoloLens第三方视角开发,如何导出第三人称视角视频

第三方视角可以借用Vuforia来实现这样的功能,HoloLens和iPad都扫描一个图片,所有场景中的模型的位置全都相对于这个扫描图进行固定,这样两边设备中的模型都相对于这个扫描图的位置是固定的。这样即可实现第三方视角,也可以在iPad上用录屏的方式来录制第三方视角的视频。

 

5.如何将HoloLens开放接口给第三方软件数据处理软件,并将反馈结果在HoloLens中显示

HoloLens和第三方数据源的数据交换通常以HoloLens作为客户端,数据源作为服务器,使用HTTP Restful API / WebSocket / TCP 等协议来请求数据,再展示在HoloLens中。

 

6.如何优化场景才能更好适配HoloLens

请参考微软官方优化文档。

参考资料:https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/Performance/PerfGettingStarted.html

 

7.怎么将微软远程专家系统集成进自己应用中,作为一个整体使用

微软Dynamics RA没有办法作为SDK / Library级别嵌入第三方应用,但是微软Dynamics RA可以在后台运行,所以打开Dynamics RA连接远端,然后再打开第三方应用,远端即可看到第三方应用的内容。

 

8.外接蓝牙键盘怎么使用输入法输入中文

HoloLens支持鼠标键盘,可以输入中文,但是没有中文字符的联想功能,所以可能会无法选择到自己想要的文字。

 

9.如何把自建三维模型导入HoloLens中

按常规HoloLens开发流程,在Unity中导入模型,打包发布到HoloLens中即可。打个广告,我们有现成的多人协同系统和工作流程系统,可以直接上传模型,并在HoloLens里面查看。

 

10.多台设备如何实现空间坐标同步

有多种实现方式:

  • 多个HoloLens直接同步空间坐标,可以直接发送World Anchor信息进行同步,好处是可自动实现同步,无需客户操作。坏处是需要写比较复杂的同步代码,而且每个World Anchor的信息量比较大,可达30MB。

  • 使用微软Azure Spatial Anchor Service,可实现HoloLens与iOS / Android AR程序同步,但是还没有在国内上线。

  • 多个设备直接扫同一个Vuforia码,简单易行。

 

11.HoloLens数字沙盘如何开发

美术建模出数字沙盘,UI创作需要在沙盘显示的画面,程序把这些素材结合起来,实现程序逻辑。

 

12.HoloLens应用场景中的模型如何产生阴影效果

  • 环境里的物理光照无法在HoloLens2场景里产生阴影。

  • 在虚拟场景的灯光,可以通过设置来产生阴影,但是微软官方推荐的画质设定是非常低,这个设定下阴影效果是关闭的。如果要打开,会对性能造成影响。另外如果使用的是MRTK里的shader的话,是不支持阴影效果的,因为MRTK里的shader不接受光照。

 

13.如何提高叠加物体定位的精度和稳定性

在Hololens 2中提高物体稳定性通常需要考虑:

  • FPS:尽量保持60fps,同时避免FPS大幅变化,否则会出现抖动现象。

  • 物理环境的可追踪性:避免大范围相似的图案,大幅变化的背景,和过强过亮的光线效果。

  • 必要时可进行眼镜校准。

具体请参考微软官方文档。

参考资料:https://docs.microsoft/en-us/windows/mixed-reality/develop/platform-capabilities-and-apis/hologram-stability

 

14.最新版本MRTK关于HoloLens 1代的配置文件适配问题

没有用最新版本的MRTK在HoloLens 1中做过开发,在HoloLens 1中做开发,推荐使用HoloToolkit Unity 2017.4的版本来做。

 

15.HoloLens 1代与Unity连接调试的前置条件有哪些

HoloLens需要安装Holographic Remoting这个APP,在微软应用商店可以下载。

 

16.工业使用中OPC与产品接口相关参数

不建议HoloLens App直接访问OPC Server,原因是支持OPC的现有类库无法直接在 UWP / ARM64平台上使用。我们通常的做法是做一个中间服务来连接OPC Server获取数据,然后整理后再通过HTTP Restful API / WebSocket / TCP 等协议传给HoloLens App。

 

17.现在MRTK中的面板都是用的Quad Mesh面片,没有用UI,这样有什么好处

使用UI的时候会出现水波纹、缎纹的情况,使用Quad 可以避免这种情况出现。

 

18.HoloLens因为没有配备GPS,请问在户外使用设备时,如何让其更高效的引导用户?SLAM还能是该问题的最佳方案吗

可以外接GPS设备,但效果不佳。第三方方案比如Easy AR可以视线类似场景,但目前没有兼容UWP,需要自行定制开发。

 

19.Spatial Mapping 里的场景理解是其核心技术之一,请问可否具体讲解一下它的使用逻辑和方法?以及其算法可否再次优化以带来更友好的创建数字内容的体验

具体方法可以参考官方文档。

参考资料:https://github/microsoft/MixedRealityToolkit/tree/master/SpatialUnderstanding

 

20.怎么样实现远程标注

实现远程标注实际上是利用小孔成像的原理:标注APP可以认为是在成像平面上进行标注,通过系统API获取HoloLens小孔成像模型的内参,计算出在HoloLens单位平面上的对应坐标,然后利用HoloLens SLAM能力得到的相机外参,通过发射射线和HoloLens检测到的物理平面层进行碰撞,然后得到标注点所在真正在3D空间中的点坐标。下面视频是我们的实现演示:

点击播放

 

21.多台HoloLens实时视频通话该如何实现,后续能否出Demo

可以使用微软官方Webrtc类库。

参考资料:https://github/microsoft/MixedReality-WebRTC

 

22.目前能否接入讯飞等中文语音识别,微软的好像无法识别中文

MRTK是可以识别中文,前提需要把HoloLens的系统语言设置为中文才可以。

 

23.如何用Unity实现在HoloLens2中显示视频

推荐使用AVPro Video这个插件。

 

24.怎样添加多个Anchor在人走动的过程中使3D模型更稳定?有没有用过World Locking,是怎么使用的

添加多个Anchor并不能使3D模型在走动时更加稳定,请参考问题13。World Locking 解决的问题是场景级别和物理世界的同步与锁定,因为刚出我们也没有使用过。

 

25.有没有PC Remote Rendering成功使用的经验,我们试过但是失败了,安装包安装到电脑上之后,连不到HoloLens View怎么办

PC Remote Rendering需要在Player Setting里勾选一个选项,叫WSA Holographic Remoting Supported。

 

26.HoloLens 2目前比较好的AR工具包是什么以及基本使用方法

可以用微软MRTK QRCode Tracking 或者Vuforia。

 

27.如何较好地实现远程语音或视频传输功能

可以使用微软官方Webrtc类库。

参考资料:https://github/microsoft/MixedReality-WebRTC

 

28.手机观看第三方视角能否进行直接交互

可以,用MRTK的话,对模型的移动、缩放、旋转是可以直接操作的,点击事件,需要自己写个脚本处理一下。

 

29.如何实现多设备共享场景展示与交互

同步多设备的空间坐标系,可参考问题10。

交互同步,可以使用一台独立电脑作为服务器,或者用原来的Unet方案。

 

30.有无API重置世界坐标原点

Unity没有提供此API。

 

31.HoloLens 2,Vuforia代码进行录像只能录几秒吗

Vuforia一直开着的话,HoloLens录像会和Vuforia抢摄像头,录像和扫码不可以一起跑,扫码结束后需关闭Vuforia组件。

 

32.多个佩戴HoloLens 1或2的体验者集中操作时,以上帝视角拍摄时最优的硬件方案及网络布局方案是什么

我们的经验是:

  • 独立电脑作为服务器中转网络包,连接物理网线到独立路由器。

  • 该电脑可作为第三方视角拍摄段,使用固定相机拍摄第三方视角。

  • HoloLens设备通过5G无线wifi连接路由器,避免网络干扰。

 

33.在图像识别不理想的情况下,HoloLens 2是否支持局部空间扫描?另外,真实物体与虚拟物体的前后的遮挡关系如何以最低开发难度的方式解决?

真实物体与虚拟物体的前后遮挡关系,开启HoloLens的空间扫描,把空间扫描出的网格的Shader设置黑色的Shader,就可以实现。

 

34.纯黑色材质在HoloLens中渲染不出效果,被视为透明穿透显示现实空间,有什么好的解决办法遮挡住现实物体凸显黑色材质模型吗

尽可能避免使用黑色,用深灰色,HoloLens无法渲染黑色材质。

 

35.如何实现环境扫描,让内容可以基于环境做交互,如何保存环境扫描数据,并上传网络,自己的服务器可以吗

可以实现,自己采集网格数据上传服务器,然后再实例化使用。

 

36.如何让HoloLens识别所在房间并在房间设备上叠加虚拟信息

预先设置World Anchor,保存World Anchor信息。

加载World Anchor并显示模型。

 

37.HoloLens的远程渲染,较大文件的HoloLens发布,是否可以放在云端,目前有什么比较好的的方法

用Azure Remote Rendering,或者自己写一个,请参考微软官方文档。

参考资料:https://docs.microsoft/en-us/windows/mixed-reality/develop/platform-capabilities-and-apis/holographic-remoting-create-host

 

38.如何在减少模型面数的情况下提高视觉效果

模型师多下些功夫。

 

39.Microsoft Mixed Reality Toolkit和Unity Package Manager是如何配合使用的

和普通的Unity开发没有区别。

 

40.HoloLens是否有远程渲染的解决方案,是否支持一台服务器同时渲染多个画面不同的HoloLens终端

自己写一个渲染服务器试试看,请参考微软官方文档。

参考资料:https://docs.microsoft/en-us/windows/mixed-reality/develop/platform-capabilities-and-apis/holographic-remoting-create-host

 

41.HoloLens的摄像机矩阵,官方的Try Get Camera To World Matrix方法 只能是调用拍照时返回,我现在用的是微软Github上的Webrtc框架做的视频通讯,请问怎么能在视频时,实时获取摄像机的Try Get Camera To World Matrix和Try Get Camera To World Matrix的数据呢

需要使用Windows Runtime Api,获取Media Frame Reference 或者IMF Sample,然后再通过相应的API 获取相机位姿。具体请参考微软官方文档。

参考资料:https://docs.microsoft/en-us/windows/mixed-reality/develop/platform-capabilities-and-apis/locatable-camera

 

欢迎遇到其他问题的小伙伴留言,此贴会长期更新!

 

如有疑问,请添加 企鹅交流群:689418255 提问,备注CSDN,私信可能不会及时看到。

觉得有用的话点个三连支持下,欢迎打赏!

本文标签: 常见问题 过程中 HoloLens