diff --git a/front/src/components/Promo/load_models.vue b/front/src/components/Promo/load_models.vue
index 0ab3e04..6d793af 100644
--- a/front/src/components/Promo/load_models.vue
+++ b/front/src/components/Promo/load_models.vue
@@ -35,7 +35,7 @@ const targetDistance = reactive({ max: 10, min: 0 })
let sidebar_clickable = [] as PromoScene[]
let sidebar_visible = [] as PromoScene[]
-const COUNT = 100
+const COUNT = 50
type smooth = {
value: Vector3 | Quaternion | undefined,
count: number
@@ -47,8 +47,6 @@ const temp_smooth_target = reactive({}) as smooth
const temp_smooth_move = reactive({}) as smooth
const temp_smooth_rotate = reactive({}) as smooth
-const vis_target = ref()
-
const sidebar = usePromoSidebar();
const sidebar_scene = usePromoScene();
const clickable = useClickable()
@@ -272,9 +270,7 @@ watch(() => sidebar.is_open && sidebar.id_clickable, () => {
const target_vector = new Vector3();
el.getWorldPosition(target_vector);
- target_vector.y = raw_dataStore.data.min_distance > 50 ? raw_dataStore.data.min_distance / 10 : 1;
- const target_vector_1 = target_vector.clone().multiplyScalar(3)
- console.log(target_vector, target_vector_1)
+ // target_vector.y = raw_dataStore.data.min_distance > 50 ? raw_dataStore.data.min_distance / 10 : 1;
const quaternion = new Quaternion();
quaternion.setFromEuler(new Euler(
@@ -286,18 +282,16 @@ watch(() => sidebar.is_open && sidebar.id_clickable, () => {
set_moveto(smooth_rotate, quaternion)
const d = raw_dataStore.data.max_distance * 0.5
- if(camera.value?.position && camera.value?.position.distanceTo(new Vector3(d,d,d)) > 20) {
+ if (camera.value?.position && camera.value?.position.distanceTo(new Vector3(d, d, d)) > 20) {
set_moveto(temp_smooth_target, target_vector)
set_moveto(temp_smooth_move, target_vector)
-
+
set_moveto(smooth_target, new Vector3(0, 0, 0))
set_moveto(smooth_move, new Vector3(d, d, d))
} else {
set_moveto(smooth_target, target_vector)
set_moveto(smooth_move, target_vector)
}
-
- vis_target.value = target_vector;
}
}
}, { deep: true })
@@ -316,45 +310,41 @@ onAfterRender(() => {
}
}
})
- const koef = 1 / COUNT
- if (smooth_target.value) {
- timer.stopTimer();
- (controls.value as any).target.lerp(smooth_target.value, koef);
- smooth_target.count -= 1
- if (smooth_target.count == 0) {
- set_moveto(smooth_target, undefined)
-
- if (temp_smooth_target) {
- set_moveto(smooth_target, temp_smooth_target.value)
- set_moveto(temp_smooth_target, undefined)
+ const koef = (1 / COUNT) * 3
+ const smoothy = [
+ {
+ el: smooth_target,
+ temp_el: temp_smooth_target,
+ f: () => (controls.value as any).target.lerp(smooth_target.value as Vector3, smooth_target.count < COUNT * 0.5 ? 0.15 : koef),
+ },
+ {
+ el: smooth_move,
+ temp_el: temp_smooth_move,
+ f: () => camera.value?.position.lerp(smooth_move.value as Vector3, smooth_move.count < COUNT * 0.5 ? 0.15 : koef),
+ },
+ {
+ el: smooth_rotate,
+ f: () => {
+ camera.value?.quaternion.slerp(smooth_rotate.value as Quaternion, koef);
+ camera.value?.quaternion.normalize()
}
}
- }
- if (smooth_move.value) {
- timer.stopTimer();
- camera.value?.position.lerp(smooth_move.value, koef);
- smooth_move.count -= 1
- if (smooth_move.count == 0) {
- // camera.value?.lookAt(camera_moveto.value)
- set_moveto(smooth_move, undefined)
+ ]
+ smoothy.forEach(element => {
+ if (element.el.value) {
+ timer.stopTimer();
+ element.f()
+ element.el.count -= 1
+ if (element.el.count == 0) {
+ set_moveto(element.el, undefined)
- if (temp_smooth_move) {
- set_moveto(smooth_move, temp_smooth_move.value)
- set_moveto(temp_smooth_move, undefined)
+ if (element.temp_el && element.temp_el.value) {
+ set_moveto(element.el, element.temp_el.value)
+ set_moveto(element.temp_el, undefined)
+ }
}
}
- }
- if (smooth_rotate.value) {
- timer.stopTimer();
- camera.value?.quaternion.slerp(smooth_rotate.value as Quaternion, koef);
- camera.value?.quaternion.normalize()
- smooth_rotate.count -= 1;
- if (smooth_rotate.count == 0) {
- set_moveto(smooth_rotate, undefined)
- }
- camera.value?.updateMatrixWorld()
- }
- (controls.value as any).update()
+ });
})
const timer = useTimer()
@@ -433,10 +423,6 @@ onUnmounted(() => {
-
-
-
-
diff --git a/front/src/components/sidebar.vue b/front/src/components/sidebar.vue
index 9e58a6a..bb2eaa6 100644
--- a/front/src/components/sidebar.vue
+++ b/front/src/components/sidebar.vue
@@ -25,20 +25,6 @@ watch(() => sidebar.id_clickable, () => {
+
+