leonsimon23 commited on
Commit
7e8d11f
·
verified ·
1 Parent(s): 1729884

Update main.js

Browse files
Files changed (1) hide show
  1. main.js +18 -5
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 zoomStep = 0.9; // 缩放步长
115
 
116
  zoomInBtn.addEventListener('click', () => {
117
- controls.dollyIn(1 / zoomStep);
118
- controls.update();
 
 
 
 
 
 
 
119
  });
120
 
121
  zoomOutBtn.addEventListener('click', () => {
122
- controls.dollyOut(1 / zoomStep);
123
- controls.update();
 
 
 
 
 
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