void CopyHandPoseTargetToHandModel() { targetHandler.GetHumanPose(ref targetPose); handModelHandler = new HumanPoseHandler(handModelAnimator.avatar, handModelAnimator.transform); HandHumanoidPoseChange(() => { for (int i = 0; i < targetPose.muscles.Length; i++) { var muscleName = HumanTrait.MuscleName[i]; if (TraitLeftHandPropMap.ContainsKey(muscleName)) //左手ポーズプロパティ { handModelPose.muscles[i] = targetPose.muscles[i]; } else if (TraitRightHandPropMap.ContainsKey(muscleName)) //右手ポーズプロパティ { handModelPose.muscles[i] = targetPose.muscles[i]; } } }); }
private void Update() { float nowAnimationTime = wAnimationWindowHelper.GetCurrentTime(); //アニメーションがシークされた? if (animationTime != nowAnimationTime) { animationTime = nowAnimationTime; CopyHandPoseTargetToHandModel(); //IKターゲットの位置をリセット for (int i = 0; i < handIkTargets.Length; i++) { handIkTargets[i].position = handIkTargetInitTransforms[i].position; } } //ハンドモデルからターゲットモデルに手のポーズをコピーする targetHandler.GetHumanPose(ref targetPose); handModelHandler.GetHumanPose(ref handModelPose); for (int i = 0; i < targetPose.muscles.Length; i++) { var muscleName = HumanTrait.MuscleName[i]; if (TraitLeftHandPropMap.ContainsKey(muscleName)) //左手ポーズプロパティ { targetPose.muscles[i] = handModelPose.muscles[i]; } else if (TraitRightHandPropMap.ContainsKey(muscleName)) //右手ポーズプロパティ { targetPose.muscles[i] = handModelPose.muscles[i]; } } targetHandler.SetHumanPose(ref handModelPose); //セット }