PhotoCapture
класс в UnityEngine.Windows.WebCam
Выполнено в:UnityEngine.CoreModule
Описание
Захватывает фотографию с веб-камеры и сохраняет ее в памяти или на диске.
Демонстрирует, как сделать фотографию с помощью функции PhotoCapture и отобразить ее на Unity GameObject.
using UnityEngine; using System.Collections; using System.Linq; using UnityEngine.Windows.WebCam;
public class PhotoCaptureExample : MonoBehaviour { PhotoCapture photoCaptureObject = null; Texture2D targetTexture = null;
// Use this for initialization void Start() { Resolution cameraResolution = PhotoCapture.SupportedResolutions.OrderByDescending((res) => res.width * res.height).First(); targetTexture = new Texture2D(cameraResolution.width, cameraResolution.height);
// Create a PhotoCapture object PhotoCapture.CreateAsync(false, delegate(PhotoCapture captureObject) { photoCaptureObject = captureObject; CameraParameters cameraParameters = new CameraParameters(); cameraParameters.hologramOpacity = 0.0f; cameraParameters.cameraResolutionWidth = cameraResolution.width; cameraParameters.cameraResolutionHeight = cameraResolution.height; cameraParameters.pixelFormat = CapturePixelFormat.BGRA32;
// Activate the camera photoCaptureObject.StartPhotoModeAsync(cameraParameters, delegate(PhotoCapture.PhotoCaptureResult result) { // Take a picture photoCaptureObject.TakePhotoAsync(OnCapturedPhotoToMemory); }); }); }
void OnCapturedPhotoToMemory(PhotoCapture.PhotoCaptureResult result, PhotoCaptureFrame photoCaptureFrame) { // Copy the raw image data into our target texture photoCaptureFrame.UploadImageDataToTexture(targetTexture);
// Create a gameobject that we can apply our texture to GameObject quad = GameObject.CreatePrimitive(PrimitiveType.Quad); Renderer quadRenderer = quad.GetComponent<Renderer>() as Renderer; quadRenderer.material = new Material(Shader.Find("Unlit/Texture"));
quad.transform.parent = this.transform; quad.transform.localPosition = new Vector3(0.0f, 0.0f, 3.0f);
quadRenderer.material.SetTexture("_MainTex", targetTexture);
// Deactivate our camera photoCaptureObject.StopPhotoModeAsync(OnStoppedPhotoMode); }
void OnStoppedPhotoMode(PhotoCapture.PhotoCaptureResult result) { // Shutdown our photo capture resource photoCaptureObject.Dispose(); photoCaptureObject = null; } }
Статические свойства
| Свойство | Описание |
|---|---|
| SupportedResolutions | Список всех поддерживаемых разрешений устройств для съемки фотографий. |
Открытые методы
| Метод | Описание |
|---|---|
| Dispose | Для выключения экземпляра PhotoCapture необходимо вызвать Dispose. |
| GetUnsafePointerToVideoDeviceController | Предоставляет указатель COM на основной IVideoDeviceController. |
| StartPhotoModeAsync | Асинхронно запускает фоторежим. |
| StopPhotoModeAsync | Асинхронно останавливает фоторежим. |
| TakePhotoAsync | Асинхронно захватывает фотографию с веб-камеры и сохраняет ее на диск. |
Статические методы
| Метод | Описание |
|---|---|
| CreateAsync | Асинхронно создает экземпляр объекта PhotoCapture, который может быть использован для записи фотографий. |
Делегаты
| делегат | Описание |
|---|---|
| OnCapturedToDiskCallback | Вызывается при сохранении фотографии в файловую систему. |
| OnCapturedToMemoryCallback | Вызывается, когда фотография была записана в память. |
| OnCaptureResourceCreatedCallback | Вызывается при создании ресурса PhotoCapture. |
| OnPhotoModeStartedCallback | Вызывается при запуске режима фото. |
| OnPhotoModeStoppedCallback | Вызывается при остановке режима фото. |