/// <summary> /// Fills the current chroma keys with the data from a file. /// </summary> public void LoadGreenScreenData(bool forcegarbagemate = false) { GreenScreenData gsData; if (LoadData(out gsData)) { ChromaKeyData chromaKeyData = gsData.chromaKeyData; garbageMatteData = gsData.garbageMatteData; erosion = chromaKeyData.erosion; sigma_ = chromaKeyData.blurPower; numberBlurIterations = chromaKeyData.numberBlurIterations; whiteClip = chromaKeyData.whiteClip; blackClip = chromaKeyData.blackClip; spill = chromaKeyData.spill; keyColors = chromaKeyData.chromaKeys.color; smoothness = chromaKeyData.chromaKeys.smoothness; range = chromaKeyData.chromaKeys.range; } UpdateShader(); if (forcegarbagemate && garbageMatte != null) { if (!garbageMatte.IsInit) { garbageMatte = new GarbageMatte(GetComponent <Camera>(), finalMat, transform, garbageMatte); } enableGarbageMatte = true; garbageMatte.LoadData(gsData.garbageMatteData); garbageMatte.ApplyGarbageMatte(); } }
/// <summary> /// Saves the chroma keys used in a file (JSON format). /// </summary> public void SaveData(ChromaKeyData chromaKeyData, GarbageMatte.GarbageMatteData garbageMatteData) { GreenScreenData gsData = new GreenScreenData(); gsData.chromaKeyData = chromaKeyData; gsData.garbageMatteData = garbageMatteData; string dataAsJson = JsonUtility.ToJson(gsData); File.WriteAllText(pathFileConfig, dataAsJson); }
/// <summary> /// Creates a new serializable ChromaKeyData file from the current settings. /// </summary> public ChromaKeyData RegisterDataChromaKeys() { ChromaKeyData chromaKeyData = new ChromaKeyData(); chromaKeyData.chromaKeys = new ChromaKey(); chromaKeyData.erosion = erosion; chromaKeyData.blurPower = sigma_; chromaKeyData.numberBlurIterations = numberBlurIterations; chromaKeyData.whiteClip = whiteClip; chromaKeyData.spill = spill; chromaKeyData.blackClip = blackClip; chromaKeyData.chromaKeys.color = keyColors; chromaKeyData.chromaKeys.smoothness = smoothness; chromaKeyData.chromaKeys.range = range; return(chromaKeyData); }
/// <summary> /// Fill the current chroma keys with the data from a file /// </summary> public void LoadChromaKeys() { ChromaKeyData chromaKeyData = LoadData(); if (chromaKeyData.numberColors != -1) { current_numberColors = chromaKeyData.numberColors; erosion = chromaKeyData.erosion; sigma_ = chromaKeyData.blurPower; numberBlurIterations = chromaKeyData.numberBlurIterations; whiteClip = chromaKeyData.whiteClip; blackClip = chromaKeyData.blackClip; spill = chromaKeyData.spill; keyColors = chromaKeyData.chromaKeys.color; smoothness = chromaKeyData.chromaKeys.smoothness; range = chromaKeyData.chromaKeys.range; } UpdateShader(); }
/// <summary> /// Save the chroma keys used in a file (JSON format) /// </summary> public void SaveChromaKeys() { ChromaKeyData chromaKeyData = new ChromaKeyData(); chromaKeyData.chromaKeys = new ChromaKey(); chromaKeyData.numberColors = current_numberColors; chromaKeyData.erosion = erosion; chromaKeyData.blurPower = sigma_; chromaKeyData.numberBlurIterations = numberBlurIterations; chromaKeyData.whiteClip = whiteClip; chromaKeyData.spill = spill; chromaKeyData.blackClip = blackClip; chromaKeyData.chromaKeys.color = keyColors; chromaKeyData.chromaKeys.smoothness = smoothness; chromaKeyData.chromaKeys.range = range; SaveData(chromaKeyData); }
/// <summary> /// Load the data from a file and fill a structure /// </summary> /// <returns></returns> private ChromaKeyData LoadData() { if (File.Exists(pathFileShader)) { string dataAsJson = File.ReadAllText(pathFileShader); return(JsonUtility.FromJson <ChromaKeyData>(dataAsJson)); } else { ChromaKeyData chromaKeyData = new ChromaKeyData(); chromaKeyData.numberColors = -1; chromaKeyData.spill = defaultSpill; //Load default values chromaKeyData.chromaKeys.color = defaultColor; chromaKeyData.chromaKeys.smoothness = defaultSmoothness; chromaKeyData.chromaKeys.range = defaultRange; return(chromaKeyData); } }
/// <summary> /// Return a string from a pointer to char /// </summary> private void SaveData(ChromaKeyData chromaKeyData) { string dataAsJson = JsonUtility.ToJson(chromaKeyData); File.WriteAllText(pathFileShader, dataAsJson); }