Skip to content

Commit f8ecff3

Browse files
authored
Merge pull request #3 from Tresjs/feature/add-smooth
feat: example of smooth
2 parents b8cbd81 + ef25d4a commit f8ecff3

File tree

1 file changed

+24
-15
lines changed

1 file changed

+24
-15
lines changed

src/components/LogoGeometries.vue

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<script setup lang="ts">
2+
import { useRenderLoop } from '@tresjs/core';
23
import { useGLTF, Levioso } from '@tresjs/cientos';
34
import { toRefs, watch } from 'vue';
45
import { gsap } from 'gsap'
@@ -13,11 +14,11 @@ const cube = nodes['Cube']
1314
const sphere = nodes['Sphere']
1415
1516
triangle.position.set(-4, 4, 0)
16-
triangle.scale.set(0,0,0)
17+
triangle.scale.set(0, 0, 0)
1718
cube.position.set(0, 2, 0)
18-
cube.scale.set(0,0,0)
19+
cube.scale.set(0, 0, 0)
1920
sphere.position.set(4, 0, 0)
20-
sphere.scale.set(0,0,0)
21+
sphere.scale.set(0, 0, 0)
2122
2223
const leviosoRange = [-0.005, 0.005] as [number, number]
2324
@@ -26,18 +27,9 @@ const { progress } = toRefs(props)
2627
watch(progress, (value) => {
2728
cube.rotation.x = value * 100
2829
cube.rotation.y = value * 20
29-
cube.position.x = - value * 120
30-
cube.position.z = value * 140
3130
3231
triangle.rotation.x = - value * 100
3332
triangle.rotation.y = value * 20
34-
triangle.position.x = -4 -value * 50
35-
triangle.position.z = - value * 150
36-
triangle.position.y = 4 + value * 200
37-
38-
sphere.position.x = 4 + value * 1200
39-
sphere.position.z = - value * 750
40-
sphere.position.y = - value * 50
4133
}, {
4234
immediate: true
4335
})
@@ -68,16 +60,33 @@ onMounted(() => {
6860
ease: 'elastic.out', // Easing function for smoother animation
6961
})
7062
})
63+
64+
const smoothFactor = 0.15
65+
const { onLoop } = useRenderLoop()
66+
67+
onLoop(() => {
68+
cube.position.x += (- progress?.value * 120 - cube.position.x) * smoothFactor
69+
cube.position.z += (progress?.value * 140 - cube.position.z) * smoothFactor
70+
71+
sphere.position.x += (4 + progress?.value * 1200 - sphere.position.x) * smoothFactor
72+
sphere.position.z += (- progress?.value * 750 - sphere.position.z) * smoothFactor
73+
sphere.position.y += (- progress?.value * 50 - sphere.position.y) * smoothFactor
74+
75+
triangle.position.x += (-4 - progress?.value * 50 - triangle.position.x) * smoothFactor
76+
triangle.position.z += (- progress?.value * 150 - triangle.position.z) * smoothFactor
77+
triangle.position.y += (4 + progress?.value * 200 - triangle.position.y) * smoothFactor
78+
79+
})
7180
</script>
7281

7382
<template>
74-
<Levioso :speed="progress > 0 ? 0: 1" :range="leviosoRange">
83+
<Levioso :speed="progress > 0 ? 0 : 1" :range="leviosoRange">
7584
<primitive :object="triangle" />
7685
</Levioso>
77-
<Levioso :speed="progress > 0 ? 0: 1" :range="leviosoRange">
86+
<Levioso :speed="progress > 0 ? 0 : 1" :range="leviosoRange">
7887
<primitive :object="cube" />
7988
</Levioso>
80-
<Levioso :speed="progress > 0 ? 0: 1" :range="leviosoRange">
89+
<Levioso :speed="progress > 0 ? 0 : 1" :range="leviosoRange">
8190
<primitive :object="sphere" />
8291
</Levioso>
8392
</template>

0 commit comments

Comments
 (0)