three-stdlib 2.14.1 → 2.15.0

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.
Files changed (89) hide show
  1. package/csm/CSM.cjs.js +1 -1
  2. package/csm/CSM.js +8 -8
  3. package/csm/CSMFrustum.cjs.js +1 -0
  4. package/csm/CSMFrustum.d.ts +19 -0
  5. package/csm/{Frustum.js → CSMFrustum.js} +8 -7
  6. package/csm/CSMShader.cjs.js +1 -0
  7. package/csm/CSMShader.d.ts +4 -0
  8. package/csm/{Shader.js → CSMShader.js} +52 -36
  9. package/curves/CurveExtras.d.ts +52 -54
  10. package/geometries/ParametricGeometries.cjs.js +1 -1
  11. package/geometries/ParametricGeometries.js +91 -99
  12. package/geometries/ParametricGeometry.cjs.js +1 -0
  13. package/geometries/ParametricGeometry.d.ts +18 -0
  14. package/geometries/ParametricGeometry.js +87 -0
  15. package/index.cjs.js +1 -1
  16. package/index.d.ts +3 -77
  17. package/index.js +4 -1
  18. package/interactive/InteractiveGroup.cjs.js +1 -0
  19. package/interactive/InteractiveGroup.d.ts +5 -0
  20. package/interactive/InteractiveGroup.js +87 -0
  21. package/lines/Line2.cjs.js +1 -1
  22. package/lines/Line2.d.ts +7 -5
  23. package/lines/Line2.js +2 -5
  24. package/lines/LineGeometry.cjs.js +1 -1
  25. package/lines/LineGeometry.d.ts +6 -8
  26. package/lines/LineGeometry.js +28 -39
  27. package/lines/LineMaterial.cjs.js +1 -1
  28. package/lines/LineMaterial.d.ts +23 -19
  29. package/lines/LineMaterial.js +263 -107
  30. package/lines/LineSegments2.cjs.js +1 -1
  31. package/lines/LineSegments2.d.ts +12 -20
  32. package/lines/LineSegments2.js +272 -125
  33. package/lines/LineSegmentsGeometry.cjs.js +1 -1
  34. package/lines/LineSegmentsGeometry.d.ts +18 -16
  35. package/lines/LineSegmentsGeometry.js +30 -40
  36. package/lines/Wireframe.cjs.js +1 -1
  37. package/lines/Wireframe.js +39 -39
  38. package/lines/WireframeGeometry2.cjs.js +1 -1
  39. package/lines/WireframeGeometry2.js +8 -9
  40. package/loaders/GLTFLoader.d.ts +2 -9
  41. package/loaders/LUT3dlLoader.d.ts +2 -2
  42. package/loaders/LUTCubeLoader.d.ts +2 -2
  43. package/loaders/RGBELoader.cjs.js +1 -1
  44. package/loaders/RGBELoader.js +1 -9
  45. package/loaders/VOXLoader.d.ts +2 -2
  46. package/objects/Reflector.d.ts +1 -0
  47. package/objects/ReflectorForSSRPass.d.ts +4 -4
  48. package/objects/Refractor.d.ts +1 -0
  49. package/objects/Water2.d.ts +1 -1
  50. package/package.json +2 -1
  51. package/postprocessing/LUTPass.d.ts +3 -3
  52. package/postprocessing/SSAARenderPass.d.ts +1 -1
  53. package/postprocessing/SSRPass.d.ts +3 -3
  54. package/shaders/BokehShader2.d.ts +27 -72
  55. package/shaders/BokehShader2.js +0 -1
  56. package/shaders/index.cjs.js +1 -1
  57. package/shaders/index.d.ts +2 -1
  58. package/shaders/index.js +1 -1
  59. package/csm/Frustum.cjs.js +0 -1
  60. package/csm/Shader.cjs.js +0 -1
  61. package/loaders/VRMLoader.d.ts +0 -19
  62. package/nodes/Nodes.d.ts +0 -106
  63. package/nodes/accessors/CameraNode.d.ts +0 -29
  64. package/nodes/accessors/NormalNode.d.ts +0 -13
  65. package/nodes/accessors/PositionNode.d.ts +0 -15
  66. package/nodes/accessors/ReflectNode.d.ts +0 -12
  67. package/nodes/accessors/UVNode.d.ts +0 -10
  68. package/nodes/core/AttributeNode.d.ts +0 -13
  69. package/nodes/core/ConstNode.d.ts +0 -22
  70. package/nodes/core/ExpressionNode.d.ts +0 -5
  71. package/nodes/core/FunctionCallNode.d.ts +0 -17
  72. package/nodes/core/FunctionNode.d.ts +0 -28
  73. package/nodes/core/InputNode.d.ts +0 -12
  74. package/nodes/core/Node.d.ts +0 -34
  75. package/nodes/core/NodeBuilder.d.ts +0 -149
  76. package/nodes/core/NodeFrame.d.ts +0 -17
  77. package/nodes/core/NodeUniform.d.ts +0 -17
  78. package/nodes/core/NodeUtils.d.ts +0 -7
  79. package/nodes/core/TempNode.d.ts +0 -23
  80. package/nodes/core/VarNode.d.ts +0 -12
  81. package/nodes/materials/MeshStandardNodeMaterial.d.ts +0 -21
  82. package/nodes/materials/NodeMaterial.d.ts +0 -28
  83. package/nodes/math/CondNode.d.ts +0 -26
  84. package/nodes/math/MathNode.d.ts +0 -57
  85. package/nodes/math/OperatorNode.d.ts +0 -17
  86. package/nodes/procedural/CheckerNode.d.ts +0 -17
  87. package/nodes/utils/JoinNode.d.ts +0 -15
  88. package/nodes/utils/TimerNode.d.ts +0 -19
  89. package/objects/ReflectorRTT.d.ts +0 -6
@@ -1,4 +1,5 @@
1
- import { Vector3, ParametricGeometry, BufferGeometry, Curve } from 'three';
1
+ import { Vector3, Curve } from 'three';
2
+ import { ParametricGeometry } from './ParametricGeometry.js';
2
3
 
3
4
  /**
4
5
  * Experimenting of primitive geometry creation using Surface Parametric equations
@@ -9,7 +10,7 @@ const ParametricGeometries = {
9
10
  u *= Math.PI;
10
11
  v *= 2 * Math.PI;
11
12
  u = u * 2;
12
- let x, y, z;
13
+ let x, z;
13
14
 
14
15
  if (u < Math.PI) {
15
16
  x = 3 * Math.cos(u) * (1 + Math.sin(u)) + 2 * (1 - Math.cos(u) / 2) * Math.cos(u) * Math.cos(v);
@@ -19,11 +20,11 @@ const ParametricGeometries = {
19
20
  z = -8 * Math.sin(u);
20
21
  }
21
22
 
22
- y = -2 * (1 - Math.cos(u) / 2) * Math.sin(v);
23
+ const y = -2 * (1 - Math.cos(u) / 2) * Math.sin(v);
23
24
  target.set(x, y, z);
24
25
  },
25
26
  plane: function (width, height) {
26
- return (u, v, target) => {
27
+ return function (u, v, target) {
27
28
  const x = u * width;
28
29
  const y = 0;
29
30
  const z = v * height;
@@ -35,11 +36,10 @@ const ParametricGeometries = {
35
36
  // http://www.wolframalpha.com/input/?i=M%C3%B6bius+strip+parametric+equations&lk=1&a=ClashPrefs_*Surface.MoebiusStrip.SurfaceProperty.ParametricEquations-
36
37
  u = u - 0.5;
37
38
  const v = 2 * Math.PI * t;
38
- let x, y, z;
39
39
  const a = 2;
40
- x = Math.cos(v) * (a + u * Math.cos(v / 2));
41
- y = Math.sin(v) * (a + u * Math.cos(v / 2));
42
- z = u * Math.sin(v / 2);
40
+ const x = Math.cos(v) * (a + u * Math.cos(v / 2));
41
+ const y = Math.sin(v) * (a + u * Math.cos(v / 2));
42
+ const z = u * Math.sin(v / 2);
43
43
  target.set(x, y, z);
44
44
  },
45
45
  mobius3d: function (u, t, target) {
@@ -51,10 +51,9 @@ const ParametricGeometries = {
51
51
  const major = 2.25,
52
52
  a = 0.125,
53
53
  b = 0.65;
54
- let x, y, z;
55
- x = a * Math.cos(t) * Math.cos(phi) - b * Math.sin(t) * Math.sin(phi);
56
- z = a * Math.cos(t) * Math.sin(phi) + b * Math.sin(t) * Math.cos(phi);
57
- y = (major + x) * Math.sin(u);
54
+ let x = a * Math.cos(t) * Math.cos(phi) - b * Math.sin(t) * Math.sin(phi);
55
+ const z = a * Math.cos(t) * Math.sin(phi) + b * Math.sin(t) * Math.cos(phi);
56
+ const y = (major + x) * Math.sin(u);
58
57
  x = (major + x) * Math.cos(u);
59
58
  target.set(x, y, z);
60
59
  }
@@ -65,123 +64,116 @@ const ParametricGeometries = {
65
64
  *
66
65
  *********************************************/
67
66
 
68
- ParametricGeometries.TubeGeometry = function (path, segments, radius, segmentsRadius, closed) {
69
- this.path = path;
70
- this.segments = segments || 64;
71
- this.radius = radius || 1;
72
- this.segmentsRadius = segmentsRadius || 8;
73
- this.closed = closed || false;
74
- const scope = this,
75
- numpoints = this.segments + 1;
76
- const frames = path.computeFrenetFrames(segments, closed),
77
- tangents = frames.tangents,
78
- normals = frames.normals,
79
- binormals = frames.binormals; // proxy internals
80
-
81
- this.tangents = tangents;
82
- this.normals = normals;
83
- this.binormals = binormals;
84
- const position = new Vector3();
85
-
86
- const ParametricTube = (u, v, target) => {
87
- v *= 2 * Math.PI;
88
- let i = u * (numpoints - 1);
89
- i = Math.floor(i);
90
- path.getPointAt(u, position);
91
- const normal = normals[i];
92
- const binormal = binormals[i];
93
- const cx = -scope.radius * Math.cos(v); // TODO: Hack: Negating it so it faces outside.
94
-
95
- const cy = scope.radius * Math.sin(v);
96
- position.x += cx * normal.x + cy * binormal.x;
97
- position.y += cx * normal.y + cy * binormal.y;
98
- position.z += cx * normal.z + cy * binormal.z;
99
- target.copy(position);
100
- };
101
-
102
- ParametricGeometry.call(this, ParametricTube, segments, segmentsRadius);
103
- };
67
+ ParametricGeometries.TubeGeometry = class TubeGeometry extends ParametricGeometry {
68
+ constructor(path, segments = 64, radius = 1, segmentsRadius = 8, closed = false) {
69
+ const numpoints = segments + 1;
70
+ const frames = path.computeFrenetFrames(segments, closed),
71
+ tangents = frames.tangents,
72
+ normals = frames.normals,
73
+ binormals = frames.binormals;
74
+ const position = new Vector3();
75
+
76
+ function ParametricTube(u, v, target) {
77
+ v *= 2 * Math.PI;
78
+ const i = Math.floor(u * (numpoints - 1));
79
+ path.getPointAt(u, position);
80
+ const normal = normals[i];
81
+ const binormal = binormals[i];
82
+ const cx = -radius * Math.cos(v); // TODO: Hack: Negating it so it faces outside.
83
+
84
+ const cy = radius * Math.sin(v);
85
+ position.x += cx * normal.x + cy * binormal.x;
86
+ position.y += cx * normal.y + cy * binormal.y;
87
+ position.z += cx * normal.z + cy * binormal.z;
88
+ target.copy(position);
89
+ }
90
+
91
+ super(ParametricTube, segments, segmentsRadius); // proxy internals
92
+
93
+ this.tangents = tangents;
94
+ this.normals = normals;
95
+ this.binormals = binormals;
96
+ this.path = path;
97
+ this.segments = segments;
98
+ this.radius = radius;
99
+ this.segmentsRadius = segmentsRadius;
100
+ this.closed = closed;
101
+ }
104
102
 
105
- ParametricGeometries.TubeGeometry.prototype = Object.create(BufferGeometry.prototype);
106
- ParametricGeometries.TubeGeometry.prototype.constructor = ParametricGeometries.TubeGeometry;
103
+ };
107
104
  /*********************************************
108
105
  *
109
106
  * Parametric Replacement for TorusKnotGeometry
110
107
  *
111
108
  *********************************************/
112
109
 
113
- ParametricGeometries.TorusKnotGeometry = function (radius, tube, segmentsT, segmentsR, p, q) {
114
- this.radius = radius || 200;
115
- this.tube = tube || 40;
116
- this.segmentsT = segmentsT || 64;
117
- this.segmentsR = segmentsR || 8;
118
- this.p = p || 2;
119
- this.q = q || 3;
120
-
121
- class TorusKnotCurve extends Curve {
122
- constructor() {
123
- super();
124
- }
110
+ ParametricGeometries.TorusKnotGeometry = class TorusKnotGeometry extends ParametricGeometries.TubeGeometry {
111
+ constructor(radius = 200, tube = 40, segmentsT = 64, segmentsR = 8, p = 2, q = 3) {
112
+ class TorusKnotCurve extends Curve {
113
+ getPoint(t, optionalTarget = new Vector3()) {
114
+ const point = optionalTarget;
115
+ t *= Math.PI * 2;
116
+ const r = 0.5;
117
+ const x = (1 + r * Math.cos(q * t)) * Math.cos(p * t);
118
+ const y = (1 + r * Math.cos(q * t)) * Math.sin(p * t);
119
+ const z = r * Math.sin(q * t);
120
+ return point.set(x, y, z).multiplyScalar(radius);
121
+ }
125
122
 
126
- getPoint(t, optionalTarget) {
127
- const point = optionalTarget || new Vector3();
128
- t *= Math.PI * 2;
129
- const r = 0.5;
130
- const x = (1 + r * Math.cos(q * t)) * Math.cos(p * t);
131
- const y = (1 + r * Math.cos(q * t)) * Math.sin(p * t);
132
- const z = r * Math.sin(q * t);
133
- return point.set(x, y, z).multiplyScalar(radius);
134
123
  }
135
124
 
125
+ const segments = segmentsT;
126
+ const radiusSegments = segmentsR;
127
+ const extrudePath = new TorusKnotCurve();
128
+ super(extrudePath, segments, tube, radiusSegments, true, false);
129
+ this.radius = radius;
130
+ this.tube = tube;
131
+ this.segmentsT = segmentsT;
132
+ this.segmentsR = segmentsR;
133
+ this.p = p;
134
+ this.q = q;
136
135
  }
137
136
 
138
- const segments = segmentsT;
139
- const radiusSegments = segmentsR;
140
- const extrudePath = new TorusKnotCurve();
141
- ParametricGeometries.TubeGeometry.call(this, extrudePath, segments, tube, radiusSegments, true, false);
142
137
  };
143
-
144
- ParametricGeometries.TorusKnotGeometry.prototype = Object.create(BufferGeometry.prototype);
145
- ParametricGeometries.TorusKnotGeometry.prototype.constructor = ParametricGeometries.TorusKnotGeometry;
146
138
  /*********************************************
147
139
  *
148
140
  * Parametric Replacement for SphereGeometry
149
141
  *
150
142
  *********************************************/
151
143
 
152
- ParametricGeometries.SphereGeometry = function (size, u, v) {
153
- function sphere(u, v, target) {
154
- u *= Math.PI;
155
- v *= 2 * Math.PI;
156
- const x = size * Math.sin(u) * Math.cos(v);
157
- const y = size * Math.sin(u) * Math.sin(v);
158
- const z = size * Math.cos(u);
159
- target.set(x, y, z);
144
+ ParametricGeometries.SphereGeometry = class SphereGeometry extends ParametricGeometry {
145
+ constructor(size, u, v) {
146
+ function sphere(u, v, target) {
147
+ u *= Math.PI;
148
+ v *= 2 * Math.PI;
149
+ const x = size * Math.sin(u) * Math.cos(v);
150
+ const y = size * Math.sin(u) * Math.sin(v);
151
+ const z = size * Math.cos(u);
152
+ target.set(x, y, z);
153
+ }
154
+
155
+ super(sphere, u, v);
160
156
  }
161
157
 
162
- ParametricGeometry.call(this, sphere, u, v);
163
158
  };
164
-
165
- ParametricGeometries.SphereGeometry.prototype = Object.create(BufferGeometry.prototype);
166
- ParametricGeometries.SphereGeometry.prototype.constructor = ParametricGeometries.SphereGeometry;
167
159
  /*********************************************
168
160
  *
169
161
  * Parametric Replacement for PlaneGeometry
170
162
  *
171
163
  *********************************************/
172
164
 
173
- ParametricGeometries.PlaneGeometry = function (width, depth, segmentsWidth, segmentsDepth) {
174
- function plane(u, v, target) {
175
- const x = u * width;
176
- const y = 0;
177
- const z = v * depth;
178
- target.set(x, y, z);
165
+ ParametricGeometries.PlaneGeometry = class PlaneGeometry extends ParametricGeometry {
166
+ constructor(width, depth, segmentsWidth, segmentsDepth) {
167
+ function plane(u, v, target) {
168
+ const x = u * width;
169
+ const y = 0;
170
+ const z = v * depth;
171
+ target.set(x, y, z);
172
+ }
173
+
174
+ super(plane, segmentsWidth, segmentsDepth);
179
175
  }
180
176
 
181
- ParametricGeometry.call(this, plane, segmentsWidth, segmentsDepth);
182
177
  };
183
178
 
184
- ParametricGeometries.PlaneGeometry.prototype = Object.create(BufferGeometry.prototype);
185
- ParametricGeometries.PlaneGeometry.prototype.constructor = ParametricGeometries.PlaneGeometry;
186
-
187
179
  export { ParametricGeometries };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("three");class e extends t.BufferGeometry{constructor(e=((t,e,s)=>s.set(t,e,Math.cos(t)*Math.sin(e))),s=8,r=8){super(),this.type="ParametricGeometry",this.parameters={func:e,slices:s,stacks:r};const o=[],u=[],c=[],i=[],n=1e-5,a=new t.Vector3,f=new t.Vector3,h=new t.Vector3,l=new t.Vector3,p=new t.Vector3,b=s+1;for(let t=0;t<=r;t++){const o=t/r;for(let t=0;t<=s;t++){const r=t/s;e(r,o,f),u.push(f.x,f.y,f.z),r-n>=0?(e(r-n,o,h),l.subVectors(f,h)):(e(r+n,o,h),l.subVectors(h,f)),o-n>=0?(e(r,o-n,h),p.subVectors(f,h)):(e(r,o+n,h),p.subVectors(h,f)),a.crossVectors(l,p).normalize(),c.push(a.x,a.y,a.z),i.push(r,o)}}for(let t=0;t<r;t++)for(let e=0;e<s;e++){const s=t*b+e,r=t*b+e+1,u=(t+1)*b+e+1,c=(t+1)*b+e;o.push(s,r,c),o.push(r,u,c)}this.setIndex(o),this.setAttribute("position",new t.Float32BufferAttribute(u,3)),this.setAttribute("normal",new t.Float32BufferAttribute(c,3)),this.setAttribute("uv",new t.Float32BufferAttribute(i,2))}}exports.ParametricGeometry=e;
@@ -0,0 +1,18 @@
1
+ import { Vector3, BufferGeometry } from 'three';
2
+
3
+ export class ParametricGeometry extends BufferGeometry {
4
+ constructor(func?: (u: number, v: number, target: Vector3) => void, slices?: number, stacks?: number);
5
+
6
+ /**
7
+ * @default 'ParametricGeometry'
8
+ */
9
+ type: string;
10
+
11
+ parameters: {
12
+ func: (u: number, v: number, dest: Vector3) => void;
13
+ slices: number;
14
+ stacks: number;
15
+ };
16
+ }
17
+
18
+ export { ParametricGeometry as ParametricBufferGeometry };
@@ -0,0 +1,87 @@
1
+ import { BufferGeometry, Vector3, Float32BufferAttribute } from 'three';
2
+
3
+ /**
4
+ * Parametric Surfaces Geometry
5
+ * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html
6
+ */
7
+
8
+ class ParametricGeometry extends BufferGeometry {
9
+ constructor(func = (u, v, target) => target.set(u, v, Math.cos(u) * Math.sin(v)), slices = 8, stacks = 8) {
10
+ super();
11
+ this.type = 'ParametricGeometry';
12
+ this.parameters = {
13
+ func: func,
14
+ slices: slices,
15
+ stacks: stacks
16
+ }; // buffers
17
+
18
+ const indices = [];
19
+ const vertices = [];
20
+ const normals = [];
21
+ const uvs = [];
22
+ const EPS = 0.00001;
23
+ const normal = new Vector3();
24
+ const p0 = new Vector3(),
25
+ p1 = new Vector3();
26
+ const pu = new Vector3(),
27
+ pv = new Vector3(); // generate vertices, normals and uvs
28
+
29
+ const sliceCount = slices + 1;
30
+
31
+ for (let i = 0; i <= stacks; i++) {
32
+ const v = i / stacks;
33
+
34
+ for (let j = 0; j <= slices; j++) {
35
+ const u = j / slices; // vertex
36
+
37
+ func(u, v, p0);
38
+ vertices.push(p0.x, p0.y, p0.z); // normal
39
+ // approximate tangent vectors via finite differences
40
+
41
+ if (u - EPS >= 0) {
42
+ func(u - EPS, v, p1);
43
+ pu.subVectors(p0, p1);
44
+ } else {
45
+ func(u + EPS, v, p1);
46
+ pu.subVectors(p1, p0);
47
+ }
48
+
49
+ if (v - EPS >= 0) {
50
+ func(u, v - EPS, p1);
51
+ pv.subVectors(p0, p1);
52
+ } else {
53
+ func(u, v + EPS, p1);
54
+ pv.subVectors(p1, p0);
55
+ } // cross product of tangent vectors returns surface normal
56
+
57
+
58
+ normal.crossVectors(pu, pv).normalize();
59
+ normals.push(normal.x, normal.y, normal.z); // uv
60
+
61
+ uvs.push(u, v);
62
+ }
63
+ } // generate indices
64
+
65
+
66
+ for (let i = 0; i < stacks; i++) {
67
+ for (let j = 0; j < slices; j++) {
68
+ const a = i * sliceCount + j;
69
+ const b = i * sliceCount + j + 1;
70
+ const c = (i + 1) * sliceCount + j + 1;
71
+ const d = (i + 1) * sliceCount + j; // faces one and two
72
+
73
+ indices.push(a, b, d);
74
+ indices.push(b, c, d);
75
+ }
76
+ } // build geometry
77
+
78
+
79
+ this.setIndex(indices);
80
+ this.setAttribute('position', new Float32BufferAttribute(vertices, 3));
81
+ this.setAttribute('normal', new Float32BufferAttribute(normals, 3));
82
+ this.setAttribute('uv', new Float32BufferAttribute(uvs, 2));
83
+ }
84
+
85
+ }
86
+
87
+ export { ParametricGeometry };