Ejemplo n.º 1
0
 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;
     }
 }
Ejemplo n.º 4
0
 // 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;
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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);
        }