Hololens 1使用PhotoCapture时无法获取投影矩阵问题求助
问题核心原因
你调用PhotoCapture.CreateAsync时第一个参数传入了false,该参数控制是否启用相机位置追踪,设为false时会直接禁用定位数据采集,自然无法获取相机矩阵。
修复步骤
- 核心代码修改:将
PhotoCapture.CreateAsync的第一个参数改为true
// 原错误代码 PhotoCapture.CreateAsync(false, delegate(PhotoCapture captureObject) { // 修改后代码 PhotoCapture.CreateAsync(true, delegate(PhotoCapture captureObject) {
- 额外适配规则:
- Unity Editor Play模式下本身不支持获取HoloLens真实相机矩阵,返回false属于正常现象,仅在真机上验证即可
- 若逻辑为应用启动立刻拍照,建议改为协程延迟3秒后执行拍照逻辑,避免HoloLens1的空间感知模块未完成初始化导致定位数据为空
- 确认打包时
Player Settings > Publishing Settings > Capabilities中SpatialPerception权限已正确勾选,不要仅在代码或清单文件中手动添加 - 若仍有异常,可降低拍照分辨率测试,部分高分辨率模式下HoloLens1会优先保障成像性能,临时关闭定位数据输出
验证逻辑
修改后真机运行时,photoCaptureFrame.hasLocationData会返回true,两个矩阵获取方法也会同步返回有效值,矩阵坐标系和MRTK全局坐标系一致,可直接用于像素点的空间映射计算。
内容的提问来源于stack exchange,提问作者Carman
相关产品推荐
相关产品推荐

