From 82efcd8782289dfa478ec39f66102b6ee3260d96 Mon Sep 17 00:00:00 2001 From: aarizona Date: Mon, 26 Aug 2024 15:06:50 +0300 Subject: [PATCH] look at camera as func --- front/src/components/Promo/env.vue | 1 + front/src/components/Promo/load_models.vue | 33 +++++++++++++--------- front/src/components/Promo/main.vue | 2 +- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/front/src/components/Promo/env.vue b/front/src/components/Promo/env.vue index 920c7a6..40ae58a 100644 --- a/front/src/components/Promo/env.vue +++ b/front/src/components/Promo/env.vue @@ -34,6 +34,7 @@ const loadEnv = async () => { const exrCubeRenderTarget = pmremGenerator.fromEquirectangular(result.renderTarget.texture); const newEnvMap = exrCubeRenderTarget ? exrCubeRenderTarget.texture : null; + // scene.value.background = result.renderTarget.texture scene.value.environment = newEnvMap scene.value.environmentIntensity = 1 diff --git a/front/src/components/Promo/load_models.vue b/front/src/components/Promo/load_models.vue index 5a510cc..729f07e 100644 --- a/front/src/components/Promo/load_models.vue +++ b/front/src/components/Promo/load_models.vue @@ -32,7 +32,7 @@ const loading_store = useLoading() const { controls, camera, scene, raycaster, renderer } = useTresContext() const { pause, resume } = useLoop() -const { seekByName, seekAllByName, seek } = useSeek() +const { seekByName, seekAllByName } = useSeek() const groundTexture = await useTexture({ displacementMap: '/ground_displacement.jpg', @@ -48,13 +48,13 @@ setInterval(() => { pause() if (controls.value && camera.value) { camera.value?.position.set( - (controls.value as any).maxDistance * 0.5, - (controls.value as any).maxDistance * 0.5, + (controls.value as any).maxDistance * 0.5, + (controls.value as any).maxDistance * 0.5, (controls.value as any).maxDistance * 0.5 ); (controls.value as any).target = new Vector3(0, 0, 0); (controls.value as any).autoRotate = true; - (controls.value as any).autoRotateSpeed = 1; + (controls.value as any).autoRotateSpeed = 0.5; } resume() } @@ -87,10 +87,10 @@ const loadModels = async () => { (controls.value as any).maxDistance = raw_data.max_distance; camera.value?.position.set( - (controls.value as any).maxDistance * 0.5, - (controls.value as any).maxDistance * 0.5, - (controls.value as any).maxDistance * 0.5 - ); + (controls.value as any).maxDistance * 0.5, + (controls.value as any).maxDistance * 0.5, + (controls.value as any).maxDistance * 0.5 + ); (controls.value as any).target = new Vector3(0, 0, 0); (controls.value as any).autoRotate = false; @@ -215,7 +215,6 @@ const loadModels = async () => { new Vector3(box_size.x * 0.5, box_size.y * 0.5, box_size.z * 0.5), new Vector3(box_size.x * -0.5, box_size.y * -0.25, box_size.z * -0.5), ) - console.log(box_size) controls.value.enabled = true; props.loaded(false) @@ -224,14 +223,20 @@ const loadModels = async () => { (controls.value as any).autoRotate = false; } } - +const lookAtCamera = (obj) => { + if (!obj || !obj.children) { + return + } + obj.children.forEach(element => { + if (element && typeof element.lookAt == 'function') { + element.lookAt(camera.value?.position) + } + }); +} const { onAfterRender } = useLoop() onAfterRender(() => { clickable_refs.value.map(el => { - if (el.value[0] && el.value[0].children && el.value[0].children[0] && typeof el.value[0].children[0].lookAt == 'function') { - el.value[0].children[0].lookAt(camera.value?.position); - el.value[0].children[1].lookAt(camera.value?.position); - } + lookAtCamera(el.value[0]) }) if (controls.value) { if (timer.value == 0) { diff --git a/front/src/components/Promo/main.vue b/front/src/components/Promo/main.vue index d0f92d2..404b94f 100644 --- a/front/src/components/Promo/main.vue +++ b/front/src/components/Promo/main.vue @@ -69,7 +69,7 @@ const sidebarFunc = () => {