Skip to content

Commit 2d0b380

Browse files
authored
Update Three.js实用知识点笔记.md
1 parent aa8647b commit 2d0b380

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

Three.js实用知识点笔记.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
2. 为了保证代码简洁,所以在实用某些类时没有添加 `Three.` 前缀
1313
3. 绝大多数时候都使用箭头函数
1414
4. 使用 Xxx 泛指同一类型,例如 XxxCamer 泛指各类相机
15+
5. 由于我们讲解的是 Three.js,所以全部使用的是 右手坐标系
1516

1617

1718

@@ -223,3 +224,41 @@ meshB.matrix.decompose(meshB.position, meshB.quaternion, meshB.scale)
223224

224225
<br>
225226

227+
#### 07、保持外观和位置的前提下,将立方体的顶点坐标 "归一化"
228+
229+
这里说的立方体是指基于 BoxGeometry 而创建的立方体。
230+
231+
这里说的 顶点坐标 “归一化” 是指将立方体顶点坐标修改成 1x1x1 规格的立方体顶点坐标。
232+
233+
这里说的 保持外观和位置 是指通过修改其 变换矩阵 .matrix 来实现。
234+
235+
实现思路:
236+
237+
1. 凡是基于 BoxGeometry 的立方体,其顶点坐标信息都是统一规范的,尽管其值可能不同
238+
2. 所以我们就根据其值来确定这个立方体与 1x1x1 立方体的 宽、高、深 比例
239+
3. 将这个缩放比例应用到立方体本身的矩阵中即可
240+
4. 同时将这个立方体的顶点信息修改成 1x1x1 立方体的顶点信息
241+
242+
```
243+
const boxGeometryNormalize = (box) => {
244+
const originX = box.geometry.attributes.position.array[0]
245+
const originY = box.geometry.attributes.position.array[1]
246+
const originZ = box.geometry.attributes.position.array[2]
247+
248+
const scaleX = originX / 0.5
249+
const scaleY = originY / 0.5
250+
const scaleZ = originZ / 0.5
251+
252+
box.geometry = new BoxGeometry()
253+
box.matrixAutoUpdate = false
254+
box.matrix.makeScale(scaleX, scaleY, scaleZ)
255+
box.matrix.decompose(box.position, box.quaternion, box.scale)
256+
}
257+
```
258+
259+
260+
261+
<br>
262+
263+
264+

0 commit comments

Comments
 (0)