コード例 #1
0
        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);
        }
コード例 #2
0
 public void TakePhotoAsync(bool showHolograms = false)
 {
     Plan    = null;
     canSave = false;
     TakePhotoCore(showHolograms);
 }