Unity3d 开发HoloLens2启动摄像头实现截图、拍照功能

Unity3d 开发HoloLens2启动摄像头实现截图、拍照功能


好多人问版本:Unity 2019.4.15f1c1 和 MRTK2.5.1

功能需求

需要调用摄像头进行拍照、截图等功能,之前计划使用高通Vuforia SDK,但是因为不用AR识别功能,同时Vuforia的画面会有水印截图效果不佳,所以选择直接启动摄像头来获取画面。

实现

经测试发现和调用其他设备的摄像头方式无异,这里请求了权限后启动摄像头。
代码:


    private WebCamTexture webCamTextrue;
    [Header("摄像机画面")]
    public RawImage cameraTexture;
    /// <summary>
/// 开启摄像机
/// 调用StartCoroutine(DeviceInit());
    /// </summary>
    IEnumerator DeviceInit()
    {
        yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);//请求授权使用摄像头
        if (Application.HasUserAuthorization(UserAuthorization.WebCam))
        {
            try
            {
                WebCamDevice[] devices = WebCamTexture.devices;
                string deviceName = devices[0].name;
                webCamTextrue = new WebCamTexture(deviceName, 1280, 720);//new WebCamTexture(deviceName, 640, 360);
                cameraTexture.texture = webCamTextrue;
                webCamTextrue.Play();
            }
            catch (Exception e)
            {
                Debug.LogError("Camera Init Exception:" + e);
            }
        }
}


开启权限

需要在player设置里勾选WebCam选项,开启摄像头权限。

在这里插入图片描述

同时初次运行时请求摄像头弹出要同意。如果之前安装过该应用,可能需要卸载重新安装,否则可能会出现调摄像头失败,画面是黑色的情况。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 25
    评论
Hololens 2上使用Unity开发时,实现空间锚点的定位,使用Microsoft提供的Mixed Reality Toolkit (MRTK)。MRTK是一个开源的工具包,为Hololens和Windows Mixed Reality设备提供了许多基础功能开发工具。其中包括空间锚点的定位。 具体实现步骤如下: 1. 在Unity中导入MRTK,并创建一个新的MRTK项目。 2. 添加空间锚点:在Unity场景中创建一个新的游戏对象,然后将SpatialAnchor组件添加到该对象上。 3. 将空间锚点与场景中的对象进行关联:在Unity场景中创建一个需要关联的对象,然后在该对象上添加SpatialObjectAnchor组件。在SpatialObjectAnchor组件中,选择要关联的空间锚点。 4. 编写代码实现空间锚点的定位:在Unity中编写C#脚本,在脚本中调用MRTK提供的SpatialAnchorManager类,实现空间锚点的定位。例如: ```csharp using Microsoft.MixedReality.Toolkit; using Microsoft.MixedReality.Toolkit.SpatialAwareness; public class SpatialAnchorManagerExample : MonoBehaviour { private IMixedRealitySpatialAwarenessSystem spatialAwarenessSystem; private GameObject spatialAnchorGameObject; private void Start() { spatialAwarenessSystem = CoreServices.GetSpatialAwarenessSystem(); spatialAwarenessSystem.Register(gameObject); } private void OnDestroy() { spatialAwarenessSystem?.Unregister(gameObject); } public void CreateSpatialAnchor() { // Create a new spatial anchor spatialAnchorGameObject = new GameObject("Spatial Anchor"); spatialAnchorGameObject.AddComponent<SpatialAnchor>(); // Add the spatial anchor to the spatial awareness system var anchorService = CoreServices.GetSpatialAwarenessSystemDataProvider<IMixedRealityAnchorService>(); anchorService.CreateAnchor(spatialAnchorGameObject); } public void DestroySpatialAnchor() { // Remove the spatial anchor from the spatial awareness system var anchorService = CoreServices.GetSpatialAwarenessSystemDataProvider<IMixedRealityAnchorService>(); anchorService.RemoveAnchor(spatialAnchorGameObject); // Destroy the spatial anchor game object Destroy(spatialAnchorGameObject); } } ``` 通过调用CreateAnchor方法,可以在Hololens 2中创建一个新的空间锚点。通过调用RemoveAnchor方法,可以将空间锚点从Hololens 2中移除。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十幺卜入

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值