/// <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));
        }
Exemple #3
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);
        }
Exemple #4
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);
        }