@memori.ai/memori-react 7.7.0 → 7.7.1
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.
- package/CHANGELOG.md +12 -0
- package/dist/components/Avatar/Avatar.js +2 -2
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +3 -4
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +6 -10
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.d.ts +17 -11
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js +111 -110
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +4 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +4 -2
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
- package/dist/components/Avatar/AvatarView/index.d.ts +3 -5
- package/dist/components/Avatar/AvatarView/index.js +2 -2
- package/dist/components/Avatar/AvatarView/index.js.map +1 -1
- package/dist/components/MemoriWidget/MemoriWidget.js +119 -117
- package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/dist/components/layouts/ZoomedFullBody.js.map +1 -1
- package/dist/components/layouts/zoomed-full-body.css +1 -1
- package/dist/context/visemeContext.d.ts +15 -8
- package/dist/context/visemeContext.js +191 -64
- package/dist/context/visemeContext.js.map +1 -1
- package/dist/styles.css +0 -1
- package/esm/components/Avatar/Avatar.js +2 -2
- package/esm/components/Avatar/Avatar.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +3 -4
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +6 -10
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.d.ts +17 -11
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js +113 -112
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +4 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +4 -2
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
- package/esm/components/Avatar/AvatarView/index.d.ts +3 -5
- package/esm/components/Avatar/AvatarView/index.js +2 -2
- package/esm/components/Avatar/AvatarView/index.js.map +1 -1
- package/esm/components/MemoriWidget/MemoriWidget.js +119 -117
- package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/esm/components/layouts/ZoomedFullBody.js.map +1 -1
- package/esm/components/layouts/zoomed-full-body.css +1 -1
- package/esm/context/visemeContext.d.ts +15 -8
- package/esm/context/visemeContext.js +192 -65
- package/esm/context/visemeContext.js.map +1 -1
- package/esm/styles.css +0 -1
- package/package.json +1 -1
- package/src/components/Avatar/Avatar.stories.tsx +5 -7
- package/src/components/Avatar/Avatar.tsx +5 -3
- package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +19 -20
- package/src/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.tsx +158 -179
- package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +7 -1
- package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +24 -36
- package/src/components/Avatar/AvatarView/index.tsx +8 -3
- package/src/components/MemoriWidget/MemoriWidget.tsx +161 -140
- package/src/components/layouts/ZoomedFullBody.test.tsx +1 -1
- package/src/components/layouts/ZoomedFullBody.tsx +2 -2
- package/src/components/layouts/zoomed-full-body.css +1 -1
- package/src/context/visemeContext.tsx +298 -111
- package/src/index.stories.tsx +23 -21
- package/src/styles.css +0 -1
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useRef, useState } from 'react';
|
|
3
|
-
import { Vector3, Euler, AnimationMixer, SkinnedMesh,
|
|
2
|
+
import { useEffect, useRef, useState, useCallback } from 'react';
|
|
3
|
+
import { Vector3, Euler, AnimationMixer, SkinnedMesh, 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
|
+
};
|
|
7
11
|
const AVATAR_POSITION = new Vector3(0, -1, 0);
|
|
8
12
|
const AVATAR_ROTATION = new Euler(0.175, 0, 0);
|
|
9
13
|
const AVATAR_POSITION_ZOOMED = new Vector3(0, -1.45, 0);
|
|
@@ -11,49 +15,67 @@ const ANIMATION_URLS = {
|
|
|
11
15
|
MALE: 'https://assets.memori.ai/api/v2/asset/2c5e88a4-cf62-408b-9ef0-518b099dfcb2.glb',
|
|
12
16
|
FEMALE: 'https://assets.memori.ai/api/v2/asset/0e49aa5d-f757-4292-a170-d843c2839a41.glb',
|
|
13
17
|
};
|
|
14
|
-
const
|
|
15
|
-
|
|
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, }) {
|
|
18
|
+
const TRANSITION_DURATION = 0.5;
|
|
19
|
+
export default function FullbodyAvatar({ url, sex, onLoaded, currentBaseAction, timeScale, isZoomed, setMorphTargetInfluences, setMorphTargetDictionary, morphTargetInfluences, eyeBlink, setMeshRef, }) {
|
|
21
20
|
const { scene } = useGLTF(url);
|
|
22
21
|
const { animations } = useGLTF(ANIMATION_URLS[sex]);
|
|
23
22
|
const { nodes, materials } = useGraph(scene);
|
|
24
23
|
const { actions } = useAnimations(animations, scene);
|
|
25
|
-
const mixer =
|
|
26
|
-
const
|
|
24
|
+
const [mixer] = useState(() => new AnimationMixer(scene));
|
|
25
|
+
const avatarMeshRef = useRef();
|
|
27
26
|
const currentActionRef = useRef(null);
|
|
27
|
+
const isTransitioningRef = useRef(false);
|
|
28
|
+
const lastActionTimeRef = useRef(0);
|
|
28
29
|
const [isTransitioningToIdle, setIsTransitioningToIdle] = useState(false);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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);
|
|
47
51
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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;
|
|
66
|
+
}
|
|
67
|
+
setTimeout(() => {
|
|
68
|
+
isTransitioningRef.current = false;
|
|
69
|
+
}, TRANSITION_DURATION * 1000);
|
|
55
70
|
};
|
|
56
|
-
|
|
71
|
+
if (currentActionRef.current &&
|
|
72
|
+
!currentActionRef.current.getClip().name.startsWith('Idle')) {
|
|
73
|
+
finishCurrentAnimation();
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
startIdleAnimation();
|
|
77
|
+
}
|
|
78
|
+
}, [actions]);
|
|
57
79
|
useEffect(() => {
|
|
58
80
|
if (!actions || !currentBaseAction.action)
|
|
59
81
|
return;
|
|
@@ -81,87 +103,66 @@ export default function FullbodyAvatar({ url, sex, onLoaded, currentBaseAction,
|
|
|
81
103
|
setIsTransitioningToIdle(true);
|
|
82
104
|
}
|
|
83
105
|
}, [actions, currentBaseAction, timeScale]);
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
-
}
|
|
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);
|
|
113
117
|
}
|
|
114
118
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
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;
|
|
148
151
|
}
|
|
149
152
|
});
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
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);
|
|
162
164
|
}
|
|
163
165
|
}
|
|
164
|
-
mixer.current.update(0.01);
|
|
165
166
|
}
|
|
166
167
|
});
|
|
167
168
|
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":";AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"fullbodyAvatar.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/fullbodyAvatar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
import { Object3D } from 'three';
|
|
1
2
|
interface HalfBodyAvatarProps {
|
|
2
3
|
url: string;
|
|
3
4
|
setMorphTargetInfluences: (morphTargetInfluences: any) => void;
|
|
4
5
|
headMovement?: boolean;
|
|
5
6
|
speaking?: boolean;
|
|
6
7
|
onLoaded?: () => void;
|
|
8
|
+
setMeshRef: (mesh: Object3D) => void;
|
|
9
|
+
clearVisemes: () => void;
|
|
7
10
|
setMorphTargetDictionary: (morphTargetDictionary: any) => void;
|
|
8
11
|
eyeBlink?: boolean;
|
|
9
12
|
morphTargetInfluences: any;
|
|
10
13
|
}
|
|
11
|
-
export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, headMovement, eyeBlink, onLoaded, morphTargetInfluences, }: HalfBodyAvatarProps): JSX.Element;
|
|
14
|
+
export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, headMovement, eyeBlink, setMeshRef, onLoaded, clearVisemes, morphTargetInfluences, }: HalfBodyAvatarProps): JSX.Element;
|
|
12
15
|
export {};
|
|
@@ -11,7 +11,7 @@ const AVATAR_POSITION = new Vector3(0, -0.6, 0);
|
|
|
11
11
|
const lerp = (start, end, alpha) => {
|
|
12
12
|
return start * (1 - alpha) + end * alpha;
|
|
13
13
|
};
|
|
14
|
-
export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, headMovement, eyeBlink, onLoaded, morphTargetInfluences, }) {
|
|
14
|
+
export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, headMovement, eyeBlink, setMeshRef, onLoaded, clearVisemes, morphTargetInfluences, }) {
|
|
15
15
|
const { scene } = useGLTF(url);
|
|
16
16
|
const { nodes, materials } = useGraph(scene);
|
|
17
17
|
const avatarMeshRef = useRef(null);
|
|
@@ -31,6 +31,7 @@ export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorph
|
|
|
31
31
|
correctMaterials(materials);
|
|
32
32
|
const firstSkinnedMesh = Object.values(nodes).find(isSkinnedMesh);
|
|
33
33
|
if (firstSkinnedMesh) {
|
|
34
|
+
setMeshRef(firstSkinnedMesh);
|
|
34
35
|
avatarMeshRef.current = firstSkinnedMesh;
|
|
35
36
|
if (firstSkinnedMesh.morphTargetDictionary && firstSkinnedMesh.morphTargetInfluences) {
|
|
36
37
|
setMorphTargetDictionary(firstSkinnedMesh.morphTargetDictionary);
|
|
@@ -45,10 +46,11 @@ export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorph
|
|
|
45
46
|
const disposeObjects = () => {
|
|
46
47
|
Object.values(materials).forEach(dispose);
|
|
47
48
|
Object.values(nodes).filter(isSkinnedMesh).forEach(dispose);
|
|
49
|
+
clearVisemes();
|
|
48
50
|
};
|
|
49
51
|
disposeObjects();
|
|
50
52
|
};
|
|
51
|
-
}, [materials, nodes, url, onLoaded]);
|
|
53
|
+
}, [materials, nodes, url, onLoaded, clearVisemes]);
|
|
52
54
|
const skinnedMeshes = useMemo(() => Object.values(nodes).filter(isSkinnedMesh), [nodes]);
|
|
53
55
|
useFrame((_) => {
|
|
54
56
|
if (avatarMeshRef.current && avatarMeshRef.current.morphTargetDictionary) {
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"halfbodyAvatar.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -17,9 +17,7 @@ export interface Props {
|
|
|
17
17
|
isZoomed?: boolean;
|
|
18
18
|
chatEmission?: any;
|
|
19
19
|
setMeshRef?: any;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
weight: number;
|
|
23
|
-
} | null;
|
|
20
|
+
clearVisemes: () => void;
|
|
21
|
+
setEmotion: (emotion: string) => void;
|
|
24
22
|
}
|
|
25
|
-
export default function ContainerAvatarView({ url, sex, style, rotateAvatar, eyeBlink, headMovement, speaking, fallback, fallbackImg, halfBody, loading, animation, showControls, isZoomed, chatEmission,
|
|
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;
|
|
@@ -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,
|
|
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,
|
|
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 })] }) }));
|
|
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":";AACA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAC,MAAM,mCAAmC,CAAC;AAC7D,OAAO,MAAM,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Avatar/AvatarView/index.tsx"],"names":[],"mappings":"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"}
|