private void OnVrmLoaded(VrmLoadedInfo info) { _ik = info.vrmRoot.GetComponent <FullBodyBipedIK>(); var spineBone = info.animator.GetBoneTransform(HumanBodyBones.Spine); _rightArmBendGoal = new GameObject().transform; _rightArmBendGoal.SetParent(spineBone); _rightArmBendGoal.localRotation = Quaternion.identity; _ik.solver.rightArmChain.bendConstraint.bendGoal = _rightArmBendGoal; _leftArmBendGoal = new GameObject().transform; _leftArmBendGoal.SetParent(spineBone); _leftArmBendGoal.localRotation = Quaternion.identity; _ik.solver.leftArmChain.bendConstraint.bendGoal = _leftArmBendGoal; _isInitialized = true; }
private void OnVrmLoaded(VrmLoadedInfo info) { _blendShapeProxy = info.blendShape; _rightEyeBone = info.animator.GetBoneTransform(HumanBodyBones.RightEye); _leftEyeBone = info.animator.GetBoneTransform(HumanBodyBones.LeftEye); _rightEyeBrowHeight?.Dispose(); _rightEyeBrowHeight = _faceTracker.FaceParts.RightEyebrow.Height.Subscribe( v => _rightEyeBrowValue = v ); _leftEyeBrowHeight?.Dispose(); _leftEyeBrowHeight = _faceTracker.FaceParts.LeftEyebrow.Height.Subscribe( v => _leftEyeBrowValue = v ); _hasValidEyeSettings = _rightEyeBone != null && _leftEyeBone != null && CheckBlinkBlendShapeClips(_blendShapeProxy); IsInitialized = true; }
private void OnVrmLoaded(VrmLoadedInfo info) { _rightEye = info.animator.GetBoneTransform(HumanBodyBones.RightEye); _leftEye = info.animator.GetBoneTransform(HumanBodyBones.LeftEye); _hasValidEyeBone = (_rightEye != null && _leftEye != null); }
private void OnVrmLoaded(VrmLoadedInfo info) { _animator = info.animator; _humanPoseHandler = new HumanPoseHandler(_animator.avatar, _animator.transform); //とりあえず現在の値を拾っておく _humanPoseHandler.GetHumanPose(ref _humanPose); _defaultHumanPose = _humanPose; for (int i = 0; i < 10; i++) { _hold[i] = false; _targetAngles[i] = DefaultBendingAngle; } _fingers = new Transform[][] { new Transform[] { _animator.GetBoneTransform(HumanBodyBones.LeftThumbDistal), _animator.GetBoneTransform(HumanBodyBones.LeftThumbIntermediate), _animator.GetBoneTransform(HumanBodyBones.LeftThumbProximal), }, new Transform[] { _animator.GetBoneTransform(HumanBodyBones.LeftIndexDistal), _animator.GetBoneTransform(HumanBodyBones.LeftIndexIntermediate), _animator.GetBoneTransform(HumanBodyBones.LeftIndexProximal), }, new Transform[] { _animator.GetBoneTransform(HumanBodyBones.LeftMiddleDistal), _animator.GetBoneTransform(HumanBodyBones.LeftMiddleIntermediate), _animator.GetBoneTransform(HumanBodyBones.LeftMiddleProximal), }, new Transform[] { _animator.GetBoneTransform(HumanBodyBones.LeftRingDistal), _animator.GetBoneTransform(HumanBodyBones.LeftRingIntermediate), _animator.GetBoneTransform(HumanBodyBones.LeftRingProximal), }, new Transform[] { _animator.GetBoneTransform(HumanBodyBones.LeftLittleDistal), _animator.GetBoneTransform(HumanBodyBones.LeftLittleIntermediate), _animator.GetBoneTransform(HumanBodyBones.LeftLittleProximal), }, new Transform[] { _animator.GetBoneTransform(HumanBodyBones.RightThumbDistal), _animator.GetBoneTransform(HumanBodyBones.RightThumbIntermediate), _animator.GetBoneTransform(HumanBodyBones.RightThumbProximal), }, new Transform[] { _animator.GetBoneTransform(HumanBodyBones.RightIndexDistal), _animator.GetBoneTransform(HumanBodyBones.RightIndexIntermediate), _animator.GetBoneTransform(HumanBodyBones.RightIndexProximal), }, new Transform[] { _animator.GetBoneTransform(HumanBodyBones.RightMiddleDistal), _animator.GetBoneTransform(HumanBodyBones.RightMiddleIntermediate), _animator.GetBoneTransform(HumanBodyBones.RightMiddleProximal), }, new Transform[] { _animator.GetBoneTransform(HumanBodyBones.RightRingDistal), _animator.GetBoneTransform(HumanBodyBones.RightRingIntermediate), _animator.GetBoneTransform(HumanBodyBones.RightRingProximal), }, new Transform[] { _animator.GetBoneTransform(HumanBodyBones.RightLittleDistal), _animator.GetBoneTransform(HumanBodyBones.RightLittleIntermediate), _animator.GetBoneTransform(HumanBodyBones.RightLittleProximal), }, }; }
public void OnVrmLoaded(VrmLoadedInfo info) { InitializeBlendShapeItems(info.vrmRoot); IsInitialized = true; }
private async void OnVRMLoaded(VrmLoadedInfo vrm) { var lookAtHead = vrm.vrmRoot.GetComponent <VRMLookAtHead>(); var lookAtIk = vrm.vrmRoot.GetComponent <LookAtIK>(); var bodyIK = vrm.vrmRoot.GetComponent <FullBodyBipedIK>(); var initialHeadIkTarget = lookAtHead.Target; var animator = vrm.animator; _receivedMessageHandler.ReceiveCommand(new ReceivedCommand(MessageCommandNames.AutoBlinkDuringFaceTracking, false.ToString())); //レイアウト調整 _receivedMessageHandler.ReceiveCommand(new ReceivedCommand(MessageCommandNames.RequestAutoAdjust)); _receivedMessageHandler.ReceiveCommand(new ReceivedCommand(MessageCommandNames.RequestAutoAdjustEyebrow)); await Task.Delay(300); vrm.context.ShowMeshes(); _isInitialized = true; cameraControlEnabled.onValueChanged.AddListener(value => { _receivedMessageHandler.ReceiveCommand(new ReceivedCommand(MessageCommandNames.CameraControl, value.ToString())); }); backgroundImageWidthEnabled.onValueChanged.AddListener(value => { _receivedMessageHandler.ReceiveCommand(new ReceivedCommand(MessageCommandNames.ChangeBackgroundImageDirection, value.ToString())); }); backgroundTransparentEnabled.onValueChanged.AddListener((value) => { _receivedMessageHandler.ReceiveCommand(new ReceivedCommand(MessageCommandNames.ChangeBackground, value.ToString())); }); var firstPerson = vrm.vrmRoot.GetComponent <VRMFirstPerson>(); //アバターの目線位置に合わせる desktopShareEnabled.onValueChanged.AddListener((value) => { if (!value) { SetVideoChatMode(lookAtHead, lookAtIk, firstPerson); } else { lookAtHead.Target = initialHeadIkTarget; lookAtIk.solver.target = lookAtHead.Target; _receivedMessageHandler.ReceiveCommand(new ReceivedCommand(MessageCommandNames.RequestAutoAdjust)); _receivedMessageHandler.ReceiveCommand(new ReceivedCommand(MessageCommandNames.RequestAutoAdjustEyebrow)); _receivedMessageHandler.ReceiveCommand(new ReceivedCommand(MessageCommandNames.EnableDesktopShareMode, true.ToString())); } lookAtIk.enabled = value; bodyIK.enabled = value; animator.SetBool(_hashWaiting, !value); }); faceTrackingEnabled.onValueChanged.AddListener((value) => { if (value) { var device = faceTrackingDevices.options[faceTrackingDevices.value].text; _receivedMessageHandler.ReceiveCommand(new ReceivedCommand( MessageCommandNames.SetCameraDeviceName, device) ); _receivedMessageHandler.ReceiveCommand(new ReceivedCommand( MessageCommandNames.EnableFaceTracking, true.ToString()) ); } else { _receivedMessageHandler.ReceiveCommand(new ReceivedCommand( MessageCommandNames.EnableFaceTracking, false.ToString()) ); } }); handTrackingEnabled.onValueChanged.AddListener((value) => { _receivedMessageHandler.ReceiveCommand(new ReceivedCommand( MessageCommandNames.EnableImageBasedHandTracking, value.ToString()) ); }); handTrackingEnabled.onValueChanged.AddListener((value) => { _receivedMessageHandler.ReceiveCommand(new ReceivedCommand( MessageCommandNames.EnableImageBasedHandTracking, value.ToString()) ); }); voiceLipSyncEnabled.onValueChanged.AddListener((value) => { if (value) { var device = microphoneDevices.options[microphoneDevices.value].text; _receivedMessageHandler.ReceiveCommand(new ReceivedCommand( MessageCommandNames.SetMicrophoneDeviceName, device) ); _receivedMessageHandler.ReceiveCommand(new ReceivedCommand( MessageCommandNames.EnableLipSync, true.ToString()) ); } else { _receivedMessageHandler.ReceiveCommand(new ReceivedCommand( MessageCommandNames.EnableLipSync, false.ToString()) ); } }); foreach (var device in WebCamTexture.devices) { faceTrackingDevices.options.Add(new Dropdown.OptionData(device.name)); } //フェイストラッキングはデフォルトで有効 faceTrackingDevices.value = faceTrackingDevices.options.FindIndex(c => c.text.StartsWith("FaceTime")); faceTrackingDevices.RefreshShownValue(); var cameraDevice = faceTrackingDevices.options[faceTrackingDevices.value].text; _receivedMessageHandler.ReceiveCommand(new ReceivedCommand( MessageCommandNames.SetCameraDeviceName, cameraDevice) ); foreach (var device in Microphone.devices) { microphoneDevices.options.Add(new Dropdown.OptionData(device)); } microphoneDevices.value = 0; microphoneDevices.RefreshShownValue(); SetVideoChatMode(lookAtHead, lookAtIk, firstPerson); }
private void OnVrmLoaded(VrmLoadedInfo info) { _head = info.animator.GetBoneTransform(HumanBodyBones.Head); _headYawAngleDegree = 0; _hasVrmBone = true; }