@triforge/modifier-core 0.1.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 (81) hide show
  1. package/dist/core/BaseModifier.d.ts +29 -0
  2. package/dist/core/BaseModifier.d.ts.map +1 -0
  3. package/dist/core/BaseModifier.js +16 -0
  4. package/dist/core/BaseModifier.js.map +1 -0
  5. package/dist/core/ModifierStack.d.ts +40 -0
  6. package/dist/core/ModifierStack.d.ts.map +1 -0
  7. package/dist/core/ModifierStack.js +71 -0
  8. package/dist/core/ModifierStack.js.map +1 -0
  9. package/dist/index.d.ts +34 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +23 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/modifiers/deform/BendModifier.d.ts +25 -0
  14. package/dist/modifiers/deform/BendModifier.d.ts.map +1 -0
  15. package/dist/modifiers/deform/BendModifier.js +83 -0
  16. package/dist/modifiers/deform/BendModifier.js.map +1 -0
  17. package/dist/modifiers/deform/DisplacementModifier.d.ts +38 -0
  18. package/dist/modifiers/deform/DisplacementModifier.d.ts.map +1 -0
  19. package/dist/modifiers/deform/DisplacementModifier.js +58 -0
  20. package/dist/modifiers/deform/DisplacementModifier.js.map +1 -0
  21. package/dist/modifiers/deform/ShrinkwrapModifier.d.ts +24 -0
  22. package/dist/modifiers/deform/ShrinkwrapModifier.d.ts.map +1 -0
  23. package/dist/modifiers/deform/ShrinkwrapModifier.js +122 -0
  24. package/dist/modifiers/deform/ShrinkwrapModifier.js.map +1 -0
  25. package/dist/modifiers/deform/TwistModifier.d.ts +24 -0
  26. package/dist/modifiers/deform/TwistModifier.d.ts.map +1 -0
  27. package/dist/modifiers/deform/TwistModifier.js +76 -0
  28. package/dist/modifiers/deform/TwistModifier.js.map +1 -0
  29. package/dist/modifiers/deform/WarpModifier.d.ts +33 -0
  30. package/dist/modifiers/deform/WarpModifier.d.ts.map +1 -0
  31. package/dist/modifiers/deform/WarpModifier.js +61 -0
  32. package/dist/modifiers/deform/WarpModifier.js.map +1 -0
  33. package/dist/modifiers/generate/ArrayModifier.d.ts +22 -0
  34. package/dist/modifiers/generate/ArrayModifier.d.ts.map +1 -0
  35. package/dist/modifiers/generate/ArrayModifier.js +65 -0
  36. package/dist/modifiers/generate/ArrayModifier.js.map +1 -0
  37. package/dist/modifiers/generate/BevelModifier.d.ts +31 -0
  38. package/dist/modifiers/generate/BevelModifier.d.ts.map +1 -0
  39. package/dist/modifiers/generate/BevelModifier.js +234 -0
  40. package/dist/modifiers/generate/BevelModifier.js.map +1 -0
  41. package/dist/modifiers/generate/BooleanModifier.d.ts +37 -0
  42. package/dist/modifiers/generate/BooleanModifier.d.ts.map +1 -0
  43. package/dist/modifiers/generate/BooleanModifier.js +71 -0
  44. package/dist/modifiers/generate/BooleanModifier.js.map +1 -0
  45. package/dist/modifiers/generate/ExtrudeModifier.d.ts +25 -0
  46. package/dist/modifiers/generate/ExtrudeModifier.d.ts.map +1 -0
  47. package/dist/modifiers/generate/ExtrudeModifier.js +96 -0
  48. package/dist/modifiers/generate/ExtrudeModifier.js.map +1 -0
  49. package/dist/modifiers/generate/MirrorModifier.d.ts +35 -0
  50. package/dist/modifiers/generate/MirrorModifier.d.ts.map +1 -0
  51. package/dist/modifiers/generate/MirrorModifier.js +122 -0
  52. package/dist/modifiers/generate/MirrorModifier.js.map +1 -0
  53. package/dist/modifiers/generate/OceanModifier.d.ts +64 -0
  54. package/dist/modifiers/generate/OceanModifier.d.ts.map +1 -0
  55. package/dist/modifiers/generate/OceanModifier.js +279 -0
  56. package/dist/modifiers/generate/OceanModifier.js.map +1 -0
  57. package/dist/modifiers/generate/SolidifyModifier.d.ts +21 -0
  58. package/dist/modifiers/generate/SolidifyModifier.d.ts.map +1 -0
  59. package/dist/modifiers/generate/SolidifyModifier.js +92 -0
  60. package/dist/modifiers/generate/SolidifyModifier.js.map +1 -0
  61. package/dist/modifiers/generate/SubdivisionModifier.d.ts +27 -0
  62. package/dist/modifiers/generate/SubdivisionModifier.d.ts.map +1 -0
  63. package/dist/modifiers/generate/SubdivisionModifier.js +181 -0
  64. package/dist/modifiers/generate/SubdivisionModifier.js.map +1 -0
  65. package/dist/modifiers/generate/WireframeModifier.d.ts +21 -0
  66. package/dist/modifiers/generate/WireframeModifier.d.ts.map +1 -0
  67. package/dist/modifiers/generate/WireframeModifier.js +139 -0
  68. package/dist/modifiers/generate/WireframeModifier.js.map +1 -0
  69. package/dist/modifiers/transform/NormalRecalculateModifier.d.ts +18 -0
  70. package/dist/modifiers/transform/NormalRecalculateModifier.d.ts.map +1 -0
  71. package/dist/modifiers/transform/NormalRecalculateModifier.js +24 -0
  72. package/dist/modifiers/transform/NormalRecalculateModifier.js.map +1 -0
  73. package/dist/modifiers/transform/UVProjectionModifier.d.ts +35 -0
  74. package/dist/modifiers/transform/UVProjectionModifier.d.ts.map +1 -0
  75. package/dist/modifiers/transform/UVProjectionModifier.js +88 -0
  76. package/dist/modifiers/transform/UVProjectionModifier.js.map +1 -0
  77. package/dist/utils/noise.d.ts +3 -0
  78. package/dist/utils/noise.d.ts.map +1 -0
  79. package/dist/utils/noise.js +17 -0
  80. package/dist/utils/noise.js.map +1 -0
  81. package/package.json +47 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubdivisionModifier.js","sourceRoot":"","sources":["../../../src/modifiers/generate/SubdivisionModifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { BufferGeometry } from 'three';
2
+ import { BaseModifier } from '../../core/BaseModifier.js';
3
+ export interface WireframeModifierOptions {
4
+ thickness?: number;
5
+ sides?: number;
6
+ }
7
+ /**
8
+ * Wireframe Modifier — Blender "Wireframe" modifier equivalent.
9
+ * Converts each triangle's edges into tubes, producing a wireframe mesh.
10
+ *
11
+ * For each unique edge a polygonal tube is generated with `sides` faces.
12
+ * parameters.thickness: tube radius
13
+ * parameters.sides: cross-section polygon sides (3–8)
14
+ */
15
+ export declare class WireframeModifier extends BaseModifier {
16
+ get name(): string;
17
+ parameters: Record<string, number>;
18
+ constructor(options?: WireframeModifierOptions);
19
+ apply(geometry: BufferGeometry): BufferGeometry;
20
+ }
21
+ //# sourceMappingURL=WireframeModifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WireframeModifier.d.ts","sourceRoot":"","sources":["../../../src/modifiers/generate/WireframeModifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmB,MAAM,OAAO,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAEzD,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAM,MAAM,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,IAAI,IAAI,WAAyB;IAEjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBAEtB,OAAO,GAAE,wBAA6B;IAQlD,KAAK,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc;CAwHhD"}
@@ -0,0 +1,139 @@
1
+ import { BufferGeometry, BufferAttribute } from 'three';
2
+ import { BaseModifier } from '../../core/BaseModifier.js';
3
+ /**
4
+ * Wireframe Modifier — Blender "Wireframe" modifier equivalent.
5
+ * Converts each triangle's edges into tubes, producing a wireframe mesh.
6
+ *
7
+ * For each unique edge a polygonal tube is generated with `sides` faces.
8
+ * parameters.thickness: tube radius
9
+ * parameters.sides: cross-section polygon sides (3–8)
10
+ */
11
+ export class WireframeModifier extends BaseModifier {
12
+ get name() { return 'Wireframe'; }
13
+ constructor(options = {}) {
14
+ super();
15
+ this.parameters = {
16
+ thickness: options.thickness ?? 0.02,
17
+ sides: Math.round(Math.max(3, Math.min(8, options.sides ?? 4))),
18
+ };
19
+ }
20
+ apply(geometry) {
21
+ const thickness = Math.max(0, this.parameters.thickness);
22
+ const sides = Math.round(Math.max(3, Math.min(8, this.parameters.sides)));
23
+ const srcPos = geometry.getAttribute('position');
24
+ const srcIdx = geometry.getIndex();
25
+ const vCount = srcPos.count;
26
+ // ── Build unique edge list ─────────────────────────────────────────────────
27
+ const edgeSet = new Set();
28
+ const edges = [];
29
+ const addEdge = (a, b) => {
30
+ const key = a < b ? `${a}_${b}` : `${b}_${a}`;
31
+ if (!edgeSet.has(key)) {
32
+ edgeSet.add(key);
33
+ edges.push(a < b ? [a, b] : [b, a]);
34
+ }
35
+ };
36
+ if (srcIdx) {
37
+ const ia = srcIdx.array;
38
+ for (let i = 0; i < ia.length; i += 3) {
39
+ addEdge(ia[i], ia[i + 1]);
40
+ addEdge(ia[i + 1], ia[i + 2]);
41
+ addEdge(ia[i + 2], ia[i]);
42
+ }
43
+ }
44
+ else {
45
+ for (let i = 0; i < vCount; i += 3) {
46
+ addEdge(i, i + 1);
47
+ addEdge(i + 1, i + 2);
48
+ addEdge(i + 2, i);
49
+ }
50
+ }
51
+ // ── Build tube geometry for each edge ──────────────────────────────────────
52
+ const outPos = [];
53
+ const outNorm = [];
54
+ const outIdx = [];
55
+ for (const [ai, bi] of edges) {
56
+ const ax = srcPos.getX(ai), ay = srcPos.getY(ai), az = srcPos.getZ(ai);
57
+ const bx = srcPos.getX(bi), by = srcPos.getY(bi), bz = srcPos.getZ(bi);
58
+ // Edge direction
59
+ let dx = bx - ax, dy = by - ay, dz = bz - az;
60
+ const len = Math.sqrt(dx * dx + dy * dy + dz * dz);
61
+ if (len < 1e-10)
62
+ continue;
63
+ dx /= len;
64
+ dy /= len;
65
+ dz /= len;
66
+ // Build a local frame: find two perpendicular vectors
67
+ let ux, uy, uz;
68
+ if (Math.abs(dx) <= Math.abs(dy) && Math.abs(dx) <= Math.abs(dz)) {
69
+ ux = 0;
70
+ uy = -dz;
71
+ uz = dy;
72
+ }
73
+ else if (Math.abs(dy) <= Math.abs(dz)) {
74
+ ux = dz;
75
+ uy = 0;
76
+ uz = -dx;
77
+ }
78
+ else {
79
+ ux = -dy;
80
+ uy = dx;
81
+ uz = 0;
82
+ }
83
+ const uLen = Math.sqrt(ux * ux + uy * uy + uz * uz);
84
+ ux /= uLen;
85
+ uy /= uLen;
86
+ uz /= uLen;
87
+ // v = d × u
88
+ const vx = dy * uz - dz * uy;
89
+ const vy = dz * ux - dx * uz;
90
+ const vz = dx * uy - dy * ux;
91
+ const ringBase = outPos.length / 3;
92
+ // Two rings: one at start, one at end
93
+ for (let end = 0; end < 2; end++) {
94
+ const ox = end === 0 ? ax : bx;
95
+ const oy = end === 0 ? ay : by;
96
+ const oz = end === 0 ? az : bz;
97
+ for (let s = 0; s < sides; s++) {
98
+ const angle = (s / sides) * Math.PI * 2;
99
+ const cos = Math.cos(angle);
100
+ const sin = Math.sin(angle);
101
+ const nx = cos * ux + sin * vx;
102
+ const ny = cos * uy + sin * vy;
103
+ const nz = cos * uz + sin * vz;
104
+ outPos.push(ox + nx * thickness, oy + ny * thickness, oz + nz * thickness);
105
+ outNorm.push(nx, ny, nz);
106
+ }
107
+ }
108
+ // Connect rings with quads (2 triangles each)
109
+ for (let s = 0; s < sides; s++) {
110
+ const s1 = (s + 1) % sides;
111
+ const a0 = ringBase + s;
112
+ const a1 = ringBase + s1;
113
+ const b0 = ringBase + sides + s;
114
+ const b1 = ringBase + sides + s1;
115
+ outIdx.push(a0, b0, a1);
116
+ outIdx.push(a1, b0, b1);
117
+ }
118
+ // End caps — fan triangulation
119
+ for (let end = 0; end < 2; end++) {
120
+ const ringStart = ringBase + end * sides;
121
+ const flip = end === 0;
122
+ for (let s = 1; s < sides - 1; s++) {
123
+ if (flip) {
124
+ outIdx.push(ringStart, ringStart + s + 1, ringStart + s);
125
+ }
126
+ else {
127
+ outIdx.push(ringStart, ringStart + s, ringStart + s + 1);
128
+ }
129
+ }
130
+ }
131
+ }
132
+ const result = new BufferGeometry();
133
+ result.setAttribute('position', new BufferAttribute(new Float32Array(outPos), 3));
134
+ result.setAttribute('normal', new BufferAttribute(new Float32Array(outNorm), 3));
135
+ result.setIndex(new BufferAttribute(new Uint32Array(outIdx), 1));
136
+ return result;
137
+ }
138
+ }
139
+ //# sourceMappingURL=WireframeModifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WireframeModifier.js","sourceRoot":"","sources":["../../../src/modifiers/generate/WireframeModifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAOzD;;;;;;;GAOG;AACH,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD,IAAI,IAAI,KAAK,OAAO,WAAW,CAAA,CAAC,CAAC;IAIjC,YAAY,UAAoC,EAAE;QAChD,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,UAAU,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;YACpC,KAAK,EAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;SACpE,CAAA;IACH,CAAC;IAED,KAAK,CAAC,QAAwB;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QACxD,MAAM,KAAK,GAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAE7E,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAA;QAE3B,8EAA8E;QAE9E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;QACjC,MAAM,KAAK,GAAuB,EAAE,CAAA;QAEpC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;YACvC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;YAC7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBAChB,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACrC,CAAC;QACH,CAAC,CAAA;QAED,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBACzB,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBAC7B,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,OAAO,CAAC,CAAC,EAAM,CAAC,GAAG,CAAC,CAAC,CAAA;gBACrB,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;gBACrB,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;YACnB,CAAC;QACH,CAAC;QAED,8EAA8E;QAE9E,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,MAAM,MAAM,GAAc,EAAE,CAAA;QAE5B,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACtE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAEtE,iBAAiB;YACjB,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;YAClD,IAAI,GAAG,GAAG,KAAK;gBAAE,SAAQ;YACzB,EAAE,IAAI,GAAG,CAAC;YAAC,EAAE,IAAI,GAAG,CAAC;YAAC,EAAE,IAAI,GAAG,CAAA;YAE/B,sDAAsD;YACtD,IAAI,EAAU,EAAE,EAAU,EAAE,EAAU,CAAA;YACtC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACjE,EAAE,GAAG,CAAC,CAAC;gBAAC,EAAE,GAAG,CAAC,EAAE,CAAC;gBAAC,EAAE,GAAG,EAAE,CAAA;YAC3B,CAAC;iBAAM,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxC,EAAE,GAAG,EAAE,CAAC;gBAAC,EAAE,GAAG,CAAC,CAAC;gBAAC,EAAE,GAAG,CAAC,EAAE,CAAA;YAC3B,CAAC;iBAAM,CAAC;gBACN,EAAE,GAAG,CAAC,EAAE,CAAC;gBAAC,EAAE,GAAG,EAAE,CAAC;gBAAC,EAAE,GAAG,CAAC,CAAA;YAC3B,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;YACnD,EAAE,IAAI,IAAI,CAAC;YAAC,EAAE,IAAI,IAAI,CAAC;YAAC,EAAE,IAAI,IAAI,CAAA;YAElC,YAAY;YACZ,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;YAC5B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;YAC5B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;YAE5B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;YAElC,sCAAsC;YACtC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;gBACjC,MAAM,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC9B,MAAM,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC9B,MAAM,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;gBAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;oBACvC,MAAM,GAAG,GAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;oBAC7B,MAAM,GAAG,GAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;oBAC7B,MAAM,EAAE,GAAM,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA;oBACjC,MAAM,EAAE,GAAM,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA;oBACjC,MAAM,EAAE,GAAM,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA;oBACjC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,CAAA;oBAC1E,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC1B,CAAC;YACH,CAAC;YAED,8CAA8C;YAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;gBAC1B,MAAM,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAA;gBACvB,MAAM,EAAE,GAAG,QAAQ,GAAG,EAAE,CAAA;gBACxB,MAAM,EAAE,GAAG,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAA;gBAC/B,MAAM,EAAE,GAAG,QAAQ,GAAG,KAAK,GAAG,EAAE,CAAA;gBAChC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;gBACvB,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YACzB,CAAC;YAED,+BAA+B;YAC/B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;gBACjC,MAAM,SAAS,GAAG,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAA;gBACxC,MAAM,IAAI,GAAQ,GAAG,KAAK,CAAC,CAAA;gBAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACnC,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAA;oBAC1D,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;oBAC1D,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAA;QACnC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,eAAe,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,EAAG,CAAC,CAAC,CAAC,CAAA;QAClF,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAI,IAAI,eAAe,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAClF,MAAM,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAChE,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ import { BufferGeometry } from 'three';
2
+ import { BaseModifier } from '../../core/BaseModifier.js';
3
+ /**
4
+ * Normal Recalculate Modifier — recalculates smooth vertex normals from geometry.
5
+ * Run this after DisplacementModifier or any deform modifier that changes vertex positions,
6
+ * because the normals from the source geometry will no longer match the displaced surface.
7
+ *
8
+ * Equivalent to Blender's "Recalculate Normals" in edit mode.
9
+ * Uses Three.js computeVertexNormals() internally for angle-weighted smooth normals.
10
+ *
11
+ * No parameters — this modifier is purely structural.
12
+ */
13
+ export declare class NormalRecalculateModifier extends BaseModifier {
14
+ get name(): string;
15
+ parameters: Record<string, number>;
16
+ apply(geometry: BufferGeometry): BufferGeometry;
17
+ }
18
+ //# sourceMappingURL=NormalRecalculateModifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NormalRecalculateModifier.d.ts","sourceRoot":"","sources":["../../../src/modifiers/transform/NormalRecalculateModifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmB,MAAM,OAAO,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAEzD;;;;;;;;;GASG;AACH,qBAAa,yBAA0B,SAAQ,YAAY;IACzD,IAAI,IAAI,WAAiC;IAEzC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAK;IAEvC,KAAK,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc;CAKhD"}
@@ -0,0 +1,24 @@
1
+ import { BaseModifier } from '../../core/BaseModifier.js';
2
+ /**
3
+ * Normal Recalculate Modifier — recalculates smooth vertex normals from geometry.
4
+ * Run this after DisplacementModifier or any deform modifier that changes vertex positions,
5
+ * because the normals from the source geometry will no longer match the displaced surface.
6
+ *
7
+ * Equivalent to Blender's "Recalculate Normals" in edit mode.
8
+ * Uses Three.js computeVertexNormals() internally for angle-weighted smooth normals.
9
+ *
10
+ * No parameters — this modifier is purely structural.
11
+ */
12
+ export class NormalRecalculateModifier extends BaseModifier {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.parameters = {};
16
+ }
17
+ get name() { return 'NormalRecalculate'; }
18
+ apply(geometry) {
19
+ const result = geometry.clone();
20
+ result.computeVertexNormals();
21
+ return result;
22
+ }
23
+ }
24
+ //# sourceMappingURL=NormalRecalculateModifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NormalRecalculateModifier.js","sourceRoot":"","sources":["../../../src/modifiers/transform/NormalRecalculateModifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAEzD;;;;;;;;;GASG;AACH,MAAM,OAAO,yBAA0B,SAAQ,YAAY;IAA3D;;QAGE,eAAU,GAA2B,EAAE,CAAA;IAOzC,CAAC;IATC,IAAI,IAAI,KAAK,OAAO,mBAAmB,CAAA,CAAC,CAAC;IAIzC,KAAK,CAAC,QAAwB;QAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAA;QAC/B,MAAM,CAAC,oBAAoB,EAAE,CAAA;QAC7B,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
@@ -0,0 +1,35 @@
1
+ import { BufferGeometry } from 'three';
2
+ import { BaseModifier } from '../../core/BaseModifier.js';
3
+ export type UVProjectionType = 'box' | 'sphere' | 'triplanar';
4
+ export interface UVProjectionModifierOptions {
5
+ type?: UVProjectionType;
6
+ scaleX?: number;
7
+ scaleY?: number;
8
+ scaleZ?: number;
9
+ }
10
+ /**
11
+ * UV Projection Modifier — generates procedural UVs from vertex positions.
12
+ * Replaces baked UVs with projection-based coordinates.
13
+ * Essential for geometry that was generated procedurally and has no meaningful UVs.
14
+ *
15
+ * NOTE: This is NOT a direct equivalent of Blender's "UV Project" modifier,
16
+ * which projects from a camera/object frustum onto a mesh. This modifier
17
+ * generates UVs mathematically from vertex positions — closer to Blender's
18
+ * "Generated" texture coordinate mode or the Smart UV Project unwrap.
19
+ *
20
+ * modes:
21
+ * box — axis-aligned cubic projection (Blender "Box" mapping equivalent)
22
+ * sphere — lat/lon spherical projection (Blender "Sphere" mapping equivalent)
23
+ * triplanar — normal-weighted blend of all three axis projections (no seams,
24
+ * no Blender equivalent — best for organic/displaced surfaces)
25
+ *
26
+ * parameters.scaleX/Y/Z: UV scale per axis
27
+ */
28
+ export declare class UVProjectionModifier extends BaseModifier {
29
+ get name(): string;
30
+ parameters: Record<string, number>;
31
+ type: UVProjectionType;
32
+ constructor(options?: UVProjectionModifierOptions);
33
+ apply(geometry: BufferGeometry): BufferGeometry;
34
+ }
35
+ //# sourceMappingURL=UVProjectionModifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UVProjectionModifier.d.ts","sourceRoot":"","sources":["../../../src/modifiers/transform/UVProjectionModifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA4B,MAAM,OAAO,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAEzD,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE7D,MAAM,WAAW,2BAA2B;IAC1C,IAAI,CAAC,EAAI,gBAAgB,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;IACpD,IAAI,IAAI,WAA4B;IAEpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,EAAE,gBAAgB,CAAA;gBAEV,OAAO,GAAE,2BAAgC;IAUrD,KAAK,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc;CAmDhD"}
@@ -0,0 +1,88 @@
1
+ import { BufferAttribute } from 'three';
2
+ import { BaseModifier } from '../../core/BaseModifier.js';
3
+ /**
4
+ * UV Projection Modifier — generates procedural UVs from vertex positions.
5
+ * Replaces baked UVs with projection-based coordinates.
6
+ * Essential for geometry that was generated procedurally and has no meaningful UVs.
7
+ *
8
+ * NOTE: This is NOT a direct equivalent of Blender's "UV Project" modifier,
9
+ * which projects from a camera/object frustum onto a mesh. This modifier
10
+ * generates UVs mathematically from vertex positions — closer to Blender's
11
+ * "Generated" texture coordinate mode or the Smart UV Project unwrap.
12
+ *
13
+ * modes:
14
+ * box — axis-aligned cubic projection (Blender "Box" mapping equivalent)
15
+ * sphere — lat/lon spherical projection (Blender "Sphere" mapping equivalent)
16
+ * triplanar — normal-weighted blend of all three axis projections (no seams,
17
+ * no Blender equivalent — best for organic/displaced surfaces)
18
+ *
19
+ * parameters.scaleX/Y/Z: UV scale per axis
20
+ */
21
+ export class UVProjectionModifier extends BaseModifier {
22
+ get name() { return 'UVProjection'; }
23
+ constructor(options = {}) {
24
+ super();
25
+ this.type = options.type ?? 'box';
26
+ this.parameters = {
27
+ scaleX: options.scaleX ?? 1.0,
28
+ scaleY: options.scaleY ?? 1.0,
29
+ scaleZ: options.scaleZ ?? 1.0,
30
+ };
31
+ }
32
+ apply(geometry) {
33
+ const srcPos = geometry.getAttribute('position');
34
+ const srcNorm = geometry.getAttribute('normal');
35
+ const srcIdx = geometry.getIndex();
36
+ const vCount = srcPos.count;
37
+ const outUv = new Float32Array(vCount * 2);
38
+ const sx = this.parameters.scaleX;
39
+ const sy = this.parameters.scaleY;
40
+ const sz = this.parameters.scaleZ;
41
+ for (let v = 0; v < vCount; v++) {
42
+ const px = srcPos.getX(v), py = srcPos.getY(v), pz = srcPos.getZ(v);
43
+ let u = 0, uv = 0;
44
+ switch (this.type) {
45
+ case 'sphere': {
46
+ const len = Math.sqrt(px * px + py * py + pz * pz) || 1;
47
+ u = (Math.atan2(pz / len, px / len) / (Math.PI * 2) + 0.5) * sx;
48
+ uv = (Math.asin(Math.max(-1, Math.min(1, py / len))) / Math.PI + 0.5) * sy;
49
+ break;
50
+ }
51
+ case 'triplanar': {
52
+ const nx = srcNorm ? Math.abs(srcNorm.getX(v)) : 0.333;
53
+ const ny = srcNorm ? Math.abs(srcNorm.getY(v)) : 0.334;
54
+ const nz = srcNorm ? Math.abs(srcNorm.getZ(v)) : 0.333;
55
+ const sum = nx + ny + nz || 1;
56
+ const wx = nx / sum, wy = ny / sum, wz = nz / sum;
57
+ u = (py * sz * wx + pz * sz * wy + px * sx * wz);
58
+ uv = (pz * sy * wx + px * sx * wy + py * sy * wz);
59
+ break;
60
+ }
61
+ default: { // box
62
+ const nx = srcNorm ? Math.abs(srcNorm.getX(v)) : 0;
63
+ const ny = srcNorm ? Math.abs(srcNorm.getY(v)) : 1;
64
+ const nz = srcNorm ? Math.abs(srcNorm.getZ(v)) : 0;
65
+ if (ny >= nx && ny >= nz) {
66
+ u = px * sx;
67
+ uv = pz * sz;
68
+ }
69
+ else if (nx >= ny && nx >= nz) {
70
+ u = pz * sz;
71
+ uv = py * sy;
72
+ }
73
+ else {
74
+ u = px * sx;
75
+ uv = py * sy;
76
+ }
77
+ break;
78
+ }
79
+ }
80
+ outUv[v * 2] = u;
81
+ outUv[v * 2 + 1] = uv;
82
+ }
83
+ const result = geometry.clone();
84
+ result.setAttribute('uv', new BufferAttribute(outUv, 2));
85
+ return result;
86
+ }
87
+ }
88
+ //# sourceMappingURL=UVProjectionModifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UVProjectionModifier.js","sourceRoot":"","sources":["../../../src/modifiers/transform/UVProjectionModifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Cheap 3D value noise using integer hashing. Returns value in [-1, 1]. */
2
+ export declare function noise3(x: number, y: number, z: number): number;
3
+ //# sourceMappingURL=noise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noise.d.ts","sourceRoot":"","sources":["../../src/utils/noise.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAqB9D"}
@@ -0,0 +1,17 @@
1
+ /** Cheap 3D value noise using integer hashing. Returns value in [-1, 1]. */
2
+ export function noise3(x, y, z) {
3
+ const xi = Math.floor(x), yi = Math.floor(y), zi = Math.floor(z);
4
+ const xf = x - xi, yf = y - yi, zf = z - zi;
5
+ const ux = xf * xf * (3 - 2 * xf), uy = yf * yf * (3 - 2 * yf), uz = zf * zf * (3 - 2 * zf);
6
+ const hash = (a, b, c) => {
7
+ const n = Math.sin(a * 127.1 + b * 311.7 + c * 74.7) * 43758.5453;
8
+ return (n - Math.floor(n)) * 2 - 1;
9
+ };
10
+ const v000 = hash(xi, yi, zi), v100 = hash(xi + 1, yi, zi);
11
+ const v010 = hash(xi, yi + 1, zi), v110 = hash(xi + 1, yi + 1, zi);
12
+ const v001 = hash(xi, yi, zi + 1), v101 = hash(xi + 1, yi, zi + 1);
13
+ const v011 = hash(xi, yi + 1, zi + 1), v111 = hash(xi + 1, yi + 1, zi + 1);
14
+ const lerp = (a, b, t) => a + (b - a) * t;
15
+ return lerp(lerp(lerp(v000, v100, ux), lerp(v010, v110, ux), uy), lerp(lerp(v001, v101, ux), lerp(v011, v111, ux), uy), uz);
16
+ }
17
+ //# sourceMappingURL=noise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noise.js","sourceRoot":"","sources":["../../src/utils/noise.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,UAAU,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IACpD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAA;IAC3C,MAAM,EAAE,GAAG,EAAE,GAAC,EAAE,GAAC,CAAC,CAAC,GAAC,CAAC,GAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAC,EAAE,GAAC,CAAC,CAAC,GAAC,CAAC,GAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAC,EAAE,GAAC,CAAC,CAAC,GAAC,CAAC,GAAC,EAAE,CAAC,CAAA;IAEnE,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,EAAE;QAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,UAAU,CAAA;QACjE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAI,EAAE,EAAI,EAAE,CAAG,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,GAAC,CAAC,EAAE,EAAE,EAAI,EAAE,CAAG,CAAA;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAI,EAAE,GAAC,CAAC,EAAE,EAAE,CAAG,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,GAAC,CAAC,EAAE,EAAE,GAAC,CAAC,EAAE,EAAE,CAAG,CAAA;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAI,EAAE,EAAI,EAAE,GAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,GAAC,CAAC,EAAE,EAAE,EAAI,EAAE,GAAC,CAAC,CAAC,CAAA;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAI,EAAE,GAAC,CAAC,EAAE,EAAE,GAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,GAAC,CAAC,EAAE,EAAE,GAAC,CAAC,EAAE,EAAE,GAAC,CAAC,CAAC,CAAA;IAElE,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,CAAA;IAC7D,OAAO,IAAI,CACT,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EACpD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EACpD,EAAE,CACH,CAAA;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@triforge/modifier-core",
3
+ "version": "0.1.0",
4
+ "description": "Blender-matched non-destructive geometry modifier stack for Three.js",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "package.json"
11
+ ],
12
+ "scripts": {
13
+ "build": "tsc",
14
+ "dev": "tsc --watch",
15
+ "test": "node test/run-tests.js"
16
+ },
17
+ "keywords": [
18
+ "modifier",
19
+ "geometry",
20
+ "three.js",
21
+ "blender",
22
+ "procedural"
23
+ ],
24
+ "license": "MIT",
25
+ "peerDependencies": {
26
+ "three": ">=0.128.0"
27
+ },
28
+ "devDependencies": {
29
+ "@types/three": "^0.156.0",
30
+ "three": "^0.165.0",
31
+ "typescript": "^5.3.0"
32
+ },
33
+ "dependencies": {
34
+ "three-bvh-csg": "^0.0.18",
35
+ "three-mesh-bvh": "^0.9.10"
36
+ },
37
+ "author": "Aftab Ibrahim Kazi",
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "https://github.com/AftabIbrahimKazi/triforge.git",
41
+ "directory": "st-modifier-core"
42
+ },
43
+ "homepage": "https://github.com/AftabIbrahimKazi/triforge#readme",
44
+ "publishConfig": {
45
+ "access": "public"
46
+ }
47
+ }