private void onCapturedPhotoToMemoryCallback(PhotoCapture.PhotoCaptureResult result, PhotoCaptureFrame photoCaptureFrame) { if (!result.success) { Debug.LogError("Failed to take photo"); onPhotoCaptured.OnNext(null); photoCapture.StopPhotoModeAsync(onPhotoModeStoppedCallback); return; } var buffer = new List <byte>(); photoCaptureFrame.CopyRawImageDataIntoBuffer(buffer); // カメラの向きをワールド座標に変換するためのパラメータ保持 Matrix4x4 cameraToWorldMatrix; photoCaptureFrame.TryGetCameraToWorldMatrix(out cameraToWorldMatrix); //var cameraRotation = Quaternion.LookRotation(-cameraToWorldMatrix.GetColumn(2), cameraToWorldMatrix.GetColumn(1)); Matrix4x4 projectionMatrix; photoCaptureFrame.TryGetProjectionMatrix(Camera.main.nearClipPlane, Camera.main.farClipPlane, out projectionMatrix); var pixelToCameraMatrix = projectionMatrix.inverse; Plan = new ShootingPlan { Resolution = Resolution, ShootingLocation = Camera.main.transform.position, CameraToWorld = cameraToWorldMatrix, PixelToCamera = pixelToCameraMatrix, }; photoCapture.StopPhotoModeAsync(onPhotoModeStoppedCallback); var value = buffer.ToArray(); onPhotoCaptured.OnNext(value); }
public void TakePhotoAsync(bool showHolograms = false) { Plan = null; canSave = false; TakePhotoCore(showHolograms); }