Update main.js
Browse files
main.js
CHANGED
|
@@ -108,19 +108,32 @@ function createUI() {
|
|
| 108 |
}
|
| 109 |
|
| 110 |
// --- 新增:设置缩放按钮的功能 ---
|
|
|
|
| 111 |
function setupZoomControls() {
|
| 112 |
const zoomInBtn = document.getElementById('zoom-in-btn');
|
| 113 |
const zoomOutBtn = document.getElementById('zoom-out-btn');
|
| 114 |
-
const
|
| 115 |
|
| 116 |
zoomInBtn.addEventListener('click', () => {
|
| 117 |
-
|
| 118 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
});
|
| 120 |
|
| 121 |
zoomOutBtn.addEventListener('click', () => {
|
| 122 |
-
|
| 123 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 124 |
});
|
| 125 |
}
|
| 126 |
|
|
|
|
| 108 |
}
|
| 109 |
|
| 110 |
// --- 新增:设置缩放按钮的功能 ---
|
| 111 |
+
// --- 修改后的函数:设置缩放按钮的功能 ---
|
| 112 |
function setupZoomControls() {
|
| 113 |
const zoomInBtn = document.getElementById('zoom-in-btn');
|
| 114 |
const zoomOutBtn = document.getElementById('zoom-out-btn');
|
| 115 |
+
const zoomScale = 1.2; // 定义一个缩放因子,大于1
|
| 116 |
|
| 117 |
zoomInBtn.addEventListener('click', () => {
|
| 118 |
+
// --- 直接修改相机位置 ---
|
| 119 |
+
// 获取从相机指向目标点的向量
|
| 120 |
+
const offset = new THREE.Vector3().subVectors(camera.position, controls.target);
|
| 121 |
+
// 将这个向量缩短 (除以一个大于1的数)
|
| 122 |
+
offset.multiplyScalar(1 / zoomScale);
|
| 123 |
+
// 将新的向量加回到目标点,得到相机的新位置
|
| 124 |
+
camera.position.copy(controls.target).add(offset);
|
| 125 |
+
|
| 126 |
+
// 我们不需要手动调用 controls.update(),因为 render 循环会做这件事
|
| 127 |
});
|
| 128 |
|
| 129 |
zoomOutBtn.addEventListener('click', () => {
|
| 130 |
+
// --- 直接修改相机位置 ---
|
| 131 |
+
// 获取从相机指向目标点的向量
|
| 132 |
+
const offset = new THREE.Vector3().subVectors(camera.position, controls.target);
|
| 133 |
+
// 将这个向量拉长 (乘以一个大于1的数)
|
| 134 |
+
offset.multiplyScalar(zoomScale);
|
| 135 |
+
// 将新的向量加回到目标点,得到相机的新位置
|
| 136 |
+
camera.position.copy(controls.target).add(offset);
|
| 137 |
});
|
| 138 |
}
|
| 139 |
|