首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hololens 2上的LocatableCamera (PhotoCapture)

Hololens 2上的LocatableCamera (PhotoCapture)
EN

Stack Overflow用户
提问于 2020-02-26 14:58:03
回答 1查看 1.3K关注 0票数 2

当在Hololens 2上使用PhotoCapture时,我有两个问题,这可能是连接的。他们没有发生在霍洛伦斯1号。

  • 唯一可获得的分辨率是3904x2196。
  • 获取CameraToWorldMatrix总是失败

正如在文档中所看到的,这个决议没有与它相关的框架。我的假设是,CameraToWorldMatrix只能用于分辨率较低的相机轮廓。

我怎样才能改变分辨率,得到统一内的矩阵呢?

最小可重现性示例

我使用的是Unity2019.2.19f1和VisualStudio2019社区(16.4.5)

  1. 按照步骤这里创建一个新的统一项目,除非使用IL2CPP作为脚本后端而不是.NET
  2. 播放器设置:启用InternetClient、InternetClientServer、PrivateNetworkClientServer、网络摄像头、麦克风和SpatialPerception的功能,在播放器设置中:支持设备家族选择全息
  3. 创建一个新的空游戏对象并添加以下脚本: 使用(!Application.HasUserAuthorization(UserAuthorization.WebCam));使用System.Collections.Generic;使用System.Linq;使用UnityEngine;使用UnityEngine.Windows.WebCam;公共类PhotoCaptureController : MonoBehaviour { PhotoCapture photoCaptureObject = null;bool isRunning = false;void (){ StartCoroutine( StartCameraCapture() );} private IEnumerator StartCameraCapture(){ if}如果(Application.HasUserAuthorization(UserAuthorization.WebCam)) {Debug.Log(“创建PhotoCapture");PhotoCapture.CreateAsync(false,OnPhotoCaptureCreated);}PhotoCapture.CreateAsync{Debug.Log(”未授予网络摄像机许可“);}私有void (){ if (isRunning) {isRunning}} void (PhotoCapture captureObject) { photoCaptureObject = captureObject;IEnumerable availableResolutions = PhotoCapture.SupportedResolutions;{availableResolutions(PhotoCapture Resolution:“+ res.width + "x”+ res.height);} Resolution =availableResolutions.OrderByDescending( res ) => res.width *res.height.First();CameraParameters c= new CameraParameters();c.hologramOpacity = 0.0f;c.cameraResolutionWidth = cameraResolution.width;c.cameraResolutionHeight =c.cameraResolutionHeight;私有OnPhotoModeStarted(PhotoCapture.PhotoCaptureResult结果( if (result.success) { isRunning = true;photoCaptureObject.TakePhotoAsync(OnCapturedPhotoToMemory);)}} OnCapturedPhotoToMemory(PhotoCapture.PhotoCaptureResult结果,PhotoCaptureFrame帧){ if (result.success) { if (frame.TryGetCameraToWorldMatrix(out Matrix4x4 cameraToWorldMatrix)) {Debug.Log(成功获得CameraToWorldMatrix:+ cameraToWorldMatrix.ToString());{Debug.Log(“未能获得CameraToWorldMatrix");} frame.Dispose();}}
  4. 更改生成设置:

  1. 构建、打开和解决方案,将生成目标设置为ARM64、调试并部署到设备上
EN

回答 1

Stack Overflow用户

发布于 2020-03-09 18:47:01

这个CameraCapture插件可能对你有用。这是一个统一的本地插件。readme.txt包含有关构建它的信息。基本上,在尝试打开Unity之前,您需要构建本机插件变体。如果您尚未构建C++/WinRT组件,则可能需要通过设置步骤这里。SpatialCameraTracker.cs文件显示了如何接收相机矩阵。

这方面的支持很少,但所有代码都在回购程序中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60416702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档