From 153015e996355722e60293b4e0142e5ed3270150 Mon Sep 17 00:00:00 2001 From: huliang <1539398430@qq.com> Date: Fri, 27 Jun 2025 14:09:26 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A0=81=E6=A8=A3=E5=BC=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/dashboard/dashboardBuild.vue | 18 ++----- src/components/forge/Forge.vue | 53 +++++++++++++++++++++ 2 files changed, 58 insertions(+), 13 deletions(-) diff --git a/src/components/dashboard/dashboardBuild.vue b/src/components/dashboard/dashboardBuild.vue index 08f06f4..4d750d3 100644 --- a/src/components/dashboard/dashboardBuild.vue +++ b/src/components/dashboard/dashboardBuild.vue @@ -15,7 +15,7 @@ const { is3D } = inject("app_config"); height: '100%', }" > -
+
build -
-
-
-
智慧建築
- - 2D - 3D - -
-

- 掌握建築用電、系統健康狀態,打造智慧節能醫院 -

+ + 2D + 3D +
diff --git a/src/components/forge/Forge.vue b/src/components/forge/Forge.vue index 6db6cf2..8d7aefd 100644 --- a/src/components/forge/Forge.vue +++ b/src/components/forge/Forge.vue @@ -26,6 +26,10 @@ const initViewer = (container) => { viewer.impl.renderer().setClearAlpha(0); viewer.impl.glrenderer().setClearColor(0xffffff, 0); viewer.impl.invalidate(true); + // viewer.addEventListener( + // Autodesk.Viewing.CAMERA_CHANGE_EVENT, + // trackCamera + // ); // 添加相機變化監聽器 resolve(viewer); } ); @@ -41,6 +45,21 @@ const loadModel = (filePath) => { (model) => { viewer.impl.invalidate(true); viewer.fitToView(); + // 設置攝影機位置 + setTimeout(() => { + setCameraPosition( + { + x: -167.82545540638415, + y: 345.10870156503876, + z: 81.70050447380856, + }, // 攝影機的新位置 + { + x: 21.13901422856481, + y: -41.714495314675034, + z: -29.07274095478474, + } // 攝影機的焦點 + ); + }, 500); resolve(model); console.log("模型加載完成"); }, @@ -49,6 +68,36 @@ const loadModel = (filePath) => { }); }; +// 追蹤攝影機位置 +const trackCamera = () => { + if (viewer) { + const nav = viewer.navigation; + + const cameraPosition = nav.getPosition(); + const cameraTarget = nav.getTarget(); + + console.log("當前相機位置:", cameraPosition); + console.log("當前相機目標:", cameraTarget); + } +}; + +// 設定攝影機位置 +const setCameraPosition = (position, target) => { + if (viewer) { + const nav = viewer.navigation; + + const newPosition = new THREE.Vector3(position.x, position.y, position.z); + const newTarget = new THREE.Vector3(target.x, target.y, target.z); + + nav.setView(newPosition, newTarget); + console.log("攝影機定位完成:"); + console.log("新位置:", newPosition); + console.log("新目標:", newTarget); + } else { + console.warn("Forge Viewer 尚未初始化"); + } +}; + onMounted(async () => { console.log("Forge 加載"); await initViewer(forgeDom.value); @@ -59,6 +108,10 @@ onMounted(async () => { onUnmounted(() => { console.log("Forge 銷毀"); if (viewer) { + // viewer.removeEventListener( + // Autodesk.Viewing.CAMERA_CHANGE_EVENT, + // trackCamera + // ); // 移除事件監聽器 viewer.tearDown(); viewer.finish(); viewer = null;