private void CastPose(CubismPose pose) { if ((pose != null) && (model != null)) { pose.SetPosing(model, weight); } }
public static CubismPose CombinePoses(CubismPose[] poses, float[] levels) { if ((poses.Length != levels.Length) || (poses.Length == 0)) { return(null); } CubismPose newpose = new CubismPose(); float sumlevel = 0; for (int i = 0; i < poses.Length; i++) { foreach (var set in poses[i].setting.Keys) { newpose.setting[set] = 0; } sumlevel += levels[i]; } if (sumlevel == 0f) { sumlevel = 1f; } for (int i = 0; i < poses.Length; i++) { foreach (var set in poses[i].setting.Keys) { newpose.setting[set] += poses[i].setting[set] / sumlevel * levels[i]; } } return(newpose); }
private void loadPoseFile() { _pose = CubismPose.LoadCubismPoseFromAssetPath(motion3Json); if (_pose != null) { jsonLoaded = true; } }
// Use this for initialization public override void Refresh() { lance = CubismPose.LoadCubismPoseFromAssetPath(lancePath); wrist = CubismPose.LoadCubismPoseFromAssetPath(wristPath); chop = CubismPose.LoadCubismPoseFromAssetPath(chopPath); thumb = CubismPose.LoadCubismPoseFromAssetPath(thumbPath); palm = CubismPose.LoadCubismPoseFromAssetPath(palmPath); backpalm = CubismPose.LoadCubismPoseFromAssetPath(backpalmPath); Debug.Log("LMPalmPoseflag : Start()"); }
public static CubismPose operator *(CubismPose x, float y) { CubismPose cubismPose = new CubismPose(); foreach (var e in x.setting) { cubismPose.setting[e.Key] = e.Value * y; } return(cubismPose); }
/// <summary> /// Sets the viseme to morph target. /// </summary> void SetVisemeToMorphTarget(OVRLipSync.Frame frame) { var combinepose = CubismPose.CombinePoses(visemePoses, frame.Visemes); if (combinepose != null) { combinepose.SetPosing(target); } //animation.Stop(); //for (int i = 0; i < blendMotions.Length; i++) //{ // animation.Blend("ovrlip_" + i.ToString(), frame.Visemes[i]); //} }
public static CubismPose CombinePoses(CubismPose A, CubismPose B, float weightA) { if ((A == null) || (B == null)) { return(null); } CubismPose[] list = new CubismPose[2]; list[0] = A; list[1] = B; float[] weightlist = new float[2]; weightlist[0] = weightA; weightlist[1] = 1f - weightA; return(CubismPose.CombinePoses(list, weightlist)); }
public static CubismPose operator -(CubismPose x, CubismPose y) { CubismPose cubismPose = new CubismPose(); foreach (var e in x.setting) { if (y.setting.ContainsKey(e.Key)) { cubismPose.setting[e.Key] = e.Value - y.setting[e.Key]; } else { cubismPose.setting[e.Key] = e.Value; } } return(cubismPose); }
public static CubismPose LoadCubismPoseFromAssetPath(string assetpath) { if ((assetpath == string.Empty) || (assetpath == null)) { return(null); } CubismPose cubismPose = null; string loadedJson = null; #if UNITY_EDITOR loadedJson = File.ReadAllText(assetpath); #else loadedJson = Resources.Load(assetpath, typeof(TextAsset)) as TextAsset; #endif if (loadedJson == null) { Debug.Log("CubismPose: input path is no good."); return(null); } CubismMotion3Json json = CubismMotion3Json.LoadFrom(loadedJson); if (json == null) { Debug.Log("CubismPose: i feel input json is not json."); return(null); } cubismPose = new CubismPose(); foreach (var curbe in json.Curves) { if ((curbe.Target == "Parameter") && (curbe.Segments.Length > 2)) { cubismPose.setting.Add(curbe.Id, curbe.Segments[1]); } } return(cubismPose); }
// Use this for initialization void Start() { // morph target needs to be set manually; possibly other components will need the same //if (animation == null) //{ // Debug.Log("OVRLipSyncLive2D.Start WARNING: Please set required public components!"); // return; //} // make sure there is a phoneme context assigned to this object lipsyncContext = GetComponent <OVRLipSyncContextBase>(); if (lipsyncContext == null) { Debug.Log("OVRLipSyncLive2D.Start WARNING: No phoneme context component set to object"); } visemePoses = new CubismPose[motion3Jsons.Length]; for (int i = 0; i < motion3Jsons.Length; i++) { visemePoses[i] = CubismPose.LoadCubismPoseFromAssetPath(motion3Jsons[i]); if (visemePoses[i] == null) { Debug.Log("OVRLipSyncLive2D.Start no load pose"); } } target = gameObject.GetComponent <CubismModel>(); if (target == null) { Debug.Log("OVRLipSyncLive2D.Start no find target cubism model"); } // Send smoothing amount to context lipsyncContext.Smoothing = SmoothAmount; }
private void setMagnitudeTyankoPose() { if (palmPositionPosePoints.Count == 0) { return; } debugField = ""; float sumMagnitude = 0f; List <PosePoint> copylist = new List <PosePoint>(palmPositionPosePoints.ToArray()); for (int i = 0; i < copylist.Count; i++) { sumMagnitude += (copylist[i].position - palmPos).magnitude; } if (sumMagnitude == 0) { return; } copylist.Sort(delegate(PosePoint x, PosePoint y) { return(((x.position - palmPos).magnitude < (y.position - palmPos).magnitude)?-1:1); }); float[] levels = new float[copylist.Count]; float remain = 1f; for (int i = 0; i < copylist.Count; i++) { float mag = (copylist[i].position - palmPos).magnitude; levels[i] = (sumMagnitude - mag) / sumMagnitude * remain; remain *= (1f - levels[i]); debugField += i.ToString() + ":" + levels[i].ToString() + "/" + copylist[i].position.ToString() + "\n"; } CubismPose.CombinePoses(copylist.ConvertAll <CubismPose>(delegate(PosePoint x) { return(x.Pose); }).ToArray(), levels).SetPosing(model); }
private void setMagnitudePose() { if (palmPositionPosePoints.Count == 0) { return; } debugField = ""; float[] levels = new float[palmPositionPosePoints.Count]; CubismPose[] poselist = new CubismPose[palmPositionPosePoints.Count]; float maxMagnitude = 0f; for (int i = 0; i < palmPositionPosePoints.Count; i++) { levels[i] = (palmPositionPosePoints[i].position - palmPos).magnitude; maxMagnitude = Mathf.Max(maxMagnitude, levels[i]); poselist[i] = palmPositionPosePoints[i].Pose; } for (int i = 0; i < palmPositionPosePoints.Count; i++) { debugField += i.ToString() + ":" + levels[i].ToString() + "/" + palmPositionPosePoints[i].position.ToString() + "\n"; levels[i] = maxMagnitude - levels[i]; } CubismPose.CombinePoses(poselist, levels).SetPosing(model); }