Example #1
0
    void FindMorphTransforms()
    {
        if (this.targetMesh != null)
        {
            if (targetMesh.sharedMesh.blendShapeCount == 0)
            {
                UnityEngine.Debug.LogError("Couldn't find characters blend shapes.");
            }

            else
            {
                for (int i = 0; i < targetMesh.sharedMesh.blendShapeCount; i++)
                {
                    string   name          = targetMesh.sharedMesh.GetBlendShapeName(i);
                    string[] namePartition = name.Split('.');
                    name = namePartition[namePartition.Length - 1];

                    //Do not track this blendshape.
                    if (name != "BaseHeadGeo" && name != "BaseHead")
                    {
                        MorphTransform morphTransform = new MorphTransform(name, targetMesh, i);

                        if (this.animationTransforms.ContainsKey(name))
                        {
                            this.animationTransforms[name] = morphTransform;
                        }
                        else
                        {
                            this.animationTransforms.Add(name, morphTransform);
                        }
                    }
                    else
                    {
                        targetMesh.SetBlendShapeWeight(i, 100f);                         //Activate character head
                    }
                }
            }
        }
    }
 public override void Bind(TransformBase animationTransform)
 {
     this.morphTransform = animationTransform as MorphTransform;
 }