@hello-terrain/three 0.0.0-alpha.5 → 0.0.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +21 -11
- package/dist/index.d.cts +9 -7
- package/dist/index.d.mts +9 -7
- package/dist/index.d.ts +9 -7
- package/dist/index.mjs +21 -11
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -10,17 +10,25 @@ class TerrainGeometry extends three.BufferGeometry {
|
|
|
10
10
|
constructor(innerSegments = 14, extendUV = false) {
|
|
11
11
|
super();
|
|
12
12
|
if (innerSegments < 1 || !Number.isFinite(innerSegments) || !Number.isInteger(innerSegments)) {
|
|
13
|
-
throw new Error(
|
|
13
|
+
throw new Error(
|
|
14
|
+
`Invalid innerSegments: ${innerSegments}. Must be a positive integer.`
|
|
15
|
+
);
|
|
14
16
|
}
|
|
15
17
|
try {
|
|
16
18
|
this.setIndex(this.generateIndices(innerSegments));
|
|
17
19
|
this.setAttribute(
|
|
18
20
|
"position",
|
|
19
|
-
new three.BufferAttribute(
|
|
21
|
+
new three.BufferAttribute(
|
|
22
|
+
new Float32Array(this.generatePositions(innerSegments)),
|
|
23
|
+
3
|
|
24
|
+
)
|
|
20
25
|
);
|
|
21
26
|
this.setAttribute(
|
|
22
27
|
"normal",
|
|
23
|
-
new three.BufferAttribute(
|
|
28
|
+
new three.BufferAttribute(
|
|
29
|
+
new Float32Array(this.generateNormals(innerSegments)),
|
|
30
|
+
3
|
|
31
|
+
)
|
|
24
32
|
);
|
|
25
33
|
this.setAttribute(
|
|
26
34
|
"uv",
|
|
@@ -56,17 +64,19 @@ class TerrainGeometry extends three.BufferGeometry {
|
|
|
56
64
|
* | / | \ | / | \ |
|
|
57
65
|
* o---o---o---o---o
|
|
58
66
|
*
|
|
59
|
-
* INNER GRID (
|
|
60
|
-
* o---o---o
|
|
61
|
-
* | \ | \ |
|
|
62
|
-
* o---o---o
|
|
63
|
-
* | \ | \ |
|
|
64
|
-
* o---o---o
|
|
67
|
+
* INNER GRID (alternating diagonals — checkerboard pattern):
|
|
68
|
+
* o---o---o---o---o
|
|
69
|
+
* | \ | / | \ | / |
|
|
70
|
+
* o---o---o---o---o
|
|
71
|
+
* | / | \ | / | \ |
|
|
72
|
+
* o---o---o---o---o
|
|
73
|
+
* | \ | / | \ | / |
|
|
74
|
+
* o---o---o---o---o
|
|
65
75
|
*
|
|
66
76
|
* Where o = vertex
|
|
67
77
|
* Each square cell is split into 2 triangles.
|
|
68
78
|
* - Skirt cells (outer ring): diagonal flip based on quadrant for corner correctness
|
|
69
|
-
* - Inner cells:
|
|
79
|
+
* - Inner cells: alternating diagonal via (x+y)%2 to reduce interpolation artifacts
|
|
70
80
|
*
|
|
71
81
|
* Vertex layout (for innerSegments = 2):
|
|
72
82
|
*
|
|
@@ -112,7 +122,7 @@ class TerrainGeometry extends three.BufferGeometry {
|
|
|
112
122
|
const topHalf = y < mid;
|
|
113
123
|
useDefaultDiagonal = leftHalf && topHalf || !leftHalf && !topHalf;
|
|
114
124
|
} else {
|
|
115
|
-
useDefaultDiagonal =
|
|
125
|
+
useDefaultDiagonal = (x + y) % 2 === 0;
|
|
116
126
|
}
|
|
117
127
|
if (useDefaultDiagonal) {
|
|
118
128
|
indices.push(a, d, b);
|
package/dist/index.d.cts
CHANGED
|
@@ -34,17 +34,19 @@ declare class TerrainGeometry extends BufferGeometry {
|
|
|
34
34
|
* | / | \ | / | \ |
|
|
35
35
|
* o---o---o---o---o
|
|
36
36
|
*
|
|
37
|
-
* INNER GRID (
|
|
38
|
-
* o---o---o
|
|
39
|
-
* | \ | \ |
|
|
40
|
-
* o---o---o
|
|
41
|
-
* | \ | \ |
|
|
42
|
-
* o---o---o
|
|
37
|
+
* INNER GRID (alternating diagonals — checkerboard pattern):
|
|
38
|
+
* o---o---o---o---o
|
|
39
|
+
* | \ | / | \ | / |
|
|
40
|
+
* o---o---o---o---o
|
|
41
|
+
* | / | \ | / | \ |
|
|
42
|
+
* o---o---o---o---o
|
|
43
|
+
* | \ | / | \ | / |
|
|
44
|
+
* o---o---o---o---o
|
|
43
45
|
*
|
|
44
46
|
* Where o = vertex
|
|
45
47
|
* Each square cell is split into 2 triangles.
|
|
46
48
|
* - Skirt cells (outer ring): diagonal flip based on quadrant for corner correctness
|
|
47
|
-
* - Inner cells:
|
|
49
|
+
* - Inner cells: alternating diagonal via (x+y)%2 to reduce interpolation artifacts
|
|
48
50
|
*
|
|
49
51
|
* Vertex layout (for innerSegments = 2):
|
|
50
52
|
*
|
package/dist/index.d.mts
CHANGED
|
@@ -34,17 +34,19 @@ declare class TerrainGeometry extends BufferGeometry {
|
|
|
34
34
|
* | / | \ | / | \ |
|
|
35
35
|
* o---o---o---o---o
|
|
36
36
|
*
|
|
37
|
-
* INNER GRID (
|
|
38
|
-
* o---o---o
|
|
39
|
-
* | \ | \ |
|
|
40
|
-
* o---o---o
|
|
41
|
-
* | \ | \ |
|
|
42
|
-
* o---o---o
|
|
37
|
+
* INNER GRID (alternating diagonals — checkerboard pattern):
|
|
38
|
+
* o---o---o---o---o
|
|
39
|
+
* | \ | / | \ | / |
|
|
40
|
+
* o---o---o---o---o
|
|
41
|
+
* | / | \ | / | \ |
|
|
42
|
+
* o---o---o---o---o
|
|
43
|
+
* | \ | / | \ | / |
|
|
44
|
+
* o---o---o---o---o
|
|
43
45
|
*
|
|
44
46
|
* Where o = vertex
|
|
45
47
|
* Each square cell is split into 2 triangles.
|
|
46
48
|
* - Skirt cells (outer ring): diagonal flip based on quadrant for corner correctness
|
|
47
|
-
* - Inner cells:
|
|
49
|
+
* - Inner cells: alternating diagonal via (x+y)%2 to reduce interpolation artifacts
|
|
48
50
|
*
|
|
49
51
|
* Vertex layout (for innerSegments = 2):
|
|
50
52
|
*
|
package/dist/index.d.ts
CHANGED
|
@@ -34,17 +34,19 @@ declare class TerrainGeometry extends BufferGeometry {
|
|
|
34
34
|
* | / | \ | / | \ |
|
|
35
35
|
* o---o---o---o---o
|
|
36
36
|
*
|
|
37
|
-
* INNER GRID (
|
|
38
|
-
* o---o---o
|
|
39
|
-
* | \ | \ |
|
|
40
|
-
* o---o---o
|
|
41
|
-
* | \ | \ |
|
|
42
|
-
* o---o---o
|
|
37
|
+
* INNER GRID (alternating diagonals — checkerboard pattern):
|
|
38
|
+
* o---o---o---o---o
|
|
39
|
+
* | \ | / | \ | / |
|
|
40
|
+
* o---o---o---o---o
|
|
41
|
+
* | / | \ | / | \ |
|
|
42
|
+
* o---o---o---o---o
|
|
43
|
+
* | \ | / | \ | / |
|
|
44
|
+
* o---o---o---o---o
|
|
43
45
|
*
|
|
44
46
|
* Where o = vertex
|
|
45
47
|
* Each square cell is split into 2 triangles.
|
|
46
48
|
* - Skirt cells (outer ring): diagonal flip based on quadrant for corner correctness
|
|
47
|
-
* - Inner cells:
|
|
49
|
+
* - Inner cells: alternating diagonal via (x+y)%2 to reduce interpolation artifacts
|
|
48
50
|
*
|
|
49
51
|
* Vertex layout (for innerSegments = 2):
|
|
50
52
|
*
|
package/dist/index.mjs
CHANGED
|
@@ -8,17 +8,25 @@ class TerrainGeometry extends BufferGeometry {
|
|
|
8
8
|
constructor(innerSegments = 14, extendUV = false) {
|
|
9
9
|
super();
|
|
10
10
|
if (innerSegments < 1 || !Number.isFinite(innerSegments) || !Number.isInteger(innerSegments)) {
|
|
11
|
-
throw new Error(
|
|
11
|
+
throw new Error(
|
|
12
|
+
`Invalid innerSegments: ${innerSegments}. Must be a positive integer.`
|
|
13
|
+
);
|
|
12
14
|
}
|
|
13
15
|
try {
|
|
14
16
|
this.setIndex(this.generateIndices(innerSegments));
|
|
15
17
|
this.setAttribute(
|
|
16
18
|
"position",
|
|
17
|
-
new BufferAttribute(
|
|
19
|
+
new BufferAttribute(
|
|
20
|
+
new Float32Array(this.generatePositions(innerSegments)),
|
|
21
|
+
3
|
|
22
|
+
)
|
|
18
23
|
);
|
|
19
24
|
this.setAttribute(
|
|
20
25
|
"normal",
|
|
21
|
-
new BufferAttribute(
|
|
26
|
+
new BufferAttribute(
|
|
27
|
+
new Float32Array(this.generateNormals(innerSegments)),
|
|
28
|
+
3
|
|
29
|
+
)
|
|
22
30
|
);
|
|
23
31
|
this.setAttribute(
|
|
24
32
|
"uv",
|
|
@@ -54,17 +62,19 @@ class TerrainGeometry extends BufferGeometry {
|
|
|
54
62
|
* | / | \ | / | \ |
|
|
55
63
|
* o---o---o---o---o
|
|
56
64
|
*
|
|
57
|
-
* INNER GRID (
|
|
58
|
-
* o---o---o
|
|
59
|
-
* | \ | \ |
|
|
60
|
-
* o---o---o
|
|
61
|
-
* | \ | \ |
|
|
62
|
-
* o---o---o
|
|
65
|
+
* INNER GRID (alternating diagonals — checkerboard pattern):
|
|
66
|
+
* o---o---o---o---o
|
|
67
|
+
* | \ | / | \ | / |
|
|
68
|
+
* o---o---o---o---o
|
|
69
|
+
* | / | \ | / | \ |
|
|
70
|
+
* o---o---o---o---o
|
|
71
|
+
* | \ | / | \ | / |
|
|
72
|
+
* o---o---o---o---o
|
|
63
73
|
*
|
|
64
74
|
* Where o = vertex
|
|
65
75
|
* Each square cell is split into 2 triangles.
|
|
66
76
|
* - Skirt cells (outer ring): diagonal flip based on quadrant for corner correctness
|
|
67
|
-
* - Inner cells:
|
|
77
|
+
* - Inner cells: alternating diagonal via (x+y)%2 to reduce interpolation artifacts
|
|
68
78
|
*
|
|
69
79
|
* Vertex layout (for innerSegments = 2):
|
|
70
80
|
*
|
|
@@ -110,7 +120,7 @@ class TerrainGeometry extends BufferGeometry {
|
|
|
110
120
|
const topHalf = y < mid;
|
|
111
121
|
useDefaultDiagonal = leftHalf && topHalf || !leftHalf && !topHalf;
|
|
112
122
|
} else {
|
|
113
|
-
useDefaultDiagonal =
|
|
123
|
+
useDefaultDiagonal = (x + y) % 2 === 0;
|
|
114
124
|
}
|
|
115
125
|
if (useDefaultDiagonal) {
|
|
116
126
|
indices.push(a, d, b);
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/kenjinp/hello-terrain.git"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.0.0-alpha.
|
|
9
|
+
"version": "0.0.0-alpha.6",
|
|
10
10
|
"type": "module",
|
|
11
11
|
"main": "./dist/index.mjs",
|
|
12
12
|
"module": "./dist/index.mjs",
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"mitata": "^1.0.34",
|
|
30
30
|
"unbuild": "^3.5.0",
|
|
31
31
|
"vitest": "^4.0.16",
|
|
32
|
-
"@config/
|
|
32
|
+
"@config/oxlint": "0.1.0",
|
|
33
33
|
"@config/typescript": "0.1.0",
|
|
34
|
-
"@config/
|
|
34
|
+
"@config/oxfmt": "0.1.0"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@hello-terrain/work": "0.1.1"
|