@memori.ai/memori-react 7.7.1 → 7.8.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/components/Avatar/Avatar.js +2 -2
  3. package/dist/components/Avatar/Avatar.js.map +1 -1
  4. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +6 -3
  5. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +10 -6
  6. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
  7. package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.d.ts +13 -17
  8. package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js +110 -111
  9. package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js.map +1 -1
  10. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +3 -4
  11. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +77 -52
  12. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
  13. package/dist/components/Avatar/AvatarView/index.d.ts +7 -3
  14. package/dist/components/Avatar/AvatarView/index.js +2 -2
  15. package/dist/components/Avatar/AvatarView/index.js.map +1 -1
  16. package/dist/components/MemoriWidget/MemoriWidget.js +34 -22
  17. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  18. package/dist/components/layouts/ZoomedFullBody.js +1 -8
  19. package/dist/components/layouts/ZoomedFullBody.js.map +1 -1
  20. package/dist/components/layouts/zoomed-full-body.css +5 -1
  21. package/dist/context/visemeContext.d.ts +9 -15
  22. package/dist/context/visemeContext.js +73 -190
  23. package/dist/context/visemeContext.js.map +1 -1
  24. package/esm/components/Avatar/Avatar.js +2 -2
  25. package/esm/components/Avatar/Avatar.js.map +1 -1
  26. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +6 -3
  27. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +10 -6
  28. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
  29. package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.d.ts +13 -17
  30. package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js +112 -113
  31. package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js.map +1 -1
  32. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +3 -4
  33. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +81 -55
  34. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
  35. package/esm/components/Avatar/AvatarView/index.d.ts +7 -3
  36. package/esm/components/Avatar/AvatarView/index.js +2 -2
  37. package/esm/components/Avatar/AvatarView/index.js.map +1 -1
  38. package/esm/components/MemoriWidget/MemoriWidget.js +34 -22
  39. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  40. package/esm/components/layouts/ZoomedFullBody.js +1 -8
  41. package/esm/components/layouts/ZoomedFullBody.js.map +1 -1
  42. package/esm/components/layouts/zoomed-full-body.css +5 -1
  43. package/esm/context/visemeContext.d.ts +9 -15
  44. package/esm/context/visemeContext.js +74 -191
  45. package/esm/context/visemeContext.js.map +1 -1
  46. package/package.json +1 -1
  47. package/src/components/Avatar/Avatar.tsx +5 -5
  48. package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +33 -19
  49. package/src/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.tsx +181 -158
  50. package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +116 -71
  51. package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +12 -24
  52. package/src/components/Avatar/AvatarView/index.tsx +9 -8
  53. package/src/components/MemoriWidget/MemoriWidget.tsx +45 -38
  54. package/src/components/layouts/ZoomedFullBody.tsx +6 -11
  55. package/src/components/layouts/zoomed-full-body.css +5 -1
  56. package/src/context/visemeContext.tsx +130 -283
  57. package/dist/components/AttachmentMediaModal/AttachmentMediaModal.d.ts +0 -14
  58. package/dist/components/AttachmentMediaModal/AttachmentMediaModal.js +0 -66
  59. package/dist/components/AttachmentMediaModal/AttachmentMediaModal.js.map +0 -1
  60. package/dist/components/Avatar/AvatarView/components/controls.d.ts +0 -23
  61. package/dist/components/Avatar/AvatarView/components/controls.js +0 -55
  62. package/dist/components/Avatar/AvatarView/components/controls.js.map +0 -1
  63. package/dist/components/Avatar/AvatarView/components/fullbodyAvatar.d.ts +0 -19
  64. package/dist/components/Avatar/AvatarView/components/fullbodyAvatar.js +0 -61
  65. package/dist/components/Avatar/AvatarView/components/fullbodyAvatar.js.map +0 -1
  66. package/dist/components/Avatar/AvatarView/components/halfbodyAvatar.d.ts +0 -9
  67. package/dist/components/Avatar/AvatarView/components/halfbodyAvatar.js +0 -39
  68. package/dist/components/Avatar/AvatarView/components/halfbodyAvatar.js.map +0 -1
  69. package/dist/components/Avatar/AvatarView/components/loader.d.ts +0 -5
  70. package/dist/components/Avatar/AvatarView/components/loader.js +0 -12
  71. package/dist/components/Avatar/AvatarView/components/loader.js.map +0 -1
  72. package/dist/components/Avatar/AvatarView/utils/useMouthSpeaking.d.ts +0 -2
  73. package/dist/components/Avatar/AvatarView/utils/useMouthSpeaking.js +0 -68
  74. package/dist/components/Avatar/AvatarView/utils/useMouthSpeaking.js.map +0 -1
  75. package/dist/components/AvatarView/components/avatar.d.ts +0 -9
  76. package/dist/components/AvatarView/components/avatar.js +0 -35
  77. package/dist/components/AvatarView/components/avatar.js.map +0 -1
  78. package/dist/components/AvatarView/components/fullbodyAvatar.d.ts +0 -10
  79. package/dist/components/AvatarView/components/fullbodyAvatar.js +0 -62
  80. package/dist/components/AvatarView/components/fullbodyAvatar.js.map +0 -1
  81. package/dist/components/AvatarView/components/loader.d.ts +0 -5
  82. package/dist/components/AvatarView/components/loader.js +0 -12
  83. package/dist/components/AvatarView/components/loader.js.map +0 -1
  84. package/dist/components/AvatarView/index.d.ts +0 -17
  85. package/dist/components/AvatarView/index.js +0 -35
  86. package/dist/components/AvatarView/index.js.map +0 -1
  87. package/dist/components/AvatarView/utils/useEyeBlink.d.ts +0 -2
  88. package/dist/components/AvatarView/utils/useEyeBlink.js +0 -40
  89. package/dist/components/AvatarView/utils/useEyeBlink.js.map +0 -1
  90. package/dist/components/AvatarView/utils/useHeadMovement.d.ts +0 -2
  91. package/dist/components/AvatarView/utils/useHeadMovement.js +0 -53
  92. package/dist/components/AvatarView/utils/useHeadMovement.js.map +0 -1
  93. package/dist/components/AvatarView/utils/useLoadingMorphAnim.d.ts +0 -2
  94. package/dist/components/AvatarView/utils/useLoadingMorphAnim.js +0 -34
  95. package/dist/components/AvatarView/utils/useLoadingMorphAnim.js.map +0 -1
  96. package/dist/components/AvatarView/utils/useMouthSpeaking.d.ts +0 -2
  97. package/dist/components/AvatarView/utils/useMouthSpeaking.js +0 -60
  98. package/dist/components/AvatarView/utils/useMouthSpeaking.js.map +0 -1
  99. package/dist/components/AvatarView/utils/useSmile.d.ts +0 -2
  100. package/dist/components/AvatarView/utils/useSmile.js +0 -30
  101. package/dist/components/AvatarView/utils/useSmile.js.map +0 -1
  102. package/dist/components/AvatarView/utils/utils.d.ts +0 -13
  103. package/dist/components/AvatarView/utils/utils.js +0 -42
  104. package/dist/components/AvatarView/utils/utils.js.map +0 -1
  105. package/dist/components/ImageUpload/ImageUpload.css +0 -168
  106. package/dist/components/ImageUpload/ImageUpload.d.ts +0 -28
  107. package/dist/components/ImageUpload/ImageUpload.js +0 -163
  108. package/dist/components/ImageUpload/ImageUpload.js.map +0 -1
  109. package/dist/components/layouts/Default.d.ts +0 -17
  110. package/dist/components/layouts/Default.js +0 -8
  111. package/dist/components/layouts/Default.js.map +0 -1
  112. package/dist/components/ui/Message.d.ts +0 -17
  113. package/dist/components/ui/Message.js +0 -13
  114. package/dist/components/ui/Message.js.map +0 -1
  115. package/esm/components/AttachmentMediaModal/AttachmentMediaModal.d.ts +0 -14
  116. package/esm/components/AttachmentMediaModal/AttachmentMediaModal.js +0 -63
  117. package/esm/components/AttachmentMediaModal/AttachmentMediaModal.js.map +0 -1
  118. package/esm/components/Avatar/AvatarView/components/controls.d.ts +0 -23
  119. package/esm/components/Avatar/AvatarView/components/controls.js +0 -52
  120. package/esm/components/Avatar/AvatarView/components/controls.js.map +0 -1
  121. package/esm/components/Avatar/AvatarView/components/fullbodyAvatar.d.ts +0 -19
  122. package/esm/components/Avatar/AvatarView/components/fullbodyAvatar.js +0 -57
  123. package/esm/components/Avatar/AvatarView/components/fullbodyAvatar.js.map +0 -1
  124. package/esm/components/Avatar/AvatarView/components/halfbodyAvatar.d.ts +0 -9
  125. package/esm/components/Avatar/AvatarView/components/halfbodyAvatar.js +0 -35
  126. package/esm/components/Avatar/AvatarView/components/halfbodyAvatar.js.map +0 -1
  127. package/esm/components/Avatar/AvatarView/components/loader.d.ts +0 -5
  128. package/esm/components/Avatar/AvatarView/components/loader.js +0 -9
  129. package/esm/components/Avatar/AvatarView/components/loader.js.map +0 -1
  130. package/esm/components/Avatar/AvatarView/utils/useMouthSpeaking.d.ts +0 -2
  131. package/esm/components/Avatar/AvatarView/utils/useMouthSpeaking.js +0 -65
  132. package/esm/components/Avatar/AvatarView/utils/useMouthSpeaking.js.map +0 -1
  133. package/esm/components/AvatarView/components/avatar.d.ts +0 -9
  134. package/esm/components/AvatarView/components/avatar.js +0 -31
  135. package/esm/components/AvatarView/components/avatar.js.map +0 -1
  136. package/esm/components/AvatarView/components/fullbodyAvatar.d.ts +0 -10
  137. package/esm/components/AvatarView/components/fullbodyAvatar.js +0 -58
  138. package/esm/components/AvatarView/components/fullbodyAvatar.js.map +0 -1
  139. package/esm/components/AvatarView/components/loader.d.ts +0 -5
  140. package/esm/components/AvatarView/components/loader.js +0 -9
  141. package/esm/components/AvatarView/components/loader.js.map +0 -1
  142. package/esm/components/AvatarView/index.d.ts +0 -17
  143. package/esm/components/AvatarView/index.js +0 -31
  144. package/esm/components/AvatarView/index.js.map +0 -1
  145. package/esm/components/AvatarView/utils/useEyeBlink.d.ts +0 -2
  146. package/esm/components/AvatarView/utils/useEyeBlink.js +0 -37
  147. package/esm/components/AvatarView/utils/useEyeBlink.js.map +0 -1
  148. package/esm/components/AvatarView/utils/useHeadMovement.d.ts +0 -2
  149. package/esm/components/AvatarView/utils/useHeadMovement.js +0 -50
  150. package/esm/components/AvatarView/utils/useHeadMovement.js.map +0 -1
  151. package/esm/components/AvatarView/utils/useLoadingMorphAnim.d.ts +0 -2
  152. package/esm/components/AvatarView/utils/useLoadingMorphAnim.js +0 -31
  153. package/esm/components/AvatarView/utils/useLoadingMorphAnim.js.map +0 -1
  154. package/esm/components/AvatarView/utils/useMouthSpeaking.d.ts +0 -2
  155. package/esm/components/AvatarView/utils/useMouthSpeaking.js +0 -57
  156. package/esm/components/AvatarView/utils/useMouthSpeaking.js.map +0 -1
  157. package/esm/components/AvatarView/utils/useSmile.d.ts +0 -2
  158. package/esm/components/AvatarView/utils/useSmile.js +0 -27
  159. package/esm/components/AvatarView/utils/useSmile.js.map +0 -1
  160. package/esm/components/AvatarView/utils/utils.d.ts +0 -13
  161. package/esm/components/AvatarView/utils/utils.js +0 -33
  162. package/esm/components/AvatarView/utils/utils.js.map +0 -1
  163. package/esm/components/ImageUpload/ImageUpload.css +0 -168
  164. package/esm/components/ImageUpload/ImageUpload.d.ts +0 -28
  165. package/esm/components/ImageUpload/ImageUpload.js +0 -160
  166. package/esm/components/ImageUpload/ImageUpload.js.map +0 -1
  167. package/esm/components/layouts/Default.d.ts +0 -17
  168. package/esm/components/layouts/Default.js +0 -5
  169. package/esm/components/layouts/Default.js.map +0 -1
  170. package/esm/components/ui/Message.d.ts +0 -17
  171. package/esm/components/ui/Message.js +0 -10
  172. package/esm/components/ui/Message.js.map +0 -1
@@ -1,13 +1,9 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useEffect, useRef, useState, useCallback } from 'react';
3
- import { Vector3, Euler, AnimationMixer, SkinnedMesh, LoopOnce, } from 'three';
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { Vector3, Euler, AnimationMixer, SkinnedMesh, MathUtils, LoopOnce, } from 'three';
4
4
  import { useAnimations, useGLTF } from '@react-three/drei';
5
5
  import { useGraph, useFrame } from '@react-three/fiber';
6
6
  import { correctMaterials, isSkinnedMesh } from '../../../../../helpers/utils';
7
- import { useAvatarBlink } from '../../utils/useEyeBlink';
8
- const lerp = (start, end, alpha) => {
9
- return start * (1 - alpha) + end * alpha;
10
- };
11
7
  const AVATAR_POSITION = new Vector3(0, -1, 0);
12
8
  const AVATAR_ROTATION = new Euler(0.175, 0, 0);
13
9
  const AVATAR_POSITION_ZOOMED = new Vector3(0, -1.45, 0);
@@ -15,67 +11,49 @@ const ANIMATION_URLS = {
15
11
  MALE: 'https://assets.memori.ai/api/v2/asset/2c5e88a4-cf62-408b-9ef0-518b099dfcb2.glb',
16
12
  FEMALE: 'https://assets.memori.ai/api/v2/asset/0e49aa5d-f757-4292-a170-d843c2839a41.glb',
17
13
  };
18
- const TRANSITION_DURATION = 0.5;
19
- export default function FullbodyAvatar({ url, sex, onLoaded, currentBaseAction, timeScale, isZoomed, setMorphTargetInfluences, setMorphTargetDictionary, morphTargetInfluences, eyeBlink, setMeshRef, }) {
14
+ const BLINK_CONFIG = {
15
+ minInterval: 1000,
16
+ maxInterval: 5000,
17
+ blinkDuration: 150,
18
+ };
19
+ const EMOTION_TRANSITION_SPEED = 0.1;
20
+ export default function FullbodyAvatar({ url, sex, onLoaded, currentBaseAction, timeScale, isZoomed, eyeBlink, morphTargetSmoothing = 0.5, updateCurrentViseme, setMorphTargetDictionary, setMorphTargetInfluences, emotionMorphTargets, }) {
20
21
  const { scene } = useGLTF(url);
21
22
  const { animations } = useGLTF(ANIMATION_URLS[sex]);
22
23
  const { nodes, materials } = useGraph(scene);
23
24
  const { actions } = useAnimations(animations, scene);
24
- const [mixer] = useState(() => new AnimationMixer(scene));
25
- const avatarMeshRef = useRef();
25
+ const mixer = useRef(new AnimationMixer(scene));
26
+ const headMeshRef = useRef();
26
27
  const currentActionRef = useRef(null);
27
- const isTransitioningRef = useRef(false);
28
- const lastActionTimeRef = useRef(0);
29
28
  const [isTransitioningToIdle, setIsTransitioningToIdle] = useState(false);
30
- useAvatarBlink({
31
- enabled: eyeBlink || false,
32
- setMorphTargetInfluences,
33
- config: {
34
- minInterval: 1500,
35
- maxInterval: 4000,
36
- blinkDuration: 120,
37
- },
38
- });
39
- const transitionToIdle = useCallback(() => {
40
- if (!actions || isTransitioningRef.current)
41
- return;
42
- isTransitioningRef.current = true;
43
- const finishCurrentAnimation = () => {
44
- if (currentActionRef.current && !currentActionRef.current.paused) {
45
- const remainingTime = (currentActionRef.current.getClip().duration -
46
- currentActionRef.current.time) *
47
- 1000;
48
- setTimeout(() => {
49
- startIdleAnimation();
50
- }, remainingTime);
51
- }
52
- else {
53
- startIdleAnimation();
54
- }
55
- };
56
- const startIdleAnimation = () => {
57
- const idleAnimations = Object.keys(actions).filter(key => key.startsWith('Idle'));
58
- const randomIdle = idleAnimations[Math.floor(Math.random() * idleAnimations.length)];
59
- const idleAction = actions[randomIdle];
60
- if (currentActionRef.current && idleAction) {
61
- currentActionRef.current.crossFadeTo(idleAction, TRANSITION_DURATION, true);
62
- }
63
- if (idleAction) {
64
- idleAction.reset().fadeIn(TRANSITION_DURATION).play();
65
- currentActionRef.current = idleAction;
29
+ const lastBlinkTime = useRef(0);
30
+ const nextBlinkTime = useRef(0);
31
+ const isBlinking = useRef(false);
32
+ const blinkStartTime = useRef(0);
33
+ const currentEmotionRef = useRef({});
34
+ const previousEmotionKeysRef = useRef(new Set());
35
+ useEffect(() => {
36
+ correctMaterials(materials);
37
+ scene.traverse((object) => {
38
+ if (object instanceof SkinnedMesh) {
39
+ if (object.name === 'GBNL__Head' || object.name === 'Wolf3D_Avatar') {
40
+ headMeshRef.current = object;
41
+ if (object.morphTargetDictionary && object.morphTargetInfluences) {
42
+ setMorphTargetDictionary(object.morphTargetDictionary);
43
+ const initialInfluences = Object.keys(object.morphTargetDictionary).reduce((acc, key) => ({ ...acc, [key]: 0 }), {});
44
+ setMorphTargetInfluences(initialInfluences);
45
+ }
46
+ }
66
47
  }
67
- setTimeout(() => {
68
- isTransitioningRef.current = false;
69
- }, TRANSITION_DURATION * 1000);
48
+ });
49
+ onLoaded === null || onLoaded === void 0 ? void 0 : onLoaded();
50
+ return () => {
51
+ Object.values(materials).forEach(material => material.dispose());
52
+ Object.values(nodes)
53
+ .filter(isSkinnedMesh)
54
+ .forEach(mesh => mesh.geometry.dispose());
70
55
  };
71
- if (currentActionRef.current &&
72
- !currentActionRef.current.getClip().name.startsWith('Idle')) {
73
- finishCurrentAnimation();
74
- }
75
- else {
76
- startIdleAnimation();
77
- }
78
- }, [actions]);
56
+ }, [materials, nodes, url, onLoaded, scene]);
79
57
  useEffect(() => {
80
58
  if (!actions || !currentBaseAction.action)
81
59
  return;
@@ -103,66 +81,87 @@ export default function FullbodyAvatar({ url, sex, onLoaded, currentBaseAction,
103
81
  setIsTransitioningToIdle(true);
104
82
  }
105
83
  }, [actions, currentBaseAction, timeScale]);
106
- useEffect(() => {
107
- correctMaterials(materials);
108
- scene.traverse((object) => {
109
- if (object instanceof SkinnedMesh &&
110
- (object.name === 'GBNL__Head' || object.name === 'Wolf3D_Avatar')) {
111
- avatarMeshRef.current = object;
112
- setMeshRef(object);
113
- if (object.morphTargetDictionary && object.morphTargetInfluences) {
114
- setMorphTargetDictionary(object.morphTargetDictionary);
115
- const initialInfluences = Object.keys(object.morphTargetDictionary).reduce((acc, key) => ({ ...acc, [key]: 0 }), {});
116
- setMorphTargetInfluences(initialInfluences);
84
+ useFrame(state => {
85
+ if (headMeshRef.current &&
86
+ headMeshRef.current.morphTargetDictionary &&
87
+ headMeshRef.current.morphTargetInfluences) {
88
+ const currentTime = state.clock.getElapsedTime() * 1000;
89
+ let blinkValue = 0;
90
+ if (eyeBlink) {
91
+ if (currentTime >= nextBlinkTime.current && !isBlinking.current) {
92
+ isBlinking.current = true;
93
+ blinkStartTime.current = currentTime;
94
+ lastBlinkTime.current = currentTime;
95
+ nextBlinkTime.current =
96
+ currentTime +
97
+ Math.random() *
98
+ (BLINK_CONFIG.maxInterval - BLINK_CONFIG.minInterval) +
99
+ BLINK_CONFIG.minInterval;
100
+ }
101
+ if (isBlinking.current) {
102
+ const blinkProgress = (currentTime - blinkStartTime.current) / BLINK_CONFIG.blinkDuration;
103
+ if (blinkProgress <= 0.5) {
104
+ blinkValue = blinkProgress * 2;
105
+ }
106
+ else if (blinkProgress <= 1) {
107
+ blinkValue = 2 - blinkProgress * 2;
108
+ }
109
+ else {
110
+ isBlinking.current = false;
111
+ blinkValue = 0;
112
+ }
117
113
  }
118
114
  }
119
- });
120
- onLoaded === null || onLoaded === void 0 ? void 0 : onLoaded();
121
- return () => {
122
- Object.values(materials).forEach(material => material.dispose());
123
- Object.values(nodes)
124
- .filter(isSkinnedMesh)
125
- .forEach(mesh => mesh.geometry.dispose());
126
- mixer.stopAllAction();
127
- };
128
- }, [
129
- materials,
130
- nodes,
131
- url,
132
- onLoaded,
133
- setMorphTargetDictionary,
134
- setMorphTargetInfluences,
135
- setMeshRef,
136
- mixer,
137
- ]);
138
- useFrame((_, delta) => {
139
- if (avatarMeshRef.current && avatarMeshRef.current.morphTargetDictionary) {
140
- updateMorphTargetInfluences();
141
- }
142
- mixer.update(delta);
143
- function updateMorphTargetInfluences() {
144
- Object.entries(morphTargetInfluences).forEach(([key, value]) => {
145
- const index = avatarMeshRef.current.morphTargetDictionary[key];
146
- if (typeof index === 'number' &&
147
- avatarMeshRef.current.morphTargetInfluences) {
148
- const currentValue = avatarMeshRef.current.morphTargetInfluences[index];
149
- const smoothValue = lerp(currentValue, value, 0.1);
150
- avatarMeshRef.current.morphTargetInfluences[index] = smoothValue;
115
+ const currentViseme = updateCurrentViseme(currentTime / 1000);
116
+ const currentEmotionKeys = new Set(Object.keys(emotionMorphTargets));
117
+ previousEmotionKeysRef.current.forEach(key => {
118
+ if (!currentEmotionKeys.has(key)) {
119
+ const index = headMeshRef.current.morphTargetDictionary[key];
120
+ if (typeof index === 'number') {
121
+ currentEmotionRef.current[key] = 0;
122
+ if (headMeshRef.current && headMeshRef.current.morphTargetInfluences) {
123
+ headMeshRef.current.morphTargetInfluences[index] = 0;
124
+ }
125
+ }
151
126
  }
152
127
  });
153
- }
154
- if (isTransitioningToIdle && currentActionRef.current) {
155
- if (currentActionRef.current.time >=
156
- currentActionRef.current.getClip().duration) {
157
- const idleNumber = Math.floor(Math.random() * 5) + 1;
158
- const idleAction = actions[`Idle${idleNumber == 3 ? 4 : idleNumber}`];
159
- if (idleAction) {
160
- currentActionRef.current.fadeOut(0.5);
161
- idleAction.reset().fadeIn(0.5).play();
162
- currentActionRef.current = idleAction;
163
- setIsTransitioningToIdle(false);
128
+ Object.entries(headMeshRef.current.morphTargetDictionary).forEach(([key, index]) => {
129
+ if (typeof index === 'number') {
130
+ let targetValue = 0;
131
+ if (Object.prototype.hasOwnProperty.call(emotionMorphTargets, key)) {
132
+ const targetEmotionValue = emotionMorphTargets[key];
133
+ const currentEmotionValue = currentEmotionRef.current[key] || 0;
134
+ const newEmotionValue = MathUtils.lerp(currentEmotionValue, targetEmotionValue * 2, EMOTION_TRANSITION_SPEED);
135
+ currentEmotionRef.current[key] = newEmotionValue;
136
+ targetValue += newEmotionValue;
137
+ }
138
+ if (currentViseme && key === currentViseme.name) {
139
+ targetValue += currentViseme.weight * 1.3;
140
+ }
141
+ if (key === 'eyesClosed' && eyeBlink) {
142
+ targetValue += blinkValue;
143
+ }
144
+ targetValue = MathUtils.clamp(targetValue, 0, 1);
145
+ if (headMeshRef.current && headMeshRef.current.morphTargetInfluences) {
146
+ headMeshRef.current.morphTargetInfluences[index] = MathUtils.lerp(headMeshRef.current.morphTargetInfluences[index], targetValue, morphTargetSmoothing);
147
+ }
148
+ }
149
+ });
150
+ previousEmotionKeysRef.current = currentEmotionKeys;
151
+ if (isTransitioningToIdle && currentActionRef.current) {
152
+ if (currentActionRef.current.time >=
153
+ currentActionRef.current.getClip().duration) {
154
+ const idleNumber = Math.floor(Math.random() * 5) + 1;
155
+ const idleAction = actions[`Idle${idleNumber == 3 ? 4 : idleNumber}`];
156
+ if (idleAction) {
157
+ currentActionRef.current.fadeOut(0.5);
158
+ idleAction.reset().fadeIn(0.5).play();
159
+ currentActionRef.current = idleAction;
160
+ setIsTransitioningToIdle(false);
161
+ }
164
162
  }
165
163
  }
164
+ mixer.current.update(0.01);
166
165
  }
167
166
  });
168
167
  return (_jsx("group", { position: isZoomed ? AVATAR_POSITION_ZOOMED : AVATAR_POSITION, rotation: AVATAR_ROTATION, children: _jsx("primitive", { object: scene }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"fullbodyAvatar.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fullbodyAvatar.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EACL,OAAO,EACP,KAAK,EACL,cAAc,EACd,WAAW,EAEX,SAAS,EAET,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AA8B/E,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,MAAM,sBAAsB,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAExD,MAAM,cAAc,GAAG;IACrB,IAAI,EAAE,gFAAgF;IACtF,MAAM,EACJ,gFAAgF;CACnF,CAAC;AAGF,MAAM,YAAY,GAAG;IACnB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,GAAG;CACnB,CAAC;AAEF,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAErC,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,GAAG,EACH,GAAG,EACH,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,oBAAoB,GAAG,GAAG,EAC1B,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,GACC;IACpB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAErD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,MAAM,EAAe,CAAC;IAC1C,MAAM,gBAAgB,GAAG,MAAM,CAAyB,IAAI,CAAC,CAAC;IAC9D,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAG1E,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAGjC,MAAM,iBAAiB,GAAG,MAAM,CAAyB,EAAE,CAAC,CAAC;IAC7D,MAAM,sBAAsB,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IAE9D,SAAS,CAAC,GAAG,EAAE;QACb,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE5B,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAgB,EAAE,EAAE;YAClC,IAAI,MAAM,YAAY,WAAW,EAAE;gBACjC,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE;oBACnE,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC;oBAC7B,IAAI,MAAM,CAAC,qBAAqB,IAAI,MAAM,CAAC,qBAAqB,EAAE;wBAChE,wBAAwB,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;wBAEvD,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CACnC,MAAM,CAAC,qBAAqB,CAC7B,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;wBACnD,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;qBAC7C;iBACF;aACF;QACH,CAAC,CAAC,CAAC;QAEH,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,EAAI,CAAC;QAEb,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;iBACjB,MAAM,CAAC,aAAa,CAAC;iBACrB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAG7C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM;YAAE,OAAO;QAElD,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,CAAC,IAAI,CACV,cAAc,iBAAiB,CAAC,MAAM,yBAAyB,CAChE,CAAC;YACF,OAAO;SACR;QAED,MAAM,eAAe,GAAG,GAAG,CAAC;QAC5B,MAAM,cAAc,GAAG,GAAG,CAAC;QAE3B,IAAI,gBAAgB,CAAC,OAAO,EAAE;YAC5B,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;SACnD;QAED,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC;QAGrC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;QAGhC,IACE,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;YAC5C,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC7C,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;YAC/C,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC7C,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,EAChD;YACA,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC/B,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC;YACnC,wBAAwB,CAAC,IAAI,CAAC,CAAC;SAChC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;IAE5C,QAAQ,CAAC,KAAK,CAAC,EAAE;QACf,IACE,WAAW,CAAC,OAAO;YACnB,WAAW,CAAC,OAAO,CAAC,qBAAqB;YACzC,WAAW,CAAC,OAAO,CAAC,qBAAqB,EACzC;YACA,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC;YAGxD,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,QAAQ,EAAE;gBACZ,IAAI,WAAW,IAAI,aAAa,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBAC/D,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;oBAC1B,cAAc,CAAC,OAAO,GAAG,WAAW,CAAC;oBACrC,aAAa,CAAC,OAAO,GAAG,WAAW,CAAC;oBACpC,aAAa,CAAC,OAAO;wBACnB,WAAW;4BACX,IAAI,CAAC,MAAM,EAAE;gCACX,CAAC,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;4BACvD,YAAY,CAAC,WAAW,CAAC;iBAC5B;gBAED,IAAI,UAAU,CAAC,OAAO,EAAE;oBACtB,MAAM,aAAa,GACjB,CAAC,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,aAAa,CAAC;oBACtE,IAAI,aAAa,IAAI,GAAG,EAAE;wBAExB,UAAU,GAAG,aAAa,GAAG,CAAC,CAAC;qBAChC;yBAAM,IAAI,aAAa,IAAI,CAAC,EAAE;wBAE7B,UAAU,GAAG,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC;qBACpC;yBAAM;wBAEL,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;wBAC3B,UAAU,GAAG,CAAC,CAAC;qBAChB;iBACF;aACF;YAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;YAG9D,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAGrE,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAC3C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBAChC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAQ,CAAC,qBAAsB,CAAC,GAAG,CAAC,CAAC;oBAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;wBAC7B,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACnC,IAAI,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,qBAAqB,EAAE;4BACpE,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;yBACtD;qBACF;iBACF;YACH,CAAC,CAAC,CAAC;YAGH,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAC/D,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACf,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBAC7B,IAAI,WAAW,GAAG,CAAC,CAAC;oBAGpB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,EAAE;wBAClE,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;wBACpD,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAChE,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CACpC,mBAAmB,EACnB,kBAAkB,GAAG,CAAC,EACtB,wBAAwB,CACzB,CAAC;wBACF,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;wBACjD,WAAW,IAAI,eAAe,CAAC;qBAChC;oBAGD,IAAI,aAAa,IAAI,GAAG,KAAK,aAAa,CAAC,IAAI,EAAE;wBAC/C,WAAW,IAAI,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC;qBAC3C;oBAGD,IAAI,GAAG,KAAK,YAAY,IAAI,QAAQ,EAAE;wBACpC,WAAW,IAAI,UAAU,CAAC;qBAC3B;oBAGD,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAGjD,IAAI,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,qBAAqB,EAAE;wBACpE,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,IAAI,CAC/D,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAChD,WAAW,EACX,oBAAoB,CACrB,CAAC;qBACH;iBACF;YACH,CAAC,CACF,CAAC;YAGF,sBAAsB,CAAC,OAAO,GAAG,kBAAkB,CAAC;YAGpD,IAAI,qBAAqB,IAAI,gBAAgB,CAAC,OAAO,EAAE;gBACrD,IACE,gBAAgB,CAAC,OAAO,CAAC,IAAI;oBAC7B,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAC3C;oBAEA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACrD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;oBAEtE,IAAI,UAAU,EAAE;wBACd,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;wBACtC,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;wBACtC,gBAAgB,CAAC,OAAO,GAAG,UAAU,CAAC;wBACtC,wBAAwB,CAAC,KAAK,CAAC,CAAC;qBACjC;iBACF;aACF;YAGD,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC5B;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,gBACE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,eAAe,EAC7D,QAAQ,EAAE,eAAe,YAEzB,oBAAW,MAAM,EAAE,KAAK,GAAI,GACtB,CACT,CAAC;AACJ,CAAC"}
@@ -1,15 +1,14 @@
1
- import { Object3D } from 'three';
2
1
  interface HalfBodyAvatarProps {
3
2
  url: string;
4
3
  setMorphTargetInfluences: (morphTargetInfluences: any) => void;
5
4
  headMovement?: boolean;
6
5
  speaking?: boolean;
7
6
  onLoaded?: () => void;
8
- setMeshRef: (mesh: Object3D) => void;
9
- clearVisemes: () => void;
10
7
  setMorphTargetDictionary: (morphTargetDictionary: any) => void;
11
8
  eyeBlink?: boolean;
12
9
  morphTargetInfluences: any;
10
+ updateCurrentViseme: (currentTime: number) => any;
11
+ morphTargetSmoothing?: number;
13
12
  }
14
- export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, headMovement, eyeBlink, setMeshRef, onLoaded, clearVisemes, morphTargetInfluences, }: HalfBodyAvatarProps): JSX.Element;
13
+ export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, eyeBlink, onLoaded, morphTargetSmoothing, updateCurrentViseme, }: HalfBodyAvatarProps): JSX.Element;
15
14
  export {};
@@ -1,73 +1,99 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useMemo, useRef } from 'react';
3
- import { Vector3 } from 'three';
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useRef } from 'react';
3
+ import { SkinnedMesh, Vector3 } from 'three';
4
4
  import { useGLTF } from '@react-three/drei';
5
5
  import { correctMaterials, isSkinnedMesh } from '../../../../../helpers/utils';
6
- import { useGraph, dispose, useFrame } from '@react-three/fiber';
7
- import { useAvatarBlink } from '../../utils/useEyeBlink';
8
- import useHeadMovement from '../../utils/useHeadMovement';
9
- import { hideHands } from '../../utils/utils';
6
+ import { useGraph, useFrame } from '@react-three/fiber';
7
+ import { AnimationMixer, MathUtils } from 'three';
10
8
  const AVATAR_POSITION = new Vector3(0, -0.6, 0);
11
- const lerp = (start, end, alpha) => {
12
- return start * (1 - alpha) + end * alpha;
9
+ const BLINK_CONFIG = {
10
+ minInterval: 1000,
11
+ maxInterval: 5000,
12
+ blinkDuration: 150,
13
13
  };
14
- export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, headMovement, eyeBlink, setMeshRef, onLoaded, clearVisemes, morphTargetInfluences, }) {
14
+ export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, eyeBlink, onLoaded, morphTargetSmoothing = 0.5, updateCurrentViseme, }) {
15
15
  const { scene } = useGLTF(url);
16
16
  const { nodes, materials } = useGraph(scene);
17
+ const mixer = useRef(new AnimationMixer(scene));
17
18
  const avatarMeshRef = useRef(null);
18
- useAvatarBlink({
19
- enabled: eyeBlink || false,
20
- setMorphTargetInfluences,
21
- config: {
22
- minInterval: 1500,
23
- maxInterval: 4000,
24
- blinkDuration: 120
25
- }
26
- });
27
- useHeadMovement(headMovement, nodes);
19
+ const lastBlinkTime = useRef(0);
20
+ const nextBlinkTime = useRef(0);
21
+ const isBlinking = useRef(false);
22
+ const blinkStartTime = useRef(0);
23
+ const headMeshRef = useRef();
28
24
  useEffect(() => {
29
- const setupAvatar = () => {
30
- hideHands(nodes);
31
- correctMaterials(materials);
32
- const firstSkinnedMesh = Object.values(nodes).find(isSkinnedMesh);
33
- if (firstSkinnedMesh) {
34
- setMeshRef(firstSkinnedMesh);
35
- avatarMeshRef.current = firstSkinnedMesh;
36
- if (firstSkinnedMesh.morphTargetDictionary && firstSkinnedMesh.morphTargetInfluences) {
37
- setMorphTargetDictionary(firstSkinnedMesh.morphTargetDictionary);
38
- const initialInfluences = Object.keys(firstSkinnedMesh.morphTargetDictionary).reduce((acc, key) => ({ ...acc, [key]: 0 }), {});
39
- setMorphTargetInfluences(initialInfluences);
25
+ correctMaterials(materials);
26
+ scene.traverse((object) => {
27
+ if (object instanceof SkinnedMesh) {
28
+ if (object.name === 'GBNL__Head' || object.name === 'Wolf3D_Avatar') {
29
+ headMeshRef.current = object;
30
+ if (object.morphTargetDictionary && object.morphTargetInfluences) {
31
+ setMorphTargetDictionary(object.morphTargetDictionary);
32
+ const initialInfluences = Object.keys(object.morphTargetDictionary).reduce((acc, key) => ({ ...acc, [key]: 0 }), {});
33
+ setMorphTargetInfluences(initialInfluences);
34
+ }
40
35
  }
41
36
  }
42
- onLoaded === null || onLoaded === void 0 ? void 0 : onLoaded();
43
- };
44
- setupAvatar();
37
+ });
38
+ onLoaded === null || onLoaded === void 0 ? void 0 : onLoaded();
45
39
  return () => {
46
- const disposeObjects = () => {
47
- Object.values(materials).forEach(dispose);
48
- Object.values(nodes).filter(isSkinnedMesh).forEach(dispose);
49
- clearVisemes();
50
- };
51
- disposeObjects();
40
+ Object.values(materials).forEach(material => material.dispose());
41
+ Object.values(nodes)
42
+ .filter(isSkinnedMesh)
43
+ .forEach(mesh => mesh.geometry.dispose());
52
44
  };
53
- }, [materials, nodes, url, onLoaded, clearVisemes]);
54
- const skinnedMeshes = useMemo(() => Object.values(nodes).filter(isSkinnedMesh), [nodes]);
55
- useFrame((_) => {
56
- if (avatarMeshRef.current && avatarMeshRef.current.morphTargetDictionary) {
57
- updateMorphTargetInfluences();
58
- }
59
- function updateMorphTargetInfluences() {
60
- Object.entries(morphTargetInfluences).forEach(([key, value]) => {
61
- const index = avatarMeshRef.current.morphTargetDictionary[key];
62
- if (typeof index === 'number' &&
63
- avatarMeshRef.current.morphTargetInfluences) {
64
- const currentValue = avatarMeshRef.current.morphTargetInfluences[index];
65
- const smoothValue = lerp(currentValue, value, 0.1);
66
- avatarMeshRef.current.morphTargetInfluences[index] = smoothValue;
45
+ }, [materials, nodes, url, onLoaded, scene]);
46
+ useFrame(state => {
47
+ if (headMeshRef.current &&
48
+ headMeshRef.current.morphTargetDictionary &&
49
+ headMeshRef.current.morphTargetInfluences) {
50
+ const currentTime = state.clock.getElapsedTime() * 1000;
51
+ let blinkValue = 0;
52
+ if (eyeBlink) {
53
+ if (currentTime >= nextBlinkTime.current && !isBlinking.current) {
54
+ isBlinking.current = true;
55
+ blinkStartTime.current = currentTime;
56
+ lastBlinkTime.current = currentTime;
57
+ nextBlinkTime.current =
58
+ currentTime +
59
+ Math.random() *
60
+ (BLINK_CONFIG.maxInterval - BLINK_CONFIG.minInterval) +
61
+ BLINK_CONFIG.minInterval;
62
+ }
63
+ if (isBlinking.current) {
64
+ const blinkProgress = (currentTime - blinkStartTime.current) / BLINK_CONFIG.blinkDuration;
65
+ if (blinkProgress <= 0.5) {
66
+ blinkValue = blinkProgress * 2;
67
+ }
68
+ else if (blinkProgress <= 1) {
69
+ blinkValue = 2 - blinkProgress * 2;
70
+ }
71
+ else {
72
+ isBlinking.current = false;
73
+ blinkValue = 0;
74
+ }
75
+ }
76
+ }
77
+ const currentViseme = updateCurrentViseme(currentTime / 1000);
78
+ Object.entries(headMeshRef.current.morphTargetDictionary).forEach(([key, index]) => {
79
+ if (typeof index === 'number') {
80
+ let targetValue = 0;
81
+ if (currentViseme && key === currentViseme.name) {
82
+ targetValue += currentViseme.weight * 1.3;
83
+ }
84
+ if (key === 'eyesClosed' && eyeBlink) {
85
+ targetValue += blinkValue;
86
+ }
87
+ targetValue = MathUtils.clamp(targetValue, 0, 1);
88
+ if (headMeshRef.current &&
89
+ headMeshRef.current.morphTargetInfluences) {
90
+ headMeshRef.current.morphTargetInfluences[index] = MathUtils.lerp(headMeshRef.current.morphTargetInfluences[index], targetValue, morphTargetSmoothing);
91
+ }
67
92
  }
68
93
  });
94
+ mixer.current.update(0.01);
69
95
  }
70
96
  });
71
- return (_jsxs("group", { position: AVATAR_POSITION, children: [nodes.Hips && _jsx("primitive", { object: nodes.Hips }, "armature"), skinnedMeshes.map((node) => node && (_jsx("primitive", { object: node, receiveShadow: true, castShadow: true }, node.name)))] }));
97
+ return (_jsx("group", { position: AVATAR_POSITION, children: _jsx("primitive", { object: scene }) }));
72
98
  }
73
99
  //# sourceMappingURL=halfbodyAvatar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"halfbodyAvatar.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAyB,OAAO,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAgB9C,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChD,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,KAAa,EAAU,EAAE;IACjE,OAAO,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;AAC3C,CAAC,CAAC;AACF,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,GAAG,EACH,wBAAwB,EACxB,wBAAwB,EACxB,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,qBAAqB,GACD;IACpB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAEvD,cAAc,CAAC;QACb,OAAO,EAAE,QAAQ,IAAI,KAAK;QAC1B,wBAAwB;QACxB,MAAM,EAAE;YACN,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,GAAG;SACnB;KACF,CAAC,CAAC;IACH,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAErC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,SAAS,CAAC,KAAK,CAAC,CAAC;YACjB,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAE5B,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAgB,CAAC;YACjF,IAAI,gBAAgB,EAAE;gBACpB,UAAU,CAAC,gBAAgB,CAAC,CAAC;gBAC7B,aAAa,CAAC,OAAO,GAAG,gBAAgB,CAAC;gBACzC,IAAI,gBAAgB,CAAC,qBAAqB,IAAI,gBAAgB,CAAC,qBAAqB,EAAE;oBACpF,wBAAwB,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;oBACjE,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CACnC,gBAAgB,CAAC,qBAAqB,CACvC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACnD,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;iBAC7C;aACF;YACD,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,EAAI,CAAC;QACf,CAAC,CAAC;QAEF,WAAW,EAAE,CAAC;QAEd,OAAO,GAAG,EAAE;YACV,MAAM,cAAc,GAAG,GAAG,EAAE;gBAC1B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC1C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC5D,YAAY,EAAE,CAAC;YACjB,CAAC,CAAC;YAEF,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAEpD,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAChD,CAAC,KAAK,CAAC,CACR,CAAC;IAGA,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;QACb,IAAI,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,qBAAqB,EAAE;YACxE,2BAA2B,EAAE,CAAC;SAC/B;QAED,SAAS,2BAA2B;YAClC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC7D,MAAM,KAAK,GAAG,aAAa,CAAC,OAAQ,CAAC,qBAAsB,CAAC,GAAG,CAAC,CAAC;gBACjE,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAC3B,aAAa,CAAC,OAAQ,CAAC,qBAAqB,EAAE;oBAC9C,MAAM,YAAY,GAAG,aAAa,CAAC,OAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;oBACzE,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,KAAe,EAAE,GAAG,CAAC,CAAC;oBAC7D,aAAa,CAAC,OAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;iBACnE;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAGH,OAAO,CACL,iBAAO,QAAQ,EAAE,eAAe,aAC7B,KAAK,CAAC,IAAI,IAAI,oBAA0B,MAAM,EAAE,KAAK,CAAC,IAAI,IAA7B,UAAU,CAAuB,EAC9D,aAAa,CAAC,GAAG,CAChB,CAAC,IAAc,EAAE,EAAE,CACjB,IAAI,IAAI,CACN,oBAA2B,MAAM,EAAE,IAAI,EAAE,aAAa,QAAC,UAAU,UAAjD,IAAI,CAAC,IAAI,CAA2C,CACrE,CACJ,IACK,CACT,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"halfbodyAvatar.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx"],"names":[],"mappings":"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"}
@@ -17,7 +17,11 @@ export interface Props {
17
17
  isZoomed?: boolean;
18
18
  chatEmission?: any;
19
19
  setMeshRef?: any;
20
- clearVisemes: () => void;
21
- setEmotion: (emotion: string) => void;
20
+ stopProcessing: () => void;
21
+ resetVisemeQueue: () => void;
22
+ updateCurrentViseme: (currentTime: number) => {
23
+ name: string;
24
+ weight: number;
25
+ } | null;
22
26
  }
23
- export default function ContainerAvatarView({ url, sex, style, rotateAvatar, eyeBlink, headMovement, speaking, fallback, fallbackImg, halfBody, loading, animation, showControls, isZoomed, chatEmission, setMeshRef, clearVisemes, setEmotion, }: Props): JSX.Element;
27
+ export default function ContainerAvatarView({ url, sex, style, rotateAvatar, eyeBlink, headMovement, speaking, fallback, fallbackImg, halfBody, loading, animation, showControls, isZoomed, chatEmission, stopProcessing, resetVisemeQueue, updateCurrentViseme, }: Props): JSX.Element;
@@ -31,7 +31,7 @@ const getCameraSettings = (halfBody, isZoomed) => halfBody
31
31
  }
32
32
  : { fov: 40, position: [0, 0.0000175, 3] };
33
33
  const getLightingComponent = () => isAndroid() || isiOS() ? (_jsx(SpotLight, { distance: 100, position: [-0.3, 0.2, 1.25], angle: Math.PI / 2, attenuation: 5, anglePower: 5 })) : (_jsx(Environment, { files: "https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/venice_sunset_1k.hdr" }));
34
- export default function ContainerAvatarView({ url, sex, style, rotateAvatar, eyeBlink, headMovement, speaking, fallback, fallbackImg, halfBody = true, loading, animation, showControls = false, isZoomed, chatEmission, setMeshRef, clearVisemes, setEmotion, }) {
35
- return (_jsx(Canvas, { style: style || (halfBody ? defaultStyles.halfBody : defaultStyles.fullBody), camera: getCameraSettings(halfBody, isZoomed), children: _jsxs(Suspense, { fallback: fallback || _jsx(Loader, { fallbackImg: fallbackImg }), children: [getLightingComponent(), rotateAvatar && _jsx(OrbitControls, { enablePan: false, enableZoom: false }), _jsx(AvatarView, { url: url, sex: sex, showControls: showControls, loading: loading || false, animation: animation, isZoomed: isZoomed || false, eyeBlink: eyeBlink || false, headMovement: headMovement || false, speaking: speaking || false, halfBody: halfBody || false, chatEmission: chatEmission, setMeshRef: setMeshRef, clearVisemes: clearVisemes, setEmotion: setEmotion })] }) }));
34
+ export default function ContainerAvatarView({ url, sex, style, rotateAvatar, eyeBlink, headMovement, speaking, fallback, fallbackImg, halfBody = true, loading, animation, showControls = false, isZoomed, chatEmission, stopProcessing, resetVisemeQueue, updateCurrentViseme, }) {
35
+ return (_jsx(Canvas, { style: style || (halfBody ? defaultStyles.halfBody : defaultStyles.fullBody), camera: getCameraSettings(halfBody, isZoomed), children: _jsxs(Suspense, { fallback: fallback || _jsx(Loader, { fallbackImg: fallbackImg }), children: [getLightingComponent(), rotateAvatar && _jsx(OrbitControls, { enablePan: false, enableZoom: false }), _jsx(AvatarView, { url: url, sex: sex, showControls: showControls, loading: loading || false, animation: animation, isZoomed: isZoomed || false, eyeBlink: eyeBlink || false, headMovement: headMovement || false, speaking: speaking || false, halfBody: halfBody || false, chatEmission: chatEmission, updateCurrentViseme: updateCurrentViseme, stopProcessing: stopProcessing, resetVisemeQueue: resetVisemeQueue })] }) }));
36
36
  }
37
37
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Avatar/AvatarView/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Avatar/AvatarView/index.tsx"],"names":[],"mappings":"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"}