forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			150 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
/************************************************************************************
 | 
						|
Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved.
 | 
						|
 | 
						|
Licensed under the Oculus Master SDK License Version 1.0 (the "License"); you may not use
 | 
						|
the Utilities SDK except in compliance with the License, which is provided at the time of installation
 | 
						|
or download, or which otherwise accompanies this software in either electronic or hard copy form.
 | 
						|
 | 
						|
You may obtain a copy of the License at
 | 
						|
https://developer.oculus.com/licenses/oculusmastersdk-1.0/
 | 
						|
 | 
						|
Unless required by applicable law or agreed to in writing, the Utilities SDK distributed
 | 
						|
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
 | 
						|
ANY KIND, either express or implied. See the License for the specific language governing
 | 
						|
permissions and limitations under the License.
 | 
						|
************************************************************************************/
 | 
						|
 | 
						|
#if UNITY_ANDROID && !UNITY_EDITOR
 | 
						|
#define OVR_ANDROID_MRC
 | 
						|
#endif
 | 
						|
 | 
						|
using UnityEngine;
 | 
						|
using System;
 | 
						|
using System.IO;
 | 
						|
 | 
						|
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || OVR_ANDROID_MRC
 | 
						|
public class OVRMixedRealityCaptureSettings : ScriptableObject
 | 
						|
{
 | 
						|
	public bool enableMixedReality = false;
 | 
						|
	public LayerMask extraHiddenLayers;
 | 
						|
	public OVRManager.CompositionMethod compositionMethod = OVRManager.CompositionMethod.External;
 | 
						|
	public Color externalCompositionBackdropColorRift = Color.green;
 | 
						|
	public Color externalCompositionBackdropColorQuest = Color.clear;
 | 
						|
	public OVRManager.CameraDevice capturingCameraDevice = OVRManager.CameraDevice.WebCamera0;
 | 
						|
	public bool flipCameraFrameHorizontally = false;
 | 
						|
	public bool flipCameraFrameVertically = false;
 | 
						|
	public float handPoseStateLatency = 0.0f;
 | 
						|
	public float sandwichCompositionRenderLatency = 0.0f;
 | 
						|
	public int sandwichCompositionBufferedFrames = 8;
 | 
						|
	public Color chromaKeyColor = Color.green;
 | 
						|
	public float chromaKeySimilarity = 0.6f;
 | 
						|
	public float chromaKeySmoothRange = 0.03f;
 | 
						|
	public float chromaKeySpillRange = 0.04f;
 | 
						|
	public bool useDynamicLighting = false;
 | 
						|
	public OVRManager.DepthQuality depthQuality = OVRManager.DepthQuality.Medium;
 | 
						|
	public float dynamicLightingSmoothFactor = 8.0f;
 | 
						|
	public float dynamicLightingDepthVariationClampingValue = 0.001f;
 | 
						|
	public OVRManager.VirtualGreenScreenType virtualGreenScreenType = OVRManager.VirtualGreenScreenType.Off;
 | 
						|
	public float virtualGreenScreenTopY;
 | 
						|
	public float virtualGreenScreenBottomY;
 | 
						|
	public bool virtualGreenScreenApplyDepthCulling = false;
 | 
						|
	public float virtualGreenScreenDepthTolerance = 0.2f;
 | 
						|
 | 
						|
	public void ReadFrom(OVRManager manager)
 | 
						|
	{
 | 
						|
		enableMixedReality = manager.enableMixedReality;
 | 
						|
		compositionMethod = manager.compositionMethod;
 | 
						|
		extraHiddenLayers = manager.extraHiddenLayers;
 | 
						|
		externalCompositionBackdropColorRift = manager.externalCompositionBackdropColorRift;
 | 
						|
		externalCompositionBackdropColorQuest = manager.externalCompositionBackdropColorQuest;
 | 
						|
		capturingCameraDevice = manager.capturingCameraDevice;
 | 
						|
		flipCameraFrameHorizontally = manager.flipCameraFrameHorizontally;
 | 
						|
		flipCameraFrameVertically = manager.flipCameraFrameVertically;
 | 
						|
		handPoseStateLatency = manager.handPoseStateLatency;
 | 
						|
		sandwichCompositionRenderLatency = manager.sandwichCompositionRenderLatency;
 | 
						|
		sandwichCompositionBufferedFrames = manager.sandwichCompositionBufferedFrames;
 | 
						|
		chromaKeyColor = manager.chromaKeyColor;
 | 
						|
		chromaKeySimilarity = manager.chromaKeySimilarity;
 | 
						|
		chromaKeySmoothRange = manager.chromaKeySmoothRange;
 | 
						|
		chromaKeySpillRange = manager.chromaKeySpillRange;
 | 
						|
		useDynamicLighting = manager.useDynamicLighting;
 | 
						|
		depthQuality = manager.depthQuality;
 | 
						|
		dynamicLightingSmoothFactor = manager.dynamicLightingSmoothFactor;
 | 
						|
		dynamicLightingDepthVariationClampingValue = manager.dynamicLightingDepthVariationClampingValue;
 | 
						|
		virtualGreenScreenType = manager.virtualGreenScreenType;
 | 
						|
		virtualGreenScreenTopY = manager.virtualGreenScreenTopY;
 | 
						|
		virtualGreenScreenBottomY = manager.virtualGreenScreenBottomY;
 | 
						|
		virtualGreenScreenApplyDepthCulling = manager.virtualGreenScreenApplyDepthCulling;
 | 
						|
		virtualGreenScreenDepthTolerance = manager.virtualGreenScreenDepthTolerance;
 | 
						|
	}
 | 
						|
	public void ApplyTo(OVRManager manager)
 | 
						|
	{
 | 
						|
		manager.enableMixedReality = enableMixedReality;
 | 
						|
		manager.compositionMethod = compositionMethod;
 | 
						|
		manager.extraHiddenLayers = extraHiddenLayers;
 | 
						|
		manager.externalCompositionBackdropColorRift = externalCompositionBackdropColorRift;
 | 
						|
		manager.externalCompositionBackdropColorQuest = externalCompositionBackdropColorQuest;
 | 
						|
		manager.capturingCameraDevice = capturingCameraDevice;
 | 
						|
		manager.flipCameraFrameHorizontally = flipCameraFrameHorizontally;
 | 
						|
		manager.flipCameraFrameVertically = flipCameraFrameVertically;
 | 
						|
		manager.handPoseStateLatency = handPoseStateLatency;
 | 
						|
		manager.sandwichCompositionRenderLatency = sandwichCompositionRenderLatency;
 | 
						|
		manager.sandwichCompositionBufferedFrames = sandwichCompositionBufferedFrames;
 | 
						|
		manager.chromaKeyColor = chromaKeyColor;
 | 
						|
		manager.chromaKeySimilarity = chromaKeySimilarity;
 | 
						|
		manager.chromaKeySmoothRange = chromaKeySmoothRange;
 | 
						|
		manager.chromaKeySpillRange = chromaKeySpillRange;
 | 
						|
		manager.useDynamicLighting = useDynamicLighting;
 | 
						|
		manager.depthQuality = depthQuality;
 | 
						|
		manager.dynamicLightingSmoothFactor = dynamicLightingSmoothFactor;
 | 
						|
		manager.dynamicLightingDepthVariationClampingValue = dynamicLightingDepthVariationClampingValue;
 | 
						|
		manager.virtualGreenScreenType = virtualGreenScreenType;
 | 
						|
		manager.virtualGreenScreenTopY = virtualGreenScreenTopY;
 | 
						|
		manager.virtualGreenScreenBottomY = virtualGreenScreenBottomY;
 | 
						|
		manager.virtualGreenScreenApplyDepthCulling = virtualGreenScreenApplyDepthCulling;
 | 
						|
		manager.virtualGreenScreenDepthTolerance = virtualGreenScreenDepthTolerance;
 | 
						|
	}
 | 
						|
 | 
						|
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN        // Rift MRC only
 | 
						|
    const string configFileName = "mrc.config";
 | 
						|
	public void WriteToConfigurationFile()
 | 
						|
	{
 | 
						|
		string text = JsonUtility.ToJson(this, true);
 | 
						|
		try
 | 
						|
		{
 | 
						|
			string configPath = Path.Combine(Application.dataPath, configFileName);
 | 
						|
			Debug.Log("Write OVRMixedRealityCaptureSettings to " + configPath);
 | 
						|
			File.WriteAllText(configPath, text);
 | 
						|
		}
 | 
						|
		catch(Exception e)
 | 
						|
		{
 | 
						|
			Debug.LogWarning("Exception caught " + e.Message);
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	public void CombineWithConfigurationFile()
 | 
						|
	{
 | 
						|
		try
 | 
						|
		{
 | 
						|
			string configPath = Path.Combine(Application.dataPath, configFileName);
 | 
						|
			if (File.Exists(configPath))
 | 
						|
			{
 | 
						|
				Debug.Log("MixedRealityCapture configuration file found at " + configPath);
 | 
						|
				string text = File.ReadAllText(configPath);
 | 
						|
				Debug.Log("Apply MixedRealityCapture configuration");
 | 
						|
				JsonUtility.FromJsonOverwrite(text, this);
 | 
						|
			}
 | 
						|
			else
 | 
						|
			{
 | 
						|
				Debug.Log("MixedRealityCapture configuration file doesn't exist at " + configPath);
 | 
						|
			}
 | 
						|
		}
 | 
						|
		catch(Exception e)
 | 
						|
		{
 | 
						|
			Debug.LogWarning("Exception caught " + e.Message);
 | 
						|
		}
 | 
						|
	}
 | 
						|
#endif
 | 
						|
}
 | 
						|
#endif
 |