11<script setup lang="ts">
2+ import { useRenderLoop } from ' @tresjs/core' ;
23import { useGLTF , Levioso } from ' @tresjs/cientos' ;
34import { toRefs , watch } from ' vue' ;
45import { gsap } from ' gsap'
@@ -13,11 +14,11 @@ const cube = nodes['Cube']
1314const sphere = nodes [' Sphere' ]
1415
1516triangle .position .set (- 4 , 4 , 0 )
16- triangle .scale .set (0 ,0 , 0 )
17+ triangle .scale .set (0 , 0 , 0 )
1718cube .position .set (0 , 2 , 0 )
18- cube .scale .set (0 ,0 , 0 )
19+ cube .scale .set (0 , 0 , 0 )
1920sphere .position .set (4 , 0 , 0 )
20- sphere .scale .set (0 ,0 , 0 )
21+ sphere .scale .set (0 , 0 , 0 )
2122
2223const leviosoRange = [- 0.005 , 0.005 ] as [number , number ]
2324
@@ -26,18 +27,9 @@ const { progress } = toRefs(props)
2627watch (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