Поддерживаемые разрешения Unitys PhotoCapture пустые - PullRequest
0 голосов
/ 02 мая 2018

Я программирую приложение для HoloLens, используя Unity. В приложении я хочу кнопку, которая записывает изображение при нажатии. Чтобы сделать снимок, я стараюсь использовать PhotoCapture Unitys (как описано здесь: https://docs.unity3d.com/560/Documentation/ScriptReference/VR.WSA.WebCam.PhotoCapture.html или здесь: https://docs.microsoft.com/en-us/windows/mixed-reality/locatable-camera-in-unity). Когда я запускаю код и нажимаю кнопку, появляется следующая ошибка: System.InvalidOperationException: 'Sequence contains no elements' относительно следующей строки: cameraResolution = PhotoCapture.SupportedResolutions.OrderByDescending((res) => res.width * res.height).First(); В результате отладки я обнаружил, что SupportedResolutions пусто. Как я могу это исправить?

Остальной код:

using System.Collections;
using System.Collections.Generic;
using System.Linq;

using UnityEngine;
using UnityEngine.XR.WSA.WebCam;
using UnityEngine.XR.WSA.Input;

using HoloToolkit.Unity.InputModule;

public class Record : MonoBehaviour, IInputClickHandler {

    PhotoCapture photoCaptureObject = null;
    Resolution cameraResolution;

    void Start () {}

    public void OnInputClicked(InputClickedEventData eventData)
    {
        cameraResolution = PhotoCapture.SupportedResolutions.OrderByDescending((res) => res.width * res.height).First();
        // Create a PhotoCapture object and so on
    }

(микрофон и веб-камера включены в Unity как вход)

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Как вы сказали, вам нужно позвонить PhotoCapture.CreateAsync до того, как вы заполните PhotoCapture.

Вы можете получить пример кода здесь и фрагмент кода ниже:

private void Start()
{
    PhotoCapture.CreateAsync(false, this.OnPhotoCreated);
}

// This method store the PhotoCapture object just created and retrieve the high quality
// available for the camera and then request to start capturing the photo with the
// given camera parameters.
private void OnPhotoCreated(PhotoCapture captureObject)
{    
    Resolution cameraResolution = PhotoCapture.SupportedResolutions.OrderByDescending((res) => res.width * res.height).First();

    CameraParameters c = new CameraParameters()
    {
        hologramOpacity = 0.0f,
        cameraResolutionWidth = cameraResolution.width,
        cameraResolutionHeight = cameraResolution.height,
        pixelFormat = CapturePixelFormat.BGRA32
    };

//    captureObject.StartPhotoModeAsync(c, this.OnPhotoModeStarted);
}
0 голосов
/ 02 мая 2018

Необходимо создать экземпляр photoCaptureObject, прежде чем пытаться получить доступ к его разрешениям.

...