From faf653f8ad55b1a355e6776ae10fe7f73d0a87bc Mon Sep 17 00:00:00 2001 From: Emiliana <38952746+emilianavt@users.noreply.github.com> Date: Thu, 26 Nov 2020 01:07:20 +0100 Subject: [PATCH] Reintroduced JawMovement animator parameter compatibility in `OpenSeeVRMDriver`. --- Examples/OpenSeeVRMDriver.cs | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/Examples/OpenSeeVRMDriver.cs b/Examples/OpenSeeVRMDriver.cs index 60f085a..53868a2 100644 --- a/Examples/OpenSeeVRMDriver.cs +++ b/Examples/OpenSeeVRMDriver.cs @@ -216,6 +216,7 @@ public class OpenSeeVRMDriver : MonoBehaviour { private OpenSeeBlendShapeProxy proxy = new OpenSeeBlendShapeProxy(); private Animator animator; + private bool haveJawParameter; private Transform jawBone; private Quaternion jawRotation = Quaternion.identity; private HumanBodyBones[] humanBodyBones; @@ -532,17 +533,22 @@ public class OpenSeeVRMDriver : MonoBehaviour { } void SetJaw(float v) { - if (jawBoneAnimation == null || jawBone == null) + if (haveJawParameter) { + animator.SetFloat("JawMovement", v); return; - for (int i = 0; i < humanBodyBones.Length; i++) { - if (humanBodyBoneTransforms[i] != null) - humanBodyBoneRotations[i] = humanBodyBoneTransforms[i].localRotation; } - jawBoneAnimation.SampleAnimation(lastAvatar.gameObject, v / jawBoneAnimation.frameRate); - jawRotation = jawBone.localRotation; - for (int i = 0; i < humanBodyBones.Length; i++) { - if (humanBodyBoneTransforms[i] != null) - humanBodyBoneTransforms[i].localRotation = humanBodyBoneRotations[i]; + if (jawBoneAnimation != null && jawBone != null) { + for (int i = 0; i < humanBodyBones.Length; i++) { + if (humanBodyBoneTransforms[i] != null) + humanBodyBoneRotations[i] = humanBodyBoneTransforms[i].localRotation; + } + jawBoneAnimation.SampleAnimation(lastAvatar.gameObject, v / jawBoneAnimation.frameRate); + jawRotation = jawBone.localRotation; + for (int i = 0; i < humanBodyBones.Length; i++) { + if (humanBodyBoneTransforms[i] != null) + humanBodyBoneTransforms[i].localRotation = humanBodyBoneRotations[i]; + } + return; } } @@ -777,6 +783,13 @@ public class OpenSeeVRMDriver : MonoBehaviour { animator = lastAvatar.gameObject.GetComponent(); if (animator != null) { + haveJawParameter = false; + for (int i = 0; i < animator.parameterCount; i++) { + if (animator.parameters[i].name == "JawMovement") { + haveJawParameter = true; + break; + } + } jawBone = animator.GetBoneTransform(HumanBodyBones.Jaw); for (int i = 0; i < humanBodyBones.Length; i++) { if (humanBodyBones[i] >= 0 && humanBodyBones[i] < HumanBodyBones.LastBone)