private void FindMesh()
 {
     if (m_avatar.VisemeSkinnedMesh == null)
     {
         var smrs = m_avatar.GetComponentsInChildren <SkinnedMeshRenderer>();
         foreach (var smr in smrs)
         {
             if (smr.sharedMesh.blendShapeCount >= (_visemeNames.Length + 4))
             {
                 m_avatar.VisemeSkinnedMesh = smr;
                 GetBlendShapeNames();
                 return;
             }
         }
     }
 }
Beispiel #2
0
    void AutoDetectLipSync()
    {
        FillVisemeNames();

        var smrs = avatarDescriptor.GetComponentsInChildren <SkinnedMeshRenderer>();

        foreach (var smr in smrs)
        {
            for (int i = 0; i < visemeNames.Count; ++i)
            {
                for (int b = 0; b < smr.sharedMesh.blendShapeCount; ++b)
                {
                    if (visemeNames[i] == smr.sharedMesh.GetBlendShapeName(b) || (smr.sharedMesh.GetBlendShapeName(b) == "vrc.v_ee" && visemeNames[i] == "vrc.v_e"))
                    {
                        avatarDescriptor.lipSync           = VRCSDK2.VRC_AvatarDescriptor.LipSyncStyle.VisemeBlendShape;
                        avatarDescriptor.VisemeSkinnedMesh = smr;
                        avatarDescriptor.VisemeBlendShapes = null;
                        return;
                    }
                }
            }
        }

        foreach (var smr in smrs)
        {
            if (smr.sharedMesh.blendShapeCount > 0)
            {
                avatarDescriptor.lipSync           = VRCSDK2.VRC_AvatarDescriptor.LipSyncStyle.JawFlapBlendShape;
                avatarDescriptor.VisemeSkinnedMesh = null;
                avatarDescriptor.lipSyncJawBone    = null;
                return;
            }
        }

        if (avatarDescriptor.GetComponent <Animator>().GetBoneTransform(HumanBodyBones.Jaw) != null)
        {
            avatarDescriptor.lipSync           = VRCSDK2.VRC_AvatarDescriptor.LipSyncStyle.JawFlapBone;
            avatarDescriptor.lipSyncJawBone    = avatarDescriptor.GetComponent <Animator>().GetBoneTransform(HumanBodyBones.Jaw);
            avatarDescriptor.VisemeSkinnedMesh = null;
            return;
        }
    }
    void AutoDetectLipSync()
    {
        var smrs = avatarDescriptor.GetComponentsInChildren <SkinnedMeshRenderer>();

        foreach (var smr in smrs)
        {
            if (smr.sharedMesh.blendShapeCount > 0)
            {
                avatarDescriptor.lipSyncJawBone = null;

                if (smr.sharedMesh.blendShapeCount > 1)
                {
                    avatarDescriptor.lipSync           = VRCSDK2.VRC_AvatarDescriptor.LipSyncStyle.VisemeBlendShape;
                    avatarDescriptor.VisemeSkinnedMesh = smr;
                    shouldRefreshVisemes = true;
                }
                else
                {
                    avatarDescriptor.lipSync           = VRCSDK2.VRC_AvatarDescriptor.LipSyncStyle.JawFlapBlendShape;
                    avatarDescriptor.VisemeSkinnedMesh = null;
                }

                return;
            }
        }

        Animator a = avatarDescriptor.GetComponent <Animator>();

        if (!a)
        {
            EditorUtility.DisplayDialog("Ooops", "This avatar has no Animator and can have no lipsync.", "OK");
        }
        else if (a.GetBoneTransform(HumanBodyBones.Jaw) != null)
        {
            avatarDescriptor.lipSync           = VRCSDK2.VRC_AvatarDescriptor.LipSyncStyle.JawFlapBone;
            avatarDescriptor.lipSyncJawBone    = avatarDescriptor.GetComponent <Animator>().GetBoneTransform(HumanBodyBones.Jaw);
            avatarDescriptor.VisemeSkinnedMesh = null;
            return;
        }
    }
Beispiel #4
0
    void AutoDetectLipSync()
    {
        var smrs = avatarDescriptor.GetComponentsInChildren <SkinnedMeshRenderer>();

        foreach (var smr in smrs)
        {
            if (smr.sharedMesh.blendShapeCount > 0)
            {
                avatarDescriptor.lipSync           = VRCSDK2.VRC_AvatarDescriptor.LipSyncStyle.JawFlapBlendShape;
                avatarDescriptor.VisemeSkinnedMesh = null;
                avatarDescriptor.lipSyncJawBone    = null;
                return;
            }
        }

        if (avatarDescriptor.GetComponent <Animator>().GetBoneTransform(HumanBodyBones.Jaw) != null)
        {
            avatarDescriptor.lipSync           = VRCSDK2.VRC_AvatarDescriptor.LipSyncStyle.JawFlapBone;
            avatarDescriptor.lipSyncJawBone    = avatarDescriptor.GetComponent <Animator>().GetBoneTransform(HumanBodyBones.Jaw);
            avatarDescriptor.VisemeSkinnedMesh = null;
            return;
        }
    }