Skip to content

Commit d6e2e60

Browse files
committed
add 28 picking
1 parent 52c310e commit d6e2e60

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# 28 Three.js解决方案之选中、拾取某物体
2+
3+
在日常的 Three.js 应用中,我们除了要渲染出 3D 场景外,还需要大量用户鼠标或笔触(手指触摸)操作。
4+
5+
在讲解本文正式内容之前,我们先讲解一下 Three.js 官方帮我们写好的控制器。
6+
7+
> 在之前示例中我们经常使用的是 OrbitControls,除了这个以外还有其他几种控制器。
8+
9+
10+
11+
### 镜头轨道控制器
12+
13+
> 再次重申,在本系列文章中 “镜头” 和 “摄像机” 是同一个意思,我个人更习惯使用 “镜头” 这个词。
14+
15+
在 Three.js 中,官方提供了以下几种控制器:
16+
17+
| 控制器 | 作用 | 补充说明 |
18+
| ------------------------- | -------------- | ------------------------------------------------------------ |
19+
| DeviceOrientationControls | 设备朝向控制器 | 这个控制器只能应用在手机端,<br />监听手机设备朝向变化,进而改变镜头朝向 |
20+
| DragControls | 拖放控制器 | 该控制器实例化时,需要传入可拖放的元素数组 |
21+
| FirstPersonControls | 第一人称控制器 | 像游戏中人物行走一样,来切换场景视角<br />该控制器是 FlyControls 的另一种实现 |
22+
| FlyControls | 飞行控制器 | 像鸟飞行一样的视角,来切换场景 |
23+
| OrbitControls | 轨道控制器 | 我们日常使用最为频繁的一个控制器 |
24+
| PointerLockControls | 指针锁定控制器 | Pointer,可以让我们脱离鼠标,无限移动使用 |
25+
| TrackballControls | 轨迹球控制器 | 与 OrbitControls 类似,但又不相同,<br />它不能恒定保持镜头的 up 向量 |
26+
27+
28+
29+
<br>
30+
31+
**补充说明:**
32+
33+
1. 在使用 DeviceOrientationControls 时,需要在每次渲染函数中执行 .update()
34+
2. 在使用 DragControls 时,需要给控制器实例添加 .addEventListener('drag', render)
35+
3. 在使用 FirstPersonControls 时,当浏览器窗口尺寸发生变化时,需要执行 .handleResize(),已更新交互范围
36+
4. 在使用 FlyControls 时,当浏览器窗口尺寸发生变化时,需要适当修改 .movementSpeed 和 执行 .update( delta:number)
37+
5. 在使用 OrbitControls 时,若要获得阻尼惯性效果,要设置 .enableDamping = true
38+
6. 在使用 PointerLockControls 时,锁定(隐藏)鼠标光标的是执行 .lock(),退出(显示)鼠标光标的是执行 .unlock
39+
7. 在使用 TrackballControls 时,可以通过键盘 A/S/D 键来控制场景视角
40+
41+
42+
43+
<br>
44+
45+
以上这些控制器,都是用户与场景之间的交互操作。
46+
47+
那么接下来,我们讲解一下在场景中,一些我们自定义的一些鼠标交互操作:拾取元素
48+
49+
50+
51+
<br>
52+

0 commit comments

Comments
 (0)