|
@@ -62,53 +62,53 @@ to make a cube requires 36 vertices. 2 triangles per face, 3 vertices per triang
|
|
|
```js
|
|
|
const vertices = [
|
|
|
// front
|
|
|
- { pos: [-1, -1, 1], norm: [ 0, 0, 1], uv: [0, 1], },
|
|
|
- { pos: [ 1, -1, 1], norm: [ 0, 0, 1], uv: [1, 1], },
|
|
|
- { pos: [-1, 1, 1], norm: [ 0, 0, 1], uv: [0, 0], },
|
|
|
+ { pos: [-1, -1, 1], norm: [ 0, 0, 1], uv: [0, 0], },
|
|
|
+ { pos: [ 1, -1, 1], norm: [ 0, 0, 1], uv: [1, 0], },
|
|
|
+ { pos: [-1, 1, 1], norm: [ 0, 0, 1], uv: [0, 1], },
|
|
|
|
|
|
- { pos: [-1, 1, 1], norm: [ 0, 0, 1], uv: [0, 0], },
|
|
|
- { pos: [ 1, -1, 1], norm: [ 0, 0, 1], uv: [1, 1], },
|
|
|
- { pos: [ 1, 1, 1], norm: [ 0, 0, 1], uv: [1, 0], },
|
|
|
+ { pos: [-1, 1, 1], norm: [ 0, 0, 1], uv: [0, 1], },
|
|
|
+ { pos: [ 1, -1, 1], norm: [ 0, 0, 1], uv: [1, 0], },
|
|
|
+ { pos: [ 1, 1, 1], norm: [ 0, 0, 1], uv: [1, 1], },
|
|
|
// right
|
|
|
- { pos: [ 1, -1, 1], norm: [ 1, 0, 0], uv: [0, 1], },
|
|
|
- { pos: [ 1, -1, -1], norm: [ 1, 0, 0], uv: [1, 1], },
|
|
|
- { pos: [ 1, 1, 1], norm: [ 1, 0, 0], uv: [0, 0], },
|
|
|
+ { pos: [ 1, -1, 1], norm: [ 1, 0, 0], uv: [0, 0], },
|
|
|
+ { pos: [ 1, -1, -1], norm: [ 1, 0, 0], uv: [1, 0], },
|
|
|
+ { pos: [ 1, 1, 1], norm: [ 1, 0, 0], uv: [0, 1], },
|
|
|
|
|
|
- { pos: [ 1, 1, 1], norm: [ 1, 0, 0], uv: [0, 0], },
|
|
|
- { pos: [ 1, -1, -1], norm: [ 1, 0, 0], uv: [1, 1], },
|
|
|
- { pos: [ 1, 1, -1], norm: [ 1, 0, 0], uv: [1, 0], },
|
|
|
+ { pos: [ 1, 1, 1], norm: [ 1, 0, 0], uv: [0, 1], },
|
|
|
+ { pos: [ 1, -1, -1], norm: [ 1, 0, 0], uv: [1, 0], },
|
|
|
+ { pos: [ 1, 1, -1], norm: [ 1, 0, 0], uv: [1, 1], },
|
|
|
// back
|
|
|
- { pos: [ 1, -1, -1], norm: [ 0, 0, -1], uv: [0, 1], },
|
|
|
- { pos: [-1, -1, -1], norm: [ 0, 0, -1], uv: [1, 1], },
|
|
|
- { pos: [ 1, 1, -1], norm: [ 0, 0, -1], uv: [0, 0], },
|
|
|
+ { pos: [ 1, -1, -1], norm: [ 0, 0, -1], uv: [0, 0], },
|
|
|
+ { pos: [-1, -1, -1], norm: [ 0, 0, -1], uv: [1, 0], },
|
|
|
+ { pos: [ 1, 1, -1], norm: [ 0, 0, -1], uv: [0, 1], },
|
|
|
|
|
|
- { pos: [ 1, 1, -1], norm: [ 0, 0, -1], uv: [0, 0], },
|
|
|
- { pos: [-1, -1, -1], norm: [ 0, 0, -1], uv: [1, 1], },
|
|
|
- { pos: [-1, 1, -1], norm: [ 0, 0, -1], uv: [1, 0], },
|
|
|
+ { pos: [ 1, 1, -1], norm: [ 0, 0, -1], uv: [0, 1], },
|
|
|
+ { pos: [-1, -1, -1], norm: [ 0, 0, -1], uv: [1, 0], },
|
|
|
+ { pos: [-1, 1, -1], norm: [ 0, 0, -1], uv: [1, 1], },
|
|
|
// left
|
|
|
- { pos: [-1, -1, -1], norm: [-1, 0, 0], uv: [0, 1], },
|
|
|
- { pos: [-1, -1, 1], norm: [-1, 0, 0], uv: [1, 1], },
|
|
|
- { pos: [-1, 1, -1], norm: [-1, 0, 0], uv: [0, 0], },
|
|
|
+ { pos: [-1, -1, -1], norm: [-1, 0, 0], uv: [0, 0], },
|
|
|
+ { pos: [-1, -1, 1], norm: [-1, 0, 0], uv: [1, 0], },
|
|
|
+ { pos: [-1, 1, -1], norm: [-1, 0, 0], uv: [0, 1], },
|
|
|
|
|
|
- { pos: [-1, 1, -1], norm: [-1, 0, 0], uv: [0, 0], },
|
|
|
- { pos: [-1, -1, 1], norm: [-1, 0, 0], uv: [1, 1], },
|
|
|
- { pos: [-1, 1, 1], norm: [-1, 0, 0], uv: [1, 0], },
|
|
|
+ { pos: [-1, 1, -1], norm: [-1, 0, 0], uv: [0, 1], },
|
|
|
+ { pos: [-1, -1, 1], norm: [-1, 0, 0], uv: [1, 0], },
|
|
|
+ { pos: [-1, 1, 1], norm: [-1, 0, 0], uv: [1, 1], },
|
|
|
// top
|
|
|
- { pos: [ 1, 1, -1], norm: [ 0, 1, 0], uv: [0, 1], },
|
|
|
- { pos: [-1, 1, -1], norm: [ 0, 1, 0], uv: [1, 1], },
|
|
|
- { pos: [ 1, 1, 1], norm: [ 0, 1, 0], uv: [0, 0], },
|
|
|
+ { pos: [ 1, 1, -1], norm: [ 0, 1, 0], uv: [0, 0], },
|
|
|
+ { pos: [-1, 1, -1], norm: [ 0, 1, 0], uv: [1, 0], },
|
|
|
+ { pos: [ 1, 1, 1], norm: [ 0, 1, 0], uv: [0, 1], },
|
|
|
|
|
|
- { pos: [ 1, 1, 1], norm: [ 0, 1, 0], uv: [0, 0], },
|
|
|
- { pos: [-1, 1, -1], norm: [ 0, 1, 0], uv: [1, 1], },
|
|
|
- { pos: [-1, 1, 1], norm: [ 0, 1, 0], uv: [1, 0], },
|
|
|
+ { pos: [ 1, 1, 1], norm: [ 0, 1, 0], uv: [0, 1], },
|
|
|
+ { pos: [-1, 1, -1], norm: [ 0, 1, 0], uv: [1, 0], },
|
|
|
+ { pos: [-1, 1, 1], norm: [ 0, 1, 0], uv: [1, 1], },
|
|
|
// bottom
|
|
|
- { pos: [ 1, -1, 1], norm: [ 0, -1, 0], uv: [0, 1], },
|
|
|
- { pos: [-1, -1, 1], norm: [ 0, -1, 0], uv: [1, 1], },
|
|
|
- { pos: [ 1, -1, -1], norm: [ 0, -1, 0], uv: [0, 0], },
|
|
|
+ { pos: [ 1, -1, 1], norm: [ 0, -1, 0], uv: [0, 0], },
|
|
|
+ { pos: [-1, -1, 1], norm: [ 0, -1, 0], uv: [1, 0], },
|
|
|
+ { pos: [ 1, -1, -1], norm: [ 0, -1, 0], uv: [0, 1], },
|
|
|
|
|
|
- { pos: [ 1, -1, -1], norm: [ 0, -1, 0], uv: [0, 0], },
|
|
|
- { pos: [-1, -1, 1], norm: [ 0, -1, 0], uv: [1, 1], },
|
|
|
- { pos: [-1, -1, -1], norm: [ 0, -1, 0], uv: [1, 0], },
|
|
|
+ { pos: [ 1, -1, -1], norm: [ 0, -1, 0], uv: [0, 1], },
|
|
|
+ { pos: [-1, -1, 1], norm: [ 0, -1, 0], uv: [1, 0], },
|
|
|
+ { pos: [-1, -1, -1], norm: [ 0, -1, 0], uv: [1, 1], },
|
|
|
];
|
|
|
```
|
|
|
|
|
@@ -169,53 +169,53 @@ reference them by index. First we remove the matching vertices.
|
|
|
```js
|
|
|
const vertices = [
|
|
|
// front
|
|
|
- { pos: [-1, -1, 1], norm: [ 0, 0, 1], uv: [0, 1], }, // 0
|
|
|
- { pos: [ 1, -1, 1], norm: [ 0, 0, 1], uv: [1, 1], }, // 1
|
|
|
- { pos: [-1, 1, 1], norm: [ 0, 0, 1], uv: [0, 0], }, // 2
|
|
|
+ { pos: [-1, -1, 1], norm: [ 0, 0, 1], uv: [0, 0], }, // 0
|
|
|
+ { pos: [ 1, -1, 1], norm: [ 0, 0, 1], uv: [1, 0], }, // 1
|
|
|
+ { pos: [-1, 1, 1], norm: [ 0, 0, 1], uv: [0, 1], }, // 2
|
|
|
-
|
|
|
-- { pos: [-1, 1, 1], norm: [ 0, 0, 1], uv: [0, 0], },
|
|
|
-- { pos: [ 1, -1, 1], norm: [ 0, 0, 1], uv: [1, 1], },
|
|
|
- { pos: [ 1, 1, 1], norm: [ 0, 0, 1], uv: [1, 0], }, // 3
|
|
|
+- { pos: [-1, 1, 1], norm: [ 0, 0, 1], uv: [0, 1], },
|
|
|
+- { pos: [ 1, -1, 1], norm: [ 0, 0, 1], uv: [1, 0], },
|
|
|
+ { pos: [ 1, 1, 1], norm: [ 0, 0, 1], uv: [1, 1], }, // 3
|
|
|
// right
|
|
|
- { pos: [ 1, -1, 1], norm: [ 1, 0, 0], uv: [0, 1], }, // 4
|
|
|
- { pos: [ 1, -1, -1], norm: [ 1, 0, 0], uv: [1, 1], }, // 5
|
|
|
+ { pos: [ 1, -1, 1], norm: [ 1, 0, 0], uv: [0, 0], }, // 4
|
|
|
+ { pos: [ 1, -1, -1], norm: [ 1, 0, 0], uv: [1, 0], }, // 5
|
|
|
-
|
|
|
-- { pos: [ 1, 1, 1], norm: [ 1, 0, 0], uv: [0, 0], },
|
|
|
-- { pos: [ 1, -1, -1], norm: [ 1, 0, 0], uv: [1, 1], },
|
|
|
- { pos: [ 1, 1, 1], norm: [ 1, 0, 0], uv: [0, 0], }, // 6
|
|
|
- { pos: [ 1, 1, -1], norm: [ 1, 0, 0], uv: [1, 0], }, // 7
|
|
|
+- { pos: [ 1, 1, 1], norm: [ 1, 0, 0], uv: [0, 1], },
|
|
|
+- { pos: [ 1, -1, -1], norm: [ 1, 0, 0], uv: [1, 0], },
|
|
|
+ { pos: [ 1, 1, 1], norm: [ 1, 0, 0], uv: [0, 1], }, // 6
|
|
|
+ { pos: [ 1, 1, -1], norm: [ 1, 0, 0], uv: [1, 1], }, // 7
|
|
|
// back
|
|
|
- { pos: [ 1, -1, -1], norm: [ 0, 0, -1], uv: [0, 1], }, // 8
|
|
|
- { pos: [-1, -1, -1], norm: [ 0, 0, -1], uv: [1, 1], }, // 9
|
|
|
+ { pos: [ 1, -1, -1], norm: [ 0, 0, -1], uv: [0, 0], }, // 8
|
|
|
+ { pos: [-1, -1, -1], norm: [ 0, 0, -1], uv: [1, 0], }, // 9
|
|
|
-
|
|
|
-- { pos: [ 1, 1, -1], norm: [ 0, 0, -1], uv: [0, 0], },
|
|
|
-- { pos: [-1, -1, -1], norm: [ 0, 0, -1], uv: [1, 1], },
|
|
|
- { pos: [ 1, 1, -1], norm: [ 0, 0, -1], uv: [0, 0], }, // 10
|
|
|
- { pos: [-1, 1, -1], norm: [ 0, 0, -1], uv: [1, 0], }, // 11
|
|
|
+- { pos: [ 1, 1, -1], norm: [ 0, 0, -1], uv: [0, 1], },
|
|
|
+- { pos: [-1, -1, -1], norm: [ 0, 0, -1], uv: [1, 0], },
|
|
|
+ { pos: [ 1, 1, -1], norm: [ 0, 0, -1], uv: [0, 1], }, // 10
|
|
|
+ { pos: [-1, 1, -1], norm: [ 0, 0, -1], uv: [1, 1], }, // 11
|
|
|
// left
|
|
|
- { pos: [-1, -1, -1], norm: [-1, 0, 0], uv: [0, 1], }, // 12
|
|
|
- { pos: [-1, -1, 1], norm: [-1, 0, 0], uv: [1, 1], }, // 13
|
|
|
+ { pos: [-1, -1, -1], norm: [-1, 0, 0], uv: [0, 0], }, // 12
|
|
|
+ { pos: [-1, -1, 1], norm: [-1, 0, 0], uv: [1, 0], }, // 13
|
|
|
-
|
|
|
-- { pos: [-1, 1, -1], norm: [-1, 0, 0], uv: [0, 0], },
|
|
|
-- { pos: [-1, -1, 1], norm: [-1, 0, 0], uv: [1, 1], },
|
|
|
- { pos: [-1, 1, -1], norm: [-1, 0, 0], uv: [0, 0], }, // 14
|
|
|
- { pos: [-1, 1, 1], norm: [-1, 0, 0], uv: [1, 0], }, // 15
|
|
|
+- { pos: [-1, 1, -1], norm: [-1, 0, 0], uv: [0, 1], },
|
|
|
+- { pos: [-1, -1, 1], norm: [-1, 0, 0], uv: [1, 0], },
|
|
|
+ { pos: [-1, 1, -1], norm: [-1, 0, 0], uv: [0, 1], }, // 14
|
|
|
+ { pos: [-1, 1, 1], norm: [-1, 0, 0], uv: [1, 1], }, // 15
|
|
|
// top
|
|
|
- { pos: [ 1, 1, -1], norm: [ 0, 1, 0], uv: [0, 1], }, // 16
|
|
|
- { pos: [-1, 1, -1], norm: [ 0, 1, 0], uv: [1, 1], }, // 17
|
|
|
+ { pos: [ 1, 1, -1], norm: [ 0, 1, 0], uv: [0, 0], }, // 16
|
|
|
+ { pos: [-1, 1, -1], norm: [ 0, 1, 0], uv: [1, 0], }, // 17
|
|
|
-
|
|
|
-- { pos: [ 1, 1, 1], norm: [ 0, 1, 0], uv: [0, 0], },
|
|
|
-- { pos: [-1, 1, -1], norm: [ 0, 1, 0], uv: [1, 1], },
|
|
|
- { pos: [ 1, 1, 1], norm: [ 0, 1, 0], uv: [0, 0], }, // 18
|
|
|
- { pos: [-1, 1, 1], norm: [ 0, 1, 0], uv: [1, 0], }, // 19
|
|
|
+- { pos: [ 1, 1, 1], norm: [ 0, 1, 0], uv: [0, 1], },
|
|
|
+- { pos: [-1, 1, -1], norm: [ 0, 1, 0], uv: [1, 0], },
|
|
|
+ { pos: [ 1, 1, 1], norm: [ 0, 1, 0], uv: [0, 1], }, // 18
|
|
|
+ { pos: [-1, 1, 1], norm: [ 0, 1, 0], uv: [1, 1], }, // 19
|
|
|
// bottom
|
|
|
- { pos: [ 1, -1, 1], norm: [ 0, -1, 0], uv: [0, 1], }, // 20
|
|
|
- { pos: [-1, -1, 1], norm: [ 0, -1, 0], uv: [1, 1], }, // 21
|
|
|
+ { pos: [ 1, -1, 1], norm: [ 0, -1, 0], uv: [0, 0], }, // 20
|
|
|
+ { pos: [-1, -1, 1], norm: [ 0, -1, 0], uv: [1, 0], }, // 21
|
|
|
-
|
|
|
-- { pos: [ 1, -1, -1], norm: [ 0, -1, 0], uv: [0, 0], },
|
|
|
-- { pos: [-1, -1, 1], norm: [ 0, -1, 0], uv: [1, 1], },
|
|
|
- { pos: [ 1, -1, -1], norm: [ 0, -1, 0], uv: [0, 0], }, // 22
|
|
|
- { pos: [-1, -1, -1], norm: [ 0, -1, 0], uv: [1, 0], }, // 23
|
|
|
+- { pos: [ 1, -1, -1], norm: [ 0, -1, 0], uv: [0, 1], },
|
|
|
+- { pos: [-1, -1, 1], norm: [ 0, -1, 0], uv: [1, 0], },
|
|
|
+ { pos: [ 1, -1, -1], norm: [ 0, -1, 0], uv: [0, 1], }, // 22
|
|
|
+ { pos: [-1, -1, -1], norm: [ 0, -1, 0], uv: [1, 1], }, // 23
|
|
|
];
|
|
|
```
|
|
|
|