public Color ConfiguredColor(string itemName, PhonemeType phoneme, LipSyncMapItem item = null) { Color retVal = Color.Black; if (item == null) { item = FindMapItem(itemName); } if (item != null) { if (this.IsMatrix) { if (item.ElementColors[phoneme] != Color.Black) { retVal = item.ElementColors[phoneme]; } } else { if (item.PhonemeList[phoneme.ToString()] == true) { HSV hsvVal = HSV.FromRGB(new RGB(item.ElementColor)); hsvVal.V = 1; retVal = hsvVal.ToRGB().ToArgb(); } } } return(retVal); }
public double ConfiguredIntensity(string itemName, PhonemeType phoneme, LipSyncMapItem item = null) { double retVal = 0; if (item == null) { item = FindMapItem(itemName); } if (item != null) { if (this.IsMatrix) { if (item.ElementColors[phoneme] != Color.Black) { HSV hsvVal = HSV.FromRGB(new RGB(item.ElementColors[phoneme])); retVal = hsvVal.V; //retVal = 1.0; } } else { if (item.PhonemeList[phoneme.ToString()] == true) { HSV hsvVal = HSV.FromRGB(new RGB(item.ElementColor)); retVal = hsvVal.V; } } } return(retVal); }
public double ConfiguredIntensity(string itemName, PhonemeType phoneme, LipSyncMapItem item = null) { double retVal = 0; if (item == null) { item = FindMapItem(itemName); } if (item != null) { if (!this.IsMatrix) { if (item.PhonemeList[phoneme.ToString()] == true) { retVal = HSV.VFromRgb(item.ElementColor); } } } return(retVal); }
public Color ConfiguredColor(string itemName, PhonemeType phoneme, LipSyncMapItem item = null) { Color retVal = Color.Black; if (item == null) { item = FindMapItem(itemName); } if (item != null) { if (this.IsMatrix) { if (item.ElementColors[phoneme] != Color.Black) { retVal = item.ElementColors[phoneme]; } } else { if (item.PhonemeList[phoneme.ToString()] == true) { HSV hsvVal = HSV.FromRGB(new RGB(item.ElementColor)); hsvVal.V = 1; retVal = hsvVal.ToRGB().ToArgb(); } } } return retVal; }
public double ConfiguredIntensity(string itemName, PhonemeType phoneme, LipSyncMapItem item = null) { double retVal = 0; if (item == null) { item = FindMapItem(itemName); } if (item != null) { if (this.IsMatrix) { if (item.ElementColors[phoneme] != Color.Black) { HSV hsvVal = HSV.FromRGB(new RGB(item.ElementColors[phoneme])); retVal = hsvVal.V; //retVal = 1.0; } } else { if (item.PhonemeList[phoneme.ToString()] == true) { HSV hsvVal = HSV.FromRGB(new RGB(item.ElementColor)); retVal = hsvVal.V; } } } return retVal; }
private void RenderMapElements(LipSyncMapData mapData, IElementNode element, PhonemeType phoneme) { LipSyncMapItem item = mapData.FindMapItem(element.Id); if (item == null) { return; } if (mapData.IsFaceComponentType(FaceComponent.Outlines, item)) { var colorVal = mapData.ConfiguredColorAndIntensity(item); var result = CreateIntentsForElement(element, colorVal.Item1, colorVal.Item2, TimeSpan); _elementData.Add(result); } else if (mapData.IsFaceComponentType(FaceComponent.EyesOpen, item)) { var colorVal = mapData.ConfiguredColorAndIntensity(item); var result = CreateIntentsForElement(element, colorVal.Item1, colorVal.Item2, TimeSpan); _elementData.Add(result); } else { if (LipSyncMode == LipSyncMode.MarkCollection && _marks != null) { TimeSpan lastMarkTime = StartTime; foreach (var mark in _marks) { if (!AllowMarkGaps) { var gapDuration = mark.StartTime - lastMarkTime; if (gapDuration.TotalMilliseconds > 10 && mapData.PhonemeState("REST", item)) { //Fill the gap with a rest var colorVal = mapData.ConfiguredColorAndIntensity(item); var result = CreateIntentsForElement(element, colorVal.Item1, colorVal.Item2, gapDuration); result.OffsetAllCommandsByTime(lastMarkTime - StartTime); _elementData.Add(result); } lastMarkTime = mark.EndTime; } if (mapData.PhonemeState(mark.Text, item)) { var colorVal = mapData.ConfiguredColorAndIntensity(item); var result = CreateIntentsForElement(element, colorVal.Item1, colorVal.Item2, mark.Duration); result.OffsetAllCommandsByTime(mark.StartTime - StartTime); _elementData.Add(result); } } if (!AllowMarkGaps) { var gapDuration = StartTime + TimeSpan - lastMarkTime; if (gapDuration.TotalMilliseconds > 10 && mapData.PhonemeState("REST", item)) { //Fill the gap with a rest var colorVal = mapData.ConfiguredColorAndIntensity(item); var result = CreateIntentsForElement(element, colorVal.Item1, colorVal.Item2, gapDuration); result.OffsetAllCommandsByTime(lastMarkTime - StartTime); _elementData.Add(result); } } } else { if (mapData.PhonemeState(phoneme.ToString(), item)) { var colorVal = mapData.ConfiguredColorAndIntensity(item); var result = CreateIntentsForElement(element, colorVal.Item1, colorVal.Item2, TimeSpan); _elementData.Add(result); } } } }
private void RenderPropertyMapElements(IElementNode element, PhonemeType phoneme) { var fm = element.Properties.Get(FaceDescriptor.ModuleId) as FaceModule; if (fm == null) { return; } if (fm.IsFaceComponentType(FaceComponent.Outlines) && ShowOutline) { var colorVal = fm.ConfiguredColorAndIntensity(); var result = CreateIntentsForElement(element, colorVal.Item1, colorVal.Item2, TimeSpan); _elementData.Add(result); } else if (fm.IsFaceComponentType(FaceComponent.EyesOpen) && EyeMode == EyeMode.Open) { var colorVal = fm.ConfiguredColorAndIntensity(); var result = CreateIntentsForElement(element, colorVal.Item1, colorVal.Item2, TimeSpan); _elementData.Add(result); } if (fm.IsFaceComponentType(FaceComponent.EyesClosed) && EyeMode == EyeMode.Closed) { var colorVal = fm.ConfiguredColorAndIntensity(); var result = CreateIntentsForElement(element, colorVal.Item1, colorVal.Item2, TimeSpan); _elementData.Add(result); } else { if (LipSyncMode == LipSyncMode.MarkCollection && _marks != null) { TimeSpan lastMarkTime = StartTime; foreach (var mark in _marks) { if (!AllowMarkGaps) { var gapDuration = mark.StartTime - lastMarkTime; if (gapDuration.TotalMilliseconds > 10 && fm.PhonemeState("REST")) { //Fill the gap with a rest var colorVal = fm.ConfiguredColorAndIntensity(); var result = CreateIntentsForElement(element, colorVal.Item1, colorVal.Item2, gapDuration); result.OffsetAllCommandsByTime(lastMarkTime - StartTime); _elementData.Add(result); } lastMarkTime = mark.EndTime; } if (fm.PhonemeState(mark.Text)) { var colorVal = fm.ConfiguredColorAndIntensity(); var result = CreateIntentsForElement(element, colorVal.Item1, colorVal.Item2, mark.Duration); result.OffsetAllCommandsByTime(mark.StartTime - StartTime); _elementData.Add(result); } } if (!AllowMarkGaps) { var gapDuration = StartTime + TimeSpan - lastMarkTime; if (gapDuration.TotalMilliseconds > 10 && fm.PhonemeState("REST")) { //Fill the gap with a rest var colorVal = fm.ConfiguredColorAndIntensity(); var result = CreateIntentsForElement(element, colorVal.Item1, colorVal.Item2, gapDuration); result.OffsetAllCommandsByTime(lastMarkTime - StartTime); _elementData.Add(result); } } } else { if (fm.PhonemeState(phoneme.ToString())) { var colorVal = fm.ConfiguredColorAndIntensity(); var result = CreateIntentsForElement(element, colorVal.Item1, colorVal.Item2, TimeSpan); _elementData.Add(result); } } } }
// renders the given node to the internal ElementData dictionary. If the given node is // not a element, will recursively descend until we render its elements. private void RenderNodes() { EffectIntents result; LipSyncMapData mapData = null; List <ElementNode> renderNodes = TargetNodes.SelectMany(x => x.GetNodeEnumerator()).ToList(); if (LipSyncMode == LipSyncMode.MarkCollection) { SetupMarks(); } if (_data.PhonemeMapping != null) { if (!_library.Library.ContainsKey(_data.PhonemeMapping)) { _data.PhonemeMapping = _library.DefaultMappingName; } PhonemeType phoneme = _data.StaticPhoneme; if (_library.Library.TryGetValue(_data.PhonemeMapping, out mapData)) { if (mapData.IsMatrix) { SetupPictureEffect(); if (LipSyncMode == LipSyncMode.MarkCollection) { foreach (var mark in _marks) { var file = mapData.PictureFileName(mark.Text.ToUpper()); _thePic.Image = LoadImage(file); _thePic.TimeSpan = mark.Duration; _thePic.MarkDirty(); result = _thePic.Render(); result.OffsetAllCommandsByTime(mark.StartTime - StartTime); _elementData.Add(result); //} } } else { var file = mapData.PictureFileName(phoneme); if (File.Exists(file)) { _thePic.Image = LoadImage(file); result = _thePic.Render(); _elementData.Add(result); } } if (null != _thePic) { result = _thePic.Render(); _elementData.Add(result); } } else { renderNodes.ForEach(delegate(ElementNode element) { LipSyncMapItem item = mapData.FindMapItem(element.Name); if (item != null) { if (LipSyncMode == LipSyncMode.MarkCollection && _marks != null) { foreach (var mark in _marks) { if (mapData.PhonemeState(element.Name, mark.Text.ToUpper(), item)) { var colorVal = mapData.ConfiguredColorAndIntensity(element.Name, mark.Text.ToUpper(), item); result = CreateIntentsForPhoneme(element, colorVal.Item1, colorVal.Item2, mark.Duration); result.OffsetAllCommandsByTime(mark.StartTime - StartTime); _elementData.Add(result); } } } else { if (mapData.PhonemeState(element.Name, phoneme.ToString(), item)) { var colorVal = mapData.ConfiguredColorAndIntensity(element.Name, phoneme.ToString(), item); result = CreateIntentsForPhoneme(element, colorVal.Item1, colorVal.Item2, TimeSpan); _elementData.Add(result); } } } }); TearDownPictureEffect(); } } } }
public Image ImageForPhoneme(PhonemeType phoneme) { return(ImageForPhoneme(phoneme.ToString())); }
public Color ConfiguredColor(string itemName, PhonemeType phoneme, LipSyncMapItem item = null) { return(ConfiguredColor(itemName, phoneme.ToString(), item)); }