@anov/3d-ability 0.0.95 → 0.0.98

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.
@@ -54,13 +54,23 @@ declare class HeatMap extends Object3D implements HeatMapnterface {
54
54
  */
55
55
  private calDataMaxMin;
56
56
  /**
57
- * handle range data filter
57
+ * generateAsitePoints
58
58
  * @param data
59
+ */
60
+ private generateAsitePoints;
61
+ /**
62
+ * generate new origin
59
63
  * @returns
60
64
  */
61
- private handleRandeDataFilter;
65
+ private get newOrigin();
62
66
  /**
63
- * coordinate transformation
67
+ * coordinate 3D transformation
68
+ * @param data
69
+ * @returns
70
+ */
71
+ private coordinate3DTransformation;
72
+ /**
73
+ * coordinate transformation, to canvas coordinate
64
74
  * @param data
65
75
  * @returns
66
76
  */
@@ -82,13 +92,6 @@ declare class HeatMap extends Object3D implements HeatMapnterface {
82
92
  * @returns
83
93
  */
84
94
  private calResolutionScale;
85
- /**
86
- * handle resolution canvas
87
- * @param canvas
88
- * @param scale
89
- * @returns
90
- */
91
- private handleResolutionCanvas;
92
95
  /**
93
96
  * create attachment mesh
94
97
  */
@@ -1,4 +1,6 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2
4
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
3
5
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
6
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -30,17 +32,6 @@ var defaultGradient = {
30
32
  0.85: 'yellow',
31
33
  1.0: 'rgb(255,0,0)'
32
34
  };
33
- var defaultData = [{
34
- x: -1000,
35
- y: 0,
36
- z: -1000,
37
- value: 0
38
- }, {
39
- x: -1000,
40
- y: 0,
41
- z: 1000,
42
- value: 0
43
- }];
44
35
 
45
36
  /**
46
37
  * 区域热力图
@@ -152,6 +143,7 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
152
143
  }, {
153
144
  key: "calDataMaxMin",
154
145
  value: function calDataMaxMin() {
146
+ var _this2 = this;
155
147
  var maxX = Math.max.apply(Math, _toConsumableArray(this.data.map(function (item) {
156
148
  return item.x;
157
149
  })));
@@ -165,6 +157,10 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
165
157
  return item.z;
166
158
  })));
167
159
  var max = Math.max(Math.abs(Math.ceil(maxX)), Math.abs(Math.ceil(minX)), Math.abs(Math.ceil(maxZ)), Math.abs(Math.ceil(minZ)), 60);
160
+ var maxRadius = Math.max.apply(Math, _toConsumableArray(this.data.map(function (item) {
161
+ var _item$radius;
162
+ return (_item$radius = item.radius) !== null && _item$radius !== void 0 ? _item$radius : _this2._radius;
163
+ })).concat([this._radius]));
168
164
  var width = max * 2;
169
165
  var height = max * 2;
170
166
  var realShowWidth = maxX - minX;
@@ -178,50 +174,147 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
178
174
  minZ: minZ,
179
175
  maxX: maxX,
180
176
  maxZ: maxZ,
181
- realShowMax: realShowMax
177
+ realShowMax: realShowMax,
178
+ realShowWidth: realShowWidth,
179
+ realShowHeight: realShowHeight,
180
+ maxRadius: maxRadius
182
181
  };
183
182
  }
184
183
 
185
184
  /**
186
- * handle range data filter
185
+ * generateAsitePoints
187
186
  * @param data
187
+ */
188
+ }, {
189
+ key: "generateAsitePoints",
190
+ value: function generateAsitePoints(data) {
191
+ var _this3 = this;
192
+ var maxX = Math.max.apply(Math, _toConsumableArray(data.map(function (item) {
193
+ return item.x;
194
+ })));
195
+ var minX = Math.min.apply(Math, _toConsumableArray(data.map(function (item) {
196
+ return item.x;
197
+ })));
198
+ var maxZ = Math.max.apply(Math, _toConsumableArray(data.map(function (item) {
199
+ return item.z;
200
+ })));
201
+ var minZ = Math.min.apply(Math, _toConsumableArray(data.map(function (item) {
202
+ return item.z;
203
+ })));
204
+ var maxRadius = Math.max.apply(Math, _toConsumableArray(data.map(function (item) {
205
+ var _item$radius2;
206
+ return (_item$radius2 = item.radius) !== null && _item$radius2 !== void 0 ? _item$radius2 : _this3._radius;
207
+ })).concat([this._radius]));
208
+ var boundaryPoints = [{
209
+ x: minX - maxRadius,
210
+ z: minZ - maxRadius,
211
+ value: 0,
212
+ y: 0,
213
+ isBoundary: true,
214
+ radius: 0.001
215
+ }, {
216
+ x: maxX + maxRadius,
217
+ z: minZ - maxRadius,
218
+ value: 0,
219
+ y: 0,
220
+ isBoundary: true,
221
+ radius: 0.001
222
+ }, {
223
+ x: minX - maxRadius,
224
+ z: maxZ + maxRadius,
225
+ value: 0,
226
+ y: 0,
227
+ isBoundary: true,
228
+ radius: 0.001
229
+ }, {
230
+ x: maxX + maxRadius,
231
+ z: maxZ + maxRadius,
232
+ value: 0,
233
+ y: 0,
234
+ isBoundary: true,
235
+ radius: 0.001
236
+ }];
237
+ return {
238
+ boundaryPoints: boundaryPoints,
239
+ maxRadius: maxRadius
240
+ };
241
+ }
242
+
243
+ /**
244
+ * generate new origin
188
245
  * @returns
189
246
  */
190
247
  }, {
191
- key: "handleRandeDataFilter",
192
- value: function handleRandeDataFilter(data) {
193
- var _this2 = this;
194
- if (this._range) {
195
- return data.filter(function (item) {
196
- return item.x >= _this2._range.min && item.x <= _this2._range.max && item.z >= _this2._range.min && item.z <= _this2._range.max;
248
+ key: "newOrigin",
249
+ get: function get() {
250
+ // need to consider one point and multiple points
251
+ var _this$calDataMaxMin2 = this.calDataMaxMin(),
252
+ minX = _this$calDataMaxMin2.minX,
253
+ minZ = _this$calDataMaxMin2.minZ,
254
+ maxX = _this$calDataMaxMin2.maxX,
255
+ maxZ = _this$calDataMaxMin2.maxZ;
256
+ return {
257
+ x: (maxX + minX) / 2,
258
+ z: (maxZ + minZ) / 2
259
+ };
260
+ }
261
+
262
+ /**
263
+ * coordinate 3D transformation
264
+ * @param data
265
+ * @returns
266
+ */
267
+ }, {
268
+ key: "coordinate3DTransformation",
269
+ value: function coordinate3DTransformation(data) {
270
+ var _this4 = this;
271
+ var _this$newOrigin = this.newOrigin,
272
+ x = _this$newOrigin.x,
273
+ z = _this$newOrigin.z;
274
+ return data.map(function (item) {
275
+ var _item$radius3;
276
+ return _objectSpread(_objectSpread({}, item), {}, {
277
+ x: item.x - x,
278
+ z: item.z - z,
279
+ radius: (_item$radius3 = item.radius) !== null && _item$radius3 !== void 0 ? _item$radius3 : _this4._radius
197
280
  });
198
- }
199
- return data;
281
+ });
200
282
  }
201
283
 
202
284
  /**
203
- * coordinate transformation
285
+ * coordinate transformation, to canvas coordinate
204
286
  * @param data
205
287
  * @returns
206
288
  */
207
289
  }, {
208
290
  key: "coordinateTransformation",
209
291
  value: function coordinateTransformation(data) {
210
- var _this3 = this;
211
- var hanldeData = data;
212
- var _this$calDataMaxMin2 = this.calDataMaxMin(),
213
- width = _this$calDataMaxMin2.width,
214
- height = _this$calDataMaxMin2.height,
215
- max = _this$calDataMaxMin2.max;
292
+ var _this5 = this;
293
+ var hanldeData = this.coordinate3DTransformation(data);
294
+ var _this$calDataMaxMin3 = this.calDataMaxMin(),
295
+ width = _this$calDataMaxMin3.width,
296
+ height = _this$calDataMaxMin3.height,
297
+ realShowWidth = _this$calDataMaxMin3.realShowWidth,
298
+ realShowHeight = _this$calDataMaxMin3.realShowHeight;
299
+ var resolutionScale = this.calResolutionScale();
216
300
  var result = hanldeData.map(function (item) {
217
- var _item$radius;
301
+ var _item$radius4;
218
302
  return {
219
- x: Math.floor((item.x - -max) / (max - -max) * width),
220
- y: Math.floor((item.z - -max) / (max - -max) * height),
303
+ x: Math.floor((item.x - -realShowWidth / 2) / (realShowWidth / 2 - -realShowWidth / 2) * width) * resolutionScale,
304
+ y: Math.floor((item.z - -realShowHeight / 2) / (realShowHeight / 2 - -realShowHeight / 2) * height) * resolutionScale,
221
305
  value: item.value,
222
- radius: Math.max(2, (_item$radius = item.radius) !== null && _item$radius !== void 0 ? _item$radius : _this3._radius)
306
+ radius: ((_item$radius4 = item.radius) !== null && _item$radius4 !== void 0 ? _item$radius4 : _this5._radius) * resolutionScale * 2,
307
+ // @ts-ignore
308
+ isBoundary: item === null || item === void 0 ? void 0 : item.isBoundary
223
309
  };
224
310
  });
311
+
312
+ // console.log('原始', data, realShowWidth, realShowHeight)
313
+ // console.log('newOrigin', this.newOrigin)
314
+ // console.log('hanldeData', hanldeData)
315
+ // console.log('结果', result)
316
+ // console.log('resolutionScale', resolutionScale, realShowWidth, realShowHeight, realShowWidth * resolutionScale, realShowHeight * resolutionScale)
317
+
225
318
  return result;
226
319
  }
227
320
 
@@ -249,10 +342,7 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
249
342
  */
250
343
  }, {
251
344
  key: "createCanvas",
252
- value: function createCanvas() {
253
- var _this$calDataMaxMin3 = this.calDataMaxMin(),
254
- width = _this$calDataMaxMin3.width,
255
- height = _this$calDataMaxMin3.height;
345
+ value: function createCanvas(width, height) {
256
346
  var canvasBox = document.createElement('div');
257
347
  canvasBox.style.width = "".concat(width, "px");
258
348
  canvasBox.style.height = "".concat(height, "px");
@@ -269,26 +359,40 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
269
359
  */
270
360
  }, {
271
361
  key: "calResolutionScale",
272
- value: function calResolutionScale(width) {
273
- return Math.max(1, Math.min(10, 10 - width * 9 / 2000));
274
- }
275
-
276
- /**
277
- * handle resolution canvas
278
- * @param canvas
279
- * @param scale
280
- * @returns
281
- */
282
- }, {
283
- key: "handleResolutionCanvas",
284
- value: function handleResolutionCanvas(canvas, scale) {
285
- var finalCanvas = document.createElement('canvas');
286
- finalCanvas.width = canvas.width * scale;
287
- finalCanvas.height = canvas.height * scale;
288
- var ctx = finalCanvas.getContext('2d');
289
- ctx.scale(scale, scale);
290
- ctx.drawImage(canvas, 0, 0);
291
- return finalCanvas;
362
+ value: function calResolutionScale() {
363
+ var hanldeData = this.coordinate3DTransformation(this.data);
364
+ var _this$calDataMaxMin4 = this.calDataMaxMin(),
365
+ width = _this$calDataMaxMin4.width,
366
+ height = _this$calDataMaxMin4.height,
367
+ realShowWidth = _this$calDataMaxMin4.realShowWidth,
368
+ realShowHeight = _this$calDataMaxMin4.realShowHeight;
369
+ var result = hanldeData.map(function (item) {
370
+ return {
371
+ x: Math.floor((item.x - -realShowWidth / 2) / (realShowWidth / 2 - -realShowWidth / 2) * width),
372
+ y: Math.floor((item.z - -realShowHeight / 2) / (realShowHeight / 2 - -realShowHeight / 2) * height),
373
+ value: item.value,
374
+ radius: item.radius * 2
375
+ };
376
+ });
377
+ var maxRadius = Math.max.apply(Math, _toConsumableArray(result.map(function (item) {
378
+ return item.radius;
379
+ })));
380
+ var maxX = Math.max.apply(Math, _toConsumableArray(result.map(function (item) {
381
+ return item.x;
382
+ })));
383
+ var maxY = Math.max.apply(Math, _toConsumableArray(result.map(function (item) {
384
+ return item.y;
385
+ })));
386
+ var max = Math.max(maxX, maxY);
387
+ if (max <= 1000) {
388
+ var scale = (1000 - max) / 1000 * 15 + 1;
389
+ return Math.floor(maxRadius < 40 ? scale : 1);
390
+ }
391
+ if (max <= 5000) {
392
+ var _scale = (5000 - max) / 5000 * 5 + 1;
393
+ return Math.floor(maxRadius < 40 ? _scale : 1);
394
+ }
395
+ return 1;
292
396
  }
293
397
 
294
398
  /**
@@ -298,15 +402,13 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
298
402
  key: "createAttachmentMesh",
299
403
  value: function createAttachmentMesh() {
300
404
  if (this._attachmentMesh) this.remove(this._attachmentMesh);
301
- var _this$calDataMaxMin4 = this.calDataMaxMin(),
302
- width = _this$calDataMaxMin4.width,
303
- height = _this$calDataMaxMin4.height,
304
- realShowMax = _this$calDataMaxMin4.realShowMax,
305
- max = _this$calDataMaxMin4.max;
405
+ var _this$calDataMaxMin5 = this.calDataMaxMin(),
406
+ realShowMax = _this$calDataMaxMin5.realShowMax,
407
+ max = _this$calDataMaxMin5.max,
408
+ realShowWidth = _this$calDataMaxMin5.realShowWidth,
409
+ realShowHeight = _this$calDataMaxMin5.realShowHeight;
306
410
  var canvas = this._heatmap._renderer.canvas;
307
- var scale = this.calResolutionScale(canvas.width);
308
- var canvas2 = this.handleResolutionCanvas(canvas, scale);
309
- var texture = new CanvasTexture(canvas2);
411
+ var texture = new CanvasTexture(canvas);
310
412
  texture.minFilter = NearestFilter;
311
413
  texture.magFilter = NearestFilter;
312
414
  this._url = canvas.toDataURL('image/png');
@@ -341,9 +443,12 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
341
443
  side: DoubleSide,
342
444
  depthTest: false
343
445
  });
344
- var mesh = new Mesh(new PlaneGeometry(width, height, 500, 500), shaderMaterial);
446
+ var mesh = new Mesh(new PlaneGeometry(realShowWidth, realShowHeight, 500, 500), shaderMaterial);
447
+ var _this$newOrigin2 = this.newOrigin,
448
+ x = _this$newOrigin2.x,
449
+ z = _this$newOrigin2.z;
345
450
  mesh.rotation.x = -Math.PI / 2;
346
- mesh.position.set(0, 0, 0);
451
+ mesh.position.set(x, 0, z);
347
452
  mesh.renderOrder = 1000;
348
453
  this._attachmentMesh = mesh;
349
454
  this.add(mesh);
@@ -357,12 +462,21 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
357
462
  key: "setData",
358
463
  value: function setData(data) {
359
464
  var _this$_range$max, _this$_range, _this$_range$min, _this$_range2;
360
- this.data = [].concat(defaultData, _toConsumableArray(data));
465
+ var _this$generateAsitePo = this.generateAsitePoints(data),
466
+ boundaryPoints = _this$generateAsitePo.boundaryPoints;
467
+ this.data = [].concat(_toConsumableArray(boundaryPoints), _toConsumableArray(data));
468
+ var heatmapData = this.coordinateTransformation(this.data);
361
469
  this._canvasBox && use.useScene().domElement.parentElement.removeChild(this._canvasBox);
362
- this._canvasBox = this.createCanvas();
470
+ this._canvasBox = this.createCanvas(Math.max.apply(Math, _toConsumableArray(heatmapData.map(function (item) {
471
+ return item.x;
472
+ }))), Math.max.apply(Math, _toConsumableArray(heatmapData.map(function (item) {
473
+ return item.y;
474
+ }))));
363
475
  this._heatmap = this.createHeatmapTool();
364
476
  this._heatmap.setData({
365
- data: this.coordinateTransformation(data),
477
+ data: heatmapData.filter(function (item) {
478
+ return !item.isBoundary;
479
+ }),
366
480
  max: (_this$_range$max = (_this$_range = this._range) === null || _this$_range === void 0 ? void 0 : _this$_range.max) !== null && _this$_range$max !== void 0 ? _this$_range$max : this.defaultMax,
367
481
  min: (_this$_range$min = (_this$_range2 = this._range) === null || _this$_range2 === void 0 ? void 0 : _this$_range2.min) !== null && _this$_range$min !== void 0 ? _this$_range$min : 0
368
482
  });
@@ -1 +1 @@
1
- {"version":3,"names":["CanvasTexture","DoubleSide","Mesh","NearestFilter","Object3D","PlaneGeometry","ShaderMaterial","Vector2","use","h","Supercluster","heightFragmentShader","heightVertexShader","defaultGradient","defaultData","x","y","z","value","HeatMap","_Object3D","_inherits","_super","_createSuper","options","_options$radius","_options$height","_options$isPixel","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_colorMap","colorMap","_radius","radius","_height","height","_isPixel","isPixel","_range","range","_createClass","key","get","Math","max","apply","_toConsumableArray","data","map","item","_url","initSupercluster","_supercluster","minZoom","maxZoom","setSuperclusterData","featuresPoints","type","properties","geometry","coordinates","console","log","length","load","getZoomLevel","camera","minHeight","maxHeight","min","position","getSuperclusterData","_this$calDataMaxMin","calDataMaxMin","zoom","useScene","clusters","getClusters","maxX","minX","maxZ","minZ","abs","ceil","width","realShowWidth","realShowHeight","realShowMax","handleRandeDataFilter","_this2","filter","coordinateTransformation","_this3","hanldeData","_this$calDataMaxMin2","result","_item$radius","floor","createHeatmapTool","heatmap","create","container","_canvasBox","gradient","maxOpacity","minOpacity","createCanvas","_this$calDataMaxMin3","canvasBox","document","createElement","style","concat","top","right","domElement","parentElement","appendChild","calResolutionScale","handleResolutionCanvas","canvas","scale","finalCanvas","ctx","getContext","drawImage","createAttachmentMesh","_attachmentMesh","remove","_this$calDataMaxMin4","_heatmap","_renderer","canvas2","texture","minFilter","magFilter","toDataURL","threshold","shaderMaterial","uniforms","granularity","uOpacity","uHeight","uRange","vertexShader","fragmentShader","transparent","side","depthTest","mesh","rotation","PI","set","renderOrder","add","setData","_this$_range$max","_this$_range","_this$_range$min","_this$_range2","removeChild","defaultMax","removeFromParent","_this$_attachmentMesh","_get","_getPrototypeOf","prototype","material","dispose"],"sources":["../../../src/business/HeatMap/HeatMap.ts"],"sourcesContent":["import type { PerspectiveCamera } from '@anov/3d-core'\nimport { CanvasTexture, DoubleSide, Mesh, NearestFilter, Object3D, PlaneGeometry, ShaderMaterial, Vector2, use } from '@anov/3d-core'\nimport h from 'anov-heat-map'\nimport type { AnyProps } from 'supercluster'\nimport Supercluster from 'supercluster'\nimport { heightFragmentShader, heightVertexShader } from './shader'\nimport type { HeatMapData, HeatMapnterface } from './index'\n\ntype RangeType = {\n min: number\n max: number\n}\n\ntype HeatMapOptions = {\n colorMap?: {\n [key: number]: string\n }\n max?: number\n radius?: number\n height?: number\n isPixel?: boolean\n range?: RangeType\n}\n\nconst defaultGradient = { 0.25: 'rgb(0,0,255)', 0.55: 'rgb(0,255,0)', 0.85: 'yellow', 1.0: 'rgb(255,0,0)' }\n\nconst defaultData = [\n {\n x: -1000,\n y: 0,\n z: -1000,\n value: 0,\n },\n {\n x: -1000,\n y: 0,\n z: 1000,\n value: 0,\n },\n]\n\n/**\n * 区域热力图\n */\n\nclass HeatMap extends Object3D implements HeatMapnterface {\n public data: HeatMapData[] = []\n\n private _height: number\n private _radius: number\n private _heatmap: any\n private _url: string\n private _colorMap: {\n [key: number]: string\n }\n\n private _isPixel: boolean\n private _canvasBox: HTMLDivElement | undefined\n private _attachmentMesh: Mesh | undefined\n private _supercluster: Supercluster\n private _range: RangeType | undefined\n\n private get defaultMax() {\n return Math.max(...this.data.map(item => item.value))\n }\n\n public get url() {\n return this._url\n }\n\n constructor(options: HeatMapOptions) {\n super()\n\n this._colorMap = options.colorMap || defaultGradient\n this._radius = options.radius ?? 40\n this._height = options.height ?? 70\n this._isPixel = options.isPixel ?? false\n this._range = options.range\n\n // this.initSupercluster()\n }\n\n private initSupercluster() {\n this._supercluster = new Supercluster({\n radius: 40,\n minZoom: 1,\n maxZoom: 16,\n })\n }\n\n /**\n * set supercluster data\n */\n private setSuperclusterData() {\n const featuresPoints = this.data.map((item) => {\n return {\n type: 'Feature',\n properties: {},\n geometry: {\n type: 'Point',\n coordinates: [item.x, item.z],\n },\n }\n })\n\n console.log('正在加载点数据到supercluster:', featuresPoints.length)\n this._supercluster.load(featuresPoints as Supercluster.PointFeature<AnyProps>[])\n }\n\n /**\n * get zoom level\n * @param camera\n * @returns\n */\n private getZoomLevel(camera: PerspectiveCamera) {\n const minZoom = 10\n const maxZoom = 16\n const minHeight = 10\n const maxHeight = 1000\n\n return Math.max(minZoom, Math.min(maxZoom,\n ((maxHeight - camera.position.y) / (maxHeight - minHeight)) * (maxZoom - minZoom) + minZoom,\n ))\n }\n\n /**\n * get supercluster data\n * @returns\n */\n private getSuperclusterData() {\n const { max } = this.calDataMaxMin()\n const zoom = this.getZoomLevel(use.useScene().camera)\n const clusters = this._supercluster.getClusters([-max, -max, max, max], zoom)\n\n console.log('当前缩放级别:', zoom, '输入点数量:', this.data.length, '聚类后点数量:', clusters.length)\n\n return clusters\n }\n\n /**\n * calculate data max and min\n * @returns\n */\n private calDataMaxMin() {\n const maxX = Math.max(...this.data.map(item => item.x))\n const minX = Math.min(...this.data.map(item => item.x))\n const maxZ = Math.max(...this.data.map(item => item.z))\n const minZ = Math.min(...this.data.map(item => item.z))\n\n const max = Math.max(Math.abs(Math.ceil(maxX)), Math.abs(Math.ceil(minX)), Math.abs(Math.ceil(maxZ)), Math.abs(Math.ceil(minZ)), 60)\n\n const width = max * 2\n const height = max * 2\n\n const realShowWidth = maxX - minX\n const realShowHeight = maxZ - minZ\n const realShowMax = Math.max(Math.ceil(realShowWidth), Math.ceil(realShowHeight), 60)\n\n return { width, height, max, minX, minZ, maxX, maxZ, realShowMax }\n }\n\n /**\n * handle range data filter\n * @param data\n * @returns\n */\n private handleRandeDataFilter(data: HeatMapData[]) {\n if (this._range) {\n return data.filter((item) => {\n return item.x >= this._range.min && item.x <= this._range.max && item.z >= this._range.min && item.z <= this._range.max\n })\n }\n\n return data\n }\n\n /**\n * coordinate transformation\n * @param data\n * @returns\n */\n private coordinateTransformation(data: HeatMapData[]) {\n const hanldeData = data\n const { width, height, max } = this.calDataMaxMin()\n\n const result = hanldeData.map(item => ({\n x: Math.floor((item.x - (-max)) / (max - (-max)) * width),\n y: Math.floor((item.z - (-max)) / (max - (-max)) * height),\n value: item.value,\n radius: Math.max(2, (item.radius ?? this._radius)),\n }))\n\n return result\n }\n\n /**\n * generate heatmap texture\n * @param canvasBox\n * @returns\n */\n private createHeatmapTool() {\n const heatmap = h.create({\n container: this._canvasBox,\n radius: this._radius,\n gradient: this._colorMap,\n maxOpacity: 1,\n minOpacity: 0,\n })\n\n return heatmap\n }\n\n /**\n * create heatmap container canvas\n * @returns\n */\n private createCanvas() {\n const { width, height } = this.calDataMaxMin()\n const canvasBox = document.createElement('div')\n\n canvasBox.style.width = `${width}px`\n canvasBox.style.height = `${height}px`\n canvasBox.style.top = '0'\n canvasBox.style.right = '0'\n\n use.useScene().domElement.parentElement.appendChild(canvasBox)\n\n return canvasBox\n }\n\n /**\n * calculate resolution scale\n * @param width\n * @returns\n */\n private calResolutionScale(width: number) {\n return Math.max(1, Math.min(10, 10 - (width * 9) / 2000))\n }\n\n /**\n * handle resolution canvas\n * @param canvas\n * @param scale\n * @returns\n */\n private handleResolutionCanvas(canvas: HTMLCanvasElement, scale: number) {\n const finalCanvas = document.createElement('canvas')\n finalCanvas.width = canvas.width * scale\n finalCanvas.height = canvas.height * scale\n const ctx = finalCanvas.getContext('2d')\n ctx.scale(scale, scale)\n ctx.drawImage(canvas, 0, 0)\n\n return finalCanvas\n }\n\n /**\n * create attachment mesh\n */\n private createAttachmentMesh() {\n if (this._attachmentMesh)\n this.remove(this._attachmentMesh)\n\n const { width, height, realShowMax, max } = this.calDataMaxMin()\n const canvas = this._heatmap._renderer.canvas\n const scale = this.calResolutionScale(canvas.width)\n const canvas2 = this.handleResolutionCanvas(canvas, scale)\n const texture = new CanvasTexture(canvas2)\n\n texture.minFilter = NearestFilter\n texture.magFilter = NearestFilter\n\n this._url = canvas.toDataURL('image/png')\n\n const threshold = (0.3 / 1000 * realShowMax)\n const shaderMaterial = new ShaderMaterial({\n uniforms: {\n map: { value: texture },\n granularity: { value: realShowMax / 3 < 300 ? 300 : realShowMax / 3 },\n threshold: { value: threshold > 0.6 ? 0.6 : threshold < 0.25 ? 0.25 : threshold },\n uOpacity: { value: 2.0 },\n uHeight: { value: this._height },\n isPixel: { value: this._isPixel },\n uRange: { value: new Vector2(-max, max) },\n\n },\n vertexShader: heightVertexShader,\n fragmentShader: heightFragmentShader,\n transparent: true,\n side: DoubleSide,\n depthTest: false,\n })\n\n const mesh = new Mesh(new PlaneGeometry(width, height, 500, 500), shaderMaterial)\n\n mesh.rotation.x = -Math.PI / 2\n mesh.position.set(0, 0, 0)\n mesh.renderOrder = 1000\n\n this._attachmentMesh = mesh\n this.add(mesh)\n }\n\n /**\n * set heatmap data\n * @param data\n */\n public setData(data: HeatMapData[]) {\n this.data = [...defaultData, ...data]\n this._canvasBox && use.useScene().domElement.parentElement.removeChild(this._canvasBox)\n this._canvasBox = this.createCanvas()\n this._heatmap = this.createHeatmapTool()\n\n this._heatmap.setData({\n data: this.coordinateTransformation(data),\n max: this._range?.max ?? this.defaultMax,\n min: this._range?.min ?? 0,\n })\n\n this.createAttachmentMesh()\n\n // 聚类暂时不实现\n // this.setSuperclusterData()\n // use.useScene().orbitControls.addEventListener('change', () => {\n // const clusters = this.getSuperclusterData()\n // console.log(clusters)\n // })\n }\n\n override removeFromParent(): this {\n super.removeFromParent()\n use.useScene().domElement.parentElement.removeChild(this._canvasBox)\n\n // @ts-ignore\n this._attachmentMesh?.material.dispose()\n\n return this\n }\n}\n\nexport default HeatMap"],"mappings":"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"}
1
+ {"version":3,"names":["CanvasTexture","DoubleSide","Mesh","NearestFilter","Object3D","PlaneGeometry","ShaderMaterial","Vector2","use","h","Supercluster","heightFragmentShader","heightVertexShader","defaultGradient","HeatMap","_Object3D","_inherits","_super","_createSuper","options","_options$radius","_options$height","_options$isPixel","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_colorMap","colorMap","_radius","radius","_height","height","_isPixel","isPixel","_range","range","_createClass","key","get","Math","max","apply","_toConsumableArray","data","map","item","value","_url","initSupercluster","_supercluster","minZoom","maxZoom","setSuperclusterData","featuresPoints","type","properties","geometry","coordinates","x","z","console","log","length","load","getZoomLevel","camera","minHeight","maxHeight","min","position","y","getSuperclusterData","_this$calDataMaxMin","calDataMaxMin","zoom","useScene","clusters","getClusters","_this2","maxX","minX","maxZ","minZ","abs","ceil","maxRadius","_item$radius","concat","width","realShowWidth","realShowHeight","realShowMax","generateAsitePoints","_this3","_item$radius2","boundaryPoints","isBoundary","_this$calDataMaxMin2","coordinate3DTransformation","_this4","_this$newOrigin","newOrigin","_item$radius3","_objectSpread","coordinateTransformation","_this5","hanldeData","_this$calDataMaxMin3","resolutionScale","calResolutionScale","result","_item$radius4","floor","createHeatmapTool","heatmap","create","container","_canvasBox","gradient","maxOpacity","minOpacity","createCanvas","canvasBox","document","createElement","style","top","right","domElement","parentElement","appendChild","_this$calDataMaxMin4","maxY","scale","createAttachmentMesh","_attachmentMesh","remove","_this$calDataMaxMin5","canvas","_heatmap","_renderer","texture","minFilter","magFilter","toDataURL","threshold","shaderMaterial","uniforms","granularity","uOpacity","uHeight","uRange","vertexShader","fragmentShader","transparent","side","depthTest","mesh","_this$newOrigin2","rotation","PI","set","renderOrder","add","setData","_this$_range$max","_this$_range","_this$_range$min","_this$_range2","_this$generateAsitePo","heatmapData","removeChild","filter","defaultMax","removeFromParent","_this$_attachmentMesh","_get","_getPrototypeOf","prototype","material","dispose"],"sources":["../../../src/business/HeatMap/HeatMap.ts"],"sourcesContent":["import type { PerspectiveCamera } from '@anov/3d-core'\nimport { CanvasTexture, DoubleSide, Mesh, NearestFilter, Object3D, PlaneGeometry, ShaderMaterial, Vector2, use } from '@anov/3d-core'\nimport h from 'anov-heat-map'\nimport type { AnyProps } from 'supercluster'\nimport Supercluster from 'supercluster'\nimport { heightFragmentShader, heightVertexShader } from './shader'\nimport type { HeatMapData, HeatMapnterface } from './index'\n\ntype RangeType = {\n min: number\n max: number\n}\n\ntype HeatMapOptions = {\n colorMap?: {\n [key: number]: string\n }\n max?: number\n radius?: number\n height?: number\n isPixel?: boolean\n range?: RangeType\n}\n\nconst defaultGradient = { 0.25: 'rgb(0,0,255)', 0.55: 'rgb(0,255,0)', 0.85: 'yellow', 1.0: 'rgb(255,0,0)' }\n\n/**\n * 区域热力图\n */\n\nclass HeatMap extends Object3D implements HeatMapnterface {\n public data: HeatMapData[] = []\n\n private _height: number\n private _radius: number\n private _heatmap: any\n private _url: string\n private _colorMap: {\n [key: number]: string\n }\n\n private _isPixel: boolean\n private _canvasBox: HTMLDivElement | undefined\n private _attachmentMesh: Mesh | undefined\n private _supercluster: Supercluster\n private _range: RangeType | undefined\n\n private get defaultMax() {\n return Math.max(...this.data.map(item => item.value))\n }\n\n public get url() {\n return this._url\n }\n\n constructor(options: HeatMapOptions) {\n super()\n\n this._colorMap = options.colorMap || defaultGradient\n this._radius = options.radius ?? 40\n this._height = options.height ?? 70\n this._isPixel = options.isPixel ?? false\n this._range = options.range\n\n // this.initSupercluster()\n }\n\n private initSupercluster() {\n this._supercluster = new Supercluster({\n radius: 40,\n minZoom: 1,\n maxZoom: 16,\n })\n }\n\n /**\n * set supercluster data\n */\n private setSuperclusterData() {\n const featuresPoints = this.data.map((item) => {\n return {\n type: 'Feature',\n properties: {},\n geometry: {\n type: 'Point',\n coordinates: [item.x, item.z],\n },\n }\n })\n\n console.log('正在加载点数据到supercluster:', featuresPoints.length)\n this._supercluster.load(featuresPoints as Supercluster.PointFeature<AnyProps>[])\n }\n\n /**\n * get zoom level\n * @param camera\n * @returns\n */\n private getZoomLevel(camera: PerspectiveCamera) {\n const minZoom = 10\n const maxZoom = 16\n const minHeight = 10\n const maxHeight = 1000\n\n return Math.max(minZoom, Math.min(maxZoom,\n ((maxHeight - camera.position.y) / (maxHeight - minHeight)) * (maxZoom - minZoom) + minZoom,\n ))\n }\n\n /**\n * get supercluster data\n * @returns\n */\n private getSuperclusterData() {\n const { max } = this.calDataMaxMin()\n const zoom = this.getZoomLevel(use.useScene().camera)\n const clusters = this._supercluster.getClusters([-max, -max, max, max], zoom)\n\n console.log('当前缩放级别:', zoom, '输入点数量:', this.data.length, '聚类后点数量:', clusters.length)\n\n return clusters\n }\n\n /**\n * calculate data max and min\n * @returns\n */\n private calDataMaxMin() {\n const maxX = Math.max(...this.data.map(item => item.x))\n const minX = Math.min(...this.data.map(item => item.x))\n const maxZ = Math.max(...this.data.map(item => item.z))\n const minZ = Math.min(...this.data.map(item => item.z))\n\n const max = Math.max(Math.abs(Math.ceil(maxX)), Math.abs(Math.ceil(minX)), Math.abs(Math.ceil(maxZ)), Math.abs(Math.ceil(minZ)), 60)\n const maxRadius = Math.max(...this.data.map(item => item.radius ?? this._radius), this._radius)\n\n const width = max * 2\n const height = max * 2\n\n const realShowWidth = maxX - minX\n const realShowHeight = maxZ - minZ\n\n const realShowMax = Math.max(Math.ceil(realShowWidth), Math.ceil(realShowHeight), 60)\n\n return { width, height, max, minX, minZ, maxX, maxZ, realShowMax, realShowWidth, realShowHeight, maxRadius }\n }\n\n /**\n * generateAsitePoints\n * @param data\n */\n private generateAsitePoints(data: HeatMapData[]) {\n const maxX = Math.max(...data.map(item => item.x))\n const minX = Math.min(...data.map(item => item.x))\n const maxZ = Math.max(...data.map(item => item.z))\n const minZ = Math.min(...data.map(item => item.z))\n\n const maxRadius = Math.max(...data.map(item => item.radius ?? this._radius), this._radius)\n\n const boundaryPoints = [\n { x: minX - maxRadius, z: minZ - maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n { x: maxX + maxRadius, z: minZ - maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n { x: minX - maxRadius, z: maxZ + maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n { x: maxX + maxRadius, z: maxZ + maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n ]\n\n return { boundaryPoints, maxRadius }\n }\n\n /**\n * generate new origin\n * @returns\n */\n private get newOrigin() {\n // need to consider one point and multiple points\n const { minX, minZ, maxX, maxZ } = this.calDataMaxMin()\n\n return {\n x: (maxX + minX) / 2,\n z: (maxZ + minZ) / 2,\n }\n }\n\n /**\n * coordinate 3D transformation\n * @param data\n * @returns\n */\n private coordinate3DTransformation(data: HeatMapData[]) {\n const { x, z } = this.newOrigin\n return data.map(item => ({\n ...item,\n x: item.x - x,\n z: item.z - z,\n radius: item.radius ?? this._radius,\n }))\n }\n\n /**\n * coordinate transformation, to canvas coordinate\n * @param data\n * @returns\n */\n private coordinateTransformation(data: HeatMapData[]) {\n const hanldeData = this.coordinate3DTransformation(data)\n const { width, height, realShowWidth, realShowHeight } = this.calDataMaxMin()\n const resolutionScale = this.calResolutionScale()\n\n const result = hanldeData.map(item => ({\n x: Math.floor((item.x - (-realShowWidth / 2)) / (realShowWidth / 2 - (-realShowWidth / 2)) * width) * resolutionScale,\n y: Math.floor((item.z - (-realShowHeight / 2)) / (realShowHeight / 2 - (-realShowHeight / 2)) * height) * resolutionScale,\n value: item.value,\n radius: (item.radius ?? this._radius) * resolutionScale * 2,\n // @ts-ignore\n isBoundary: item?.isBoundary,\n }))\n\n // console.log('原始', data, realShowWidth, realShowHeight)\n // console.log('newOrigin', this.newOrigin)\n // console.log('hanldeData', hanldeData)\n // console.log('结果', result)\n // console.log('resolutionScale', resolutionScale, realShowWidth, realShowHeight, realShowWidth * resolutionScale, realShowHeight * resolutionScale)\n\n return result\n }\n\n /**\n * generate heatmap texture\n * @param canvasBox\n * @returns\n */\n private createHeatmapTool() {\n const heatmap = h.create({\n container: this._canvasBox,\n radius: this._radius,\n gradient: this._colorMap,\n maxOpacity: 1,\n minOpacity: 0,\n })\n\n return heatmap\n }\n\n /**\n * create heatmap container canvas\n * @returns\n */\n private createCanvas(width: number, height: number) {\n const canvasBox = document.createElement('div')\n\n canvasBox.style.width = `${width}px`\n canvasBox.style.height = `${height}px`\n canvasBox.style.top = '0'\n canvasBox.style.right = '0'\n\n use.useScene().domElement.parentElement.appendChild(canvasBox)\n\n return canvasBox\n }\n\n /**\n * calculate resolution scale\n * @param width\n * @returns\n */\n private calResolutionScale() {\n const hanldeData = this.coordinate3DTransformation(this.data)\n const { width, height, realShowWidth, realShowHeight } = this.calDataMaxMin()\n const result = hanldeData.map(item => ({\n x: Math.floor((item.x - (-realShowWidth / 2)) / (realShowWidth / 2 - (-realShowWidth / 2)) * width),\n y: Math.floor((item.z - (-realShowHeight / 2)) / (realShowHeight / 2 - (-realShowHeight / 2)) * height),\n value: item.value,\n radius: item.radius * 2,\n }))\n\n const maxRadius = Math.max(...result.map(item => item.radius))\n const maxX = Math.max(...result.map(item => item.x))\n const maxY = Math.max(...result.map(item => item.y))\n const max = Math.max(maxX, maxY)\n\n if (max <= 1000) {\n const scale = (1000 - max) / 1000 * 15 + 1\n return Math.floor(maxRadius < 40 ? scale : 1)\n }\n\n if (max <= 5000) {\n const scale = (5000 - max) / 5000 * 5 + 1\n return Math.floor(maxRadius < 40 ? scale : 1)\n }\n\n return 1\n }\n\n /**\n * create attachment mesh\n */\n private createAttachmentMesh() {\n if (this._attachmentMesh)\n this.remove(this._attachmentMesh)\n\n const { realShowMax, max, realShowWidth, realShowHeight } = this.calDataMaxMin()\n const canvas = this._heatmap._renderer.canvas\n const texture = new CanvasTexture(canvas)\n\n texture.minFilter = NearestFilter\n texture.magFilter = NearestFilter\n\n this._url = canvas.toDataURL('image/png')\n\n const threshold = (0.3 / 1000 * realShowMax)\n const shaderMaterial = new ShaderMaterial({\n uniforms: {\n map: { value: texture },\n granularity: { value: realShowMax / 3 < 300 ? 300 : realShowMax / 3 },\n threshold: { value: threshold > 0.6 ? 0.6 : threshold < 0.25 ? 0.25 : threshold },\n uOpacity: { value: 2.0 },\n uHeight: { value: this._height },\n isPixel: { value: this._isPixel },\n uRange: { value: new Vector2(-max, max) },\n\n },\n vertexShader: heightVertexShader,\n fragmentShader: heightFragmentShader,\n transparent: true,\n side: DoubleSide,\n depthTest: false,\n })\n\n const mesh = new Mesh(new PlaneGeometry(realShowWidth, realShowHeight, 500, 500), shaderMaterial)\n const { x, z } = this.newOrigin\n\n mesh.rotation.x = -Math.PI / 2\n mesh.position.set(x, 0, z)\n mesh.renderOrder = 1000\n\n this._attachmentMesh = mesh\n this.add(mesh)\n }\n\n /**\n * set heatmap data\n * @param data\n */\n public setData(data: HeatMapData[]) {\n const { boundaryPoints } = this.generateAsitePoints(data)\n this.data = [...boundaryPoints, ...data]\n\n const heatmapData = this.coordinateTransformation(this.data)\n this._canvasBox && use.useScene().domElement.parentElement.removeChild(this._canvasBox)\n this._canvasBox = this.createCanvas(Math.max(...heatmapData.map(item => item.x)), Math.max(...heatmapData.map(item => item.y)))\n this._heatmap = this.createHeatmapTool()\n\n this._heatmap.setData({\n data: heatmapData.filter(item => !item.isBoundary),\n max: this._range?.max ?? this.defaultMax,\n min: this._range?.min ?? 0,\n })\n\n this.createAttachmentMesh()\n\n // 聚类暂时不实现\n // this.setSuperclusterData()\n // use.useScene().orbitControls.addEventListener('change', () => {\n // const clusters = this.getSuperclusterData()\n // console.log(clusters)\n // })\n }\n\n override removeFromParent(): this {\n super.removeFromParent()\n use.useScene().domElement.parentElement.removeChild(this._canvasBox)\n\n // @ts-ignore\n this._attachmentMesh?.material.dispose()\n\n return this\n }\n}\n\nexport default HeatMap"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const heightVertexShader = "\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uHeight;\n uniform sampler2D map;\n\n void main() {\n vUv = uv;\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = worldPosition.xyz;\n float h = texture2D(map, vUv).a * uHeight;\n // gl_Position = projectionMatrix * viewMatrix * vec4(worldPosition.x, worldPosition.y, h, 1.0);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position.x, position.y, h, 1.0);\n }\n";
1
+ export declare const heightVertexShader = "\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uHeight;\n uniform sampler2D map;\n\n void main() {\n vUv = uv;\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = worldPosition.xyz;\n float h = texture2D(map, vUv).a * uHeight;\n // gl_Position = projectionMatrix * viewMatrix * vec4(worldPosition.x, worldPosition.y, h, 1.0);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position.x, position.y, position.z, 1.0);\n }\n";
2
2
  export declare const heightFragmentShader = "\n uniform sampler2D map;\n uniform float granularity;\n uniform float threshold;\n uniform vec2 uRange;\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uOpacity;\n uniform bool isPixel;\n\n \nvec4 createPixelGraphEffect(sampler2D map, vec2 vUv, float granularity, float threshold, vec2 range, vec3 worldPos) {\n vec2 pixelSize = vec2(1.0) / granularity;\n vec2 cell = floor(vUv / pixelSize);\n vec2 cellUv = fract(vUv / pixelSize);\n\n vec4 texColor = texture2D(map, (cell + 0.5) * pixelSize);\n\n vec2 pointCenter = vec2(0.5, 0.5);\n vec2 rotatedUv = cellUv - pointCenter;\n vec2 rotated = vec2(\n (rotatedUv.x - rotatedUv.y) * 0.7071067811865476,\n (rotatedUv.x + rotatedUv.y) * 0.7071067811865476\n );\n\n float dist = abs(rotated.x) + abs(rotated.y);\n\n float intensity = (texColor.r + texColor.g + texColor.b) / 3.0;\n float pointSize = 0.3 * smoothstep(0.0, threshold, intensity);\n\n if (dist > pointSize || intensity < 0.05) {\n discard;\n }\n\n return texColor;\n}\n\n\n void main() {\n vec4 texColor = isPixel ? \n createPixelGraphEffect(map, vUv, granularity, threshold, uRange, vWorldPosition) : \n texture2D(map, vUv);\n \n float a = texColor.a * uOpacity;\n gl_FragColor = texColor;\n gl_FragColor.a = min(a, 1.0); \n\n if(vWorldPosition.x < uRange.x || vWorldPosition.x > uRange.y || \n vWorldPosition.z < uRange.x || vWorldPosition.z > uRange.y) {\n discard;\n }\n }\n";
@@ -1,4 +1,4 @@
1
- export var heightVertexShader = /* glsl */"\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uHeight;\n uniform sampler2D map;\n\n void main() {\n vUv = uv;\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = worldPosition.xyz;\n float h = texture2D(map, vUv).a * uHeight;\n // gl_Position = projectionMatrix * viewMatrix * vec4(worldPosition.x, worldPosition.y, h, 1.0);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position.x, position.y, h, 1.0);\n }\n";
1
+ export var heightVertexShader = /* glsl */"\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uHeight;\n uniform sampler2D map;\n\n void main() {\n vUv = uv;\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = worldPosition.xyz;\n float h = texture2D(map, vUv).a * uHeight;\n // gl_Position = projectionMatrix * viewMatrix * vec4(worldPosition.x, worldPosition.y, h, 1.0);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position.x, position.y, position.z, 1.0);\n }\n";
2
2
  var pixelGraphFunc = /* glsl */"\nvec4 createPixelGraphEffect(sampler2D map, vec2 vUv, float granularity, float threshold, vec2 range, vec3 worldPos) {\n vec2 pixelSize = vec2(1.0) / granularity;\n vec2 cell = floor(vUv / pixelSize);\n vec2 cellUv = fract(vUv / pixelSize);\n\n vec4 texColor = texture2D(map, (cell + 0.5) * pixelSize);\n\n vec2 pointCenter = vec2(0.5, 0.5);\n vec2 rotatedUv = cellUv - pointCenter;\n vec2 rotated = vec2(\n (rotatedUv.x - rotatedUv.y) * 0.7071067811865476,\n (rotatedUv.x + rotatedUv.y) * 0.7071067811865476\n );\n\n float dist = abs(rotated.x) + abs(rotated.y);\n\n float intensity = (texColor.r + texColor.g + texColor.b) / 3.0;\n float pointSize = 0.3 * smoothstep(0.0, threshold, intensity);\n\n if (dist > pointSize || intensity < 0.05) {\n discard;\n }\n\n return texColor;\n}\n";
3
3
  export var heightFragmentShader = /* glsl */"\n uniform sampler2D map;\n uniform float granularity;\n uniform float threshold;\n uniform vec2 uRange;\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uOpacity;\n uniform bool isPixel;\n\n ".concat(pixelGraphFunc, "\n\n void main() {\n vec4 texColor = isPixel ? \n createPixelGraphEffect(map, vUv, granularity, threshold, uRange, vWorldPosition) : \n texture2D(map, vUv);\n \n float a = texColor.a * uOpacity;\n gl_FragColor = texColor;\n gl_FragColor.a = min(a, 1.0); \n\n if(vWorldPosition.x < uRange.x || vWorldPosition.x > uRange.y || \n vWorldPosition.z < uRange.x || vWorldPosition.z > uRange.y) {\n discard;\n }\n }\n");
4
4
  //# sourceMappingURL=shader.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["heightVertexShader","pixelGraphFunc","heightFragmentShader","concat"],"sources":["../../../src/business/HeatMap/shader.ts"],"sourcesContent":["export const heightVertexShader = /* glsl */ `\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uHeight;\n uniform sampler2D map;\n\n void main() {\n vUv = uv;\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = worldPosition.xyz;\n float h = texture2D(map, vUv).a * uHeight;\n // gl_Position = projectionMatrix * viewMatrix * vec4(worldPosition.x, worldPosition.y, h, 1.0);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position.x, position.y, h, 1.0);\n }\n`\n\nconst pixelGraphFunc = /* glsl */ `\nvec4 createPixelGraphEffect(sampler2D map, vec2 vUv, float granularity, float threshold, vec2 range, vec3 worldPos) {\n vec2 pixelSize = vec2(1.0) / granularity;\n vec2 cell = floor(vUv / pixelSize);\n vec2 cellUv = fract(vUv / pixelSize);\n\n vec4 texColor = texture2D(map, (cell + 0.5) * pixelSize);\n\n vec2 pointCenter = vec2(0.5, 0.5);\n vec2 rotatedUv = cellUv - pointCenter;\n vec2 rotated = vec2(\n (rotatedUv.x - rotatedUv.y) * 0.7071067811865476,\n (rotatedUv.x + rotatedUv.y) * 0.7071067811865476\n );\n\n float dist = abs(rotated.x) + abs(rotated.y);\n\n float intensity = (texColor.r + texColor.g + texColor.b) / 3.0;\n float pointSize = 0.3 * smoothstep(0.0, threshold, intensity);\n\n if (dist > pointSize || intensity < 0.05) {\n discard;\n }\n\n return texColor;\n}\n`\n\nexport const heightFragmentShader = /* glsl */ `\n uniform sampler2D map;\n uniform float granularity;\n uniform float threshold;\n uniform vec2 uRange;\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uOpacity;\n uniform bool isPixel;\n\n ${pixelGraphFunc}\n\n void main() {\n vec4 texColor = isPixel ? \n createPixelGraphEffect(map, vUv, granularity, threshold, uRange, vWorldPosition) : \n texture2D(map, vUv);\n \n float a = texColor.a * uOpacity;\n gl_FragColor = texColor;\n gl_FragColor.a = min(a, 1.0); \n\n if(vWorldPosition.x < uRange.x || vWorldPosition.x > uRange.y || \n vWorldPosition.z < uRange.x || vWorldPosition.z > uRange.y) {\n discard;\n }\n }\n`\n"],"mappings":"AAAA,OAAO,IAAMA,kBAAkB,GAAG,yfAcjC;AAED,IAAMC,cAAc,GAAG,u1BA0BtB;AAED,OAAO,IAAMC,oBAAoB,GAAG,wOAAAC,MAAA,CAUhCF,cAAc,weAgBjB"}
1
+ {"version":3,"names":["heightVertexShader","pixelGraphFunc","heightFragmentShader","concat"],"sources":["../../../src/business/HeatMap/shader.ts"],"sourcesContent":["export const heightVertexShader = /* glsl */ `\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uHeight;\n uniform sampler2D map;\n\n void main() {\n vUv = uv;\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = worldPosition.xyz;\n float h = texture2D(map, vUv).a * uHeight;\n // gl_Position = projectionMatrix * viewMatrix * vec4(worldPosition.x, worldPosition.y, h, 1.0);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position.x, position.y, position.z, 1.0);\n }\n`\n\nconst pixelGraphFunc = /* glsl */ `\nvec4 createPixelGraphEffect(sampler2D map, vec2 vUv, float granularity, float threshold, vec2 range, vec3 worldPos) {\n vec2 pixelSize = vec2(1.0) / granularity;\n vec2 cell = floor(vUv / pixelSize);\n vec2 cellUv = fract(vUv / pixelSize);\n\n vec4 texColor = texture2D(map, (cell + 0.5) * pixelSize);\n\n vec2 pointCenter = vec2(0.5, 0.5);\n vec2 rotatedUv = cellUv - pointCenter;\n vec2 rotated = vec2(\n (rotatedUv.x - rotatedUv.y) * 0.7071067811865476,\n (rotatedUv.x + rotatedUv.y) * 0.7071067811865476\n );\n\n float dist = abs(rotated.x) + abs(rotated.y);\n\n float intensity = (texColor.r + texColor.g + texColor.b) / 3.0;\n float pointSize = 0.3 * smoothstep(0.0, threshold, intensity);\n\n if (dist > pointSize || intensity < 0.05) {\n discard;\n }\n\n return texColor;\n}\n`\n\nexport const heightFragmentShader = /* glsl */ `\n uniform sampler2D map;\n uniform float granularity;\n uniform float threshold;\n uniform vec2 uRange;\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uOpacity;\n uniform bool isPixel;\n\n ${pixelGraphFunc}\n\n void main() {\n vec4 texColor = isPixel ? \n createPixelGraphEffect(map, vUv, granularity, threshold, uRange, vWorldPosition) : \n texture2D(map, vUv);\n \n float a = texColor.a * uOpacity;\n gl_FragColor = texColor;\n gl_FragColor.a = min(a, 1.0); \n\n if(vWorldPosition.x < uRange.x || vWorldPosition.x > uRange.y || \n vWorldPosition.z < uRange.x || vWorldPosition.z > uRange.y) {\n discard;\n }\n }\n`\n"],"mappings":"AAAA,OAAO,IAAMA,kBAAkB,GAAG,kgBAcjC;AAED,IAAMC,cAAc,GAAG,u1BA0BtB;AAED,OAAO,IAAMC,oBAAoB,GAAG,wOAAAC,MAAA,CAUhCF,cAAc,weAgBjB"}
@@ -71,7 +71,7 @@ var SingleCircleMesh = /*#__PURE__*/function (_ParticleMesh) {
71
71
  fragmentShader: fragmentShader,
72
72
  side: 2,
73
73
  transparent: true,
74
- depthWrite: false,
74
+ depthWrite: true,
75
75
  depthTest: true,
76
76
  blending: NormalBlending,
77
77
  // 明确混合模式
@@ -1 +1 @@
1
- {"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","bind","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf","result","NewTarget","Reflect","construct","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","sham","Proxy","Boolean","valueOf","_defineProperty","obj","_toPrimitive","String","toPrimitive","Number","Clock","Color","Mesh","NormalBlending","PlaneGeometry","ShaderMaterial","use","CircleShader","ParticleMesh","SingleCircleMesh","_ParticleMesh","_super","_this","option","_option$radius","radius","_option$color","color","_radius","_color","init","get","set","newValue","_material","uniforms","_init","_callee","_this2","defaultUniforms","vertexShader","fragmentShader","clock","_callee$","_context","structuredClone","side","transparent","depthWrite","depthTest","blending","polygonOffset","polygonOffsetFactor","_mesh","rotation","x","Math","PI","add","useframe","iTime","getDelta"],"sources":["../../../../src/business/Poi/particle/SingleCircle.ts"],"sourcesContent":["import type { Material } from '@anov/3d-core'\nimport { Clock, Color, Mesh, NormalBlending, PlaneGeometry, ShaderMaterial, use } from '@anov/3d-core'\nimport type { ParticleOption } from '../types'\nimport CircleShader from '../shader/circle'\nimport ParticleMesh from '.'\n\nclass SingleCircleMesh extends ParticleMesh {\n private _material: ShaderMaterial\n private _radius: number\n private _color: string\n\n public get radius(): number {\n return this._radius\n }\n\n public get color(): string {\n return this._color\n }\n\n public set color(newValue: string) {\n if (this._color === newValue)\n return\n this._color = newValue\n this._material.uniforms.color.value = new Color(this._color)\n }\n\n constructor(option: ParticleOption = {}) {\n super()\n const { radius = 0.25, color = '0xFFFFFF' } = option\n this._radius = radius\n this._color = color\n this.init()\n }\n\n private async init() {\n const { uniforms: defaultUniforms, vertexShader, fragmentShader } = CircleShader\n const uniforms = structuredClone(defaultUniforms)\n uniforms.color.value = new Color(this.color)\n this._material = new ShaderMaterial({\n uniforms,\n vertexShader,\n fragmentShader,\n side: 2,\n transparent: true,\n depthWrite: false,\n depthTest: true,\n blending: NormalBlending, // 明确混合模式\n polygonOffset: false, // 解决深度冲突\n polygonOffsetFactor: -1,\n })\n\n this._mesh = new Mesh(new PlaneGeometry(this.radius * 2, this.radius * 2), this._material)\n this._mesh.rotation.x = Math.PI / 2\n\n this.add(this._mesh)\n\n const clock = new Clock()\n use.useframe(() => {\n this._material.uniforms.iTime.value += 0.8 * clock.getDelta()\n })\n }\n}\n\nexport default SingleCircleMesh"],"mappings":"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"}
1
+ {"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","bind","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf","result","NewTarget","Reflect","construct","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","sham","Proxy","Boolean","valueOf","_defineProperty","obj","_toPrimitive","String","toPrimitive","Number","Clock","Color","Mesh","NormalBlending","PlaneGeometry","ShaderMaterial","use","CircleShader","ParticleMesh","SingleCircleMesh","_ParticleMesh","_super","_this","option","_option$radius","radius","_option$color","color","_radius","_color","init","get","set","newValue","_material","uniforms","_init","_callee","_this2","defaultUniforms","vertexShader","fragmentShader","clock","_callee$","_context","structuredClone","side","transparent","depthWrite","depthTest","blending","polygonOffset","polygonOffsetFactor","_mesh","rotation","x","Math","PI","add","useframe","iTime","getDelta"],"sources":["../../../../src/business/Poi/particle/SingleCircle.ts"],"sourcesContent":["import type { Material } from '@anov/3d-core'\nimport { Clock, Color, Mesh, NormalBlending, PlaneGeometry, ShaderMaterial, use } from '@anov/3d-core'\nimport type { ParticleOption } from '../types'\nimport CircleShader from '../shader/circle'\nimport ParticleMesh from '.'\n\nclass SingleCircleMesh extends ParticleMesh {\n private _material: ShaderMaterial\n private _radius: number\n private _color: string\n\n public get radius(): number {\n return this._radius\n }\n\n public get color(): string {\n return this._color\n }\n\n public set color(newValue: string) {\n if (this._color === newValue)\n return\n this._color = newValue\n this._material.uniforms.color.value = new Color(this._color)\n }\n\n constructor(option: ParticleOption = {}) {\n super()\n const { radius = 0.25, color = '0xFFFFFF' } = option\n this._radius = radius\n this._color = color\n this.init()\n }\n\n private async init() {\n const { uniforms: defaultUniforms, vertexShader, fragmentShader } = CircleShader\n const uniforms = structuredClone(defaultUniforms)\n uniforms.color.value = new Color(this.color)\n this._material = new ShaderMaterial({\n uniforms,\n vertexShader,\n fragmentShader,\n side: 2,\n transparent: true,\n depthWrite: true,\n depthTest: true,\n blending: NormalBlending, // 明确混合模式\n polygonOffset: false, // 解决深度冲突\n polygonOffsetFactor: -1,\n })\n\n this._mesh = new Mesh(new PlaneGeometry(this.radius * 2, this.radius * 2), this._material)\n this._mesh.rotation.x = Math.PI / 2\n\n this.add(this._mesh)\n\n const clock = new Clock()\n use.useframe(() => {\n this._material.uniforms.iTime.value += 0.8 * clock.getDelta()\n })\n }\n}\n\nexport default SingleCircleMesh"],"mappings":"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"}
@@ -9,7 +9,7 @@ export default class ParticleMesh extends ObjectLayer {
9
9
  _listeners: Set<unknown>;
10
10
  constructor();
11
11
  get ready(): Promise<boolean>;
12
- get mesh(): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[]> | Group;
12
+ get mesh(): Group | Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[]>;
13
13
  setupAnimation(): void;
14
14
  addReloadListener(callback: any): void;
15
15
  removeReloadListener(callback: any): void;
@@ -0,0 +1,14 @@
1
+ import { Color } from '@anov/3d-core';
2
+ declare const CircleShader: {
3
+ uniforms: {
4
+ iTime: {
5
+ value: number;
6
+ };
7
+ color: {
8
+ value: Color;
9
+ };
10
+ };
11
+ vertexShader: string;
12
+ fragmentShader: string;
13
+ };
14
+ export default CircleShader;
@@ -0,0 +1,15 @@
1
+ import { Color } from '@anov/3d-core';
2
+ var CircleShader = {
3
+ uniforms: {
4
+ iTime: {
5
+ value: 0.0
6
+ },
7
+ color: {
8
+ value: new Color(1.0, 1.0, 1.0)
9
+ } // 添加颜色uniform,默认白色
10
+ },
11
+ vertexShader: "\n varying vec2 vUv;\n #include <common>\n #include <logdepthbuf_pars_vertex>\n void main()\n {\n #include <begin_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n vUv = uv;\n // vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix * mvPosition;\n \n }\n ",
12
+ fragmentShader: "\n varying vec2 vUv;\n uniform float iTime;\n uniform vec3 color;\n #include <common>\n #include <logdepthbuf_pars_fragment>\n\n // vec3 color=vec3(1.,0.6,0.2);\n\n void main() {\n #include <logdepthbuf_fragment>\n //*sin(mod(iTime,100.)); //*fract(mod(iTime,100.))\n float progress=fract(mod(iTime,100.))*0.1+0.4;\n \n float center1=step(distance(vUv,vec2(0.5,0.5)),0.06);\n gl_FragColor=vec4(vec3(1.),center1);\n\n float circleOutMax=step(distance(vUv,vec2(0.5,0.5)),0.5); \n float circleOut=step(distance(vUv,vec2(0.5,0.5)),0.25); \n float circleIn=step(distance(vUv,vec2(0.5,0.5)),0.25-0.006); \n gl_FragColor+=vec4(vec3(1.),circleOut-circleIn)*vec4(color,0.8);\n\n float circleGradientMax=1.-smoothstep(0.24,0.28,distance(vUv,vec2(0.5,0.5))); \n float circleGradient=pow(distance(vUv/.2/2.,vec2(0.5,0.5)/.2/2.),4.1)*4.; \n gl_FragColor += vec4(vec3(1.),circleGradient*circleGradientMax)*vec4(color,0.8);\n \n float circle2GradientMax=step(distance(vUv,vec2(0.5,0.5)),progress-0.15); \n float circle2Gradient=pow(distance(vUv/(progress-0.15)/2.,vec2(0.5,0.5)/(progress-0.1)/2.),1.)*0.3; \n gl_FragColor += vec4(vec3(1.),circle2Gradient*circle2GradientMax)*vec4(color*vec3(1.,0.8,1.),0.4); \n }\n "
13
+ };
14
+ export default CircleShader;
15
+ //# sourceMappingURL=circle copy 2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Color","CircleShader","uniforms","iTime","value","color","vertexShader","fragmentShader"],"sources":["../../../../src/business/Poi/shader/circle copy 2.ts"],"sourcesContent":["import { Color } from '@anov/3d-core'\n\nconst CircleShader = {\n uniforms: {\n iTime: { value: 0.0 },\n color: { value: new Color(1.0, 1.0, 1.0) }, // 添加颜色uniform,默认白色\n },\n vertexShader: `\n varying vec2 vUv;\n #include <common>\n #include <logdepthbuf_pars_vertex>\n void main()\n {\n #include <begin_vertex>\n #include <project_vertex>\n #include <logdepthbuf_vertex>\n vUv = uv;\n // vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix * mvPosition;\n \n }\n `,\n fragmentShader: `\n varying vec2 vUv;\n uniform float iTime;\n uniform vec3 color;\n #include <common>\n #include <logdepthbuf_pars_fragment>\n\n // vec3 color=vec3(1.,0.6,0.2);\n\n void main() {\n #include <logdepthbuf_fragment>\n //*sin(mod(iTime,100.)); //*fract(mod(iTime,100.))\n float progress=fract(mod(iTime,100.))*0.1+0.4;\n \n float center1=step(distance(vUv,vec2(0.5,0.5)),0.06);\n gl_FragColor=vec4(vec3(1.),center1);\n\n float circleOutMax=step(distance(vUv,vec2(0.5,0.5)),0.5); \n float circleOut=step(distance(vUv,vec2(0.5,0.5)),0.25); \n float circleIn=step(distance(vUv,vec2(0.5,0.5)),0.25-0.006); \n gl_FragColor+=vec4(vec3(1.),circleOut-circleIn)*vec4(color,0.8);\n\n float circleGradientMax=1.-smoothstep(0.24,0.28,distance(vUv,vec2(0.5,0.5))); \n float circleGradient=pow(distance(vUv/.2/2.,vec2(0.5,0.5)/.2/2.),4.1)*4.; \n gl_FragColor += vec4(vec3(1.),circleGradient*circleGradientMax)*vec4(color,0.8);\n \n float circle2GradientMax=step(distance(vUv,vec2(0.5,0.5)),progress-0.15); \n float circle2Gradient=pow(distance(vUv/(progress-0.15)/2.,vec2(0.5,0.5)/(progress-0.1)/2.),1.)*0.3; \n gl_FragColor += vec4(vec3(1.),circle2Gradient*circle2GradientMax)*vec4(color*vec3(1.,0.8,1.),0.4); \n }\n `,\n}\n\nexport default CircleShader"],"mappings":"AAAA,SAASA,KAAK,QAAQ,eAAe;AAErC,IAAMC,YAAY,GAAG;EACnBC,QAAQ,EAAE;IACRC,KAAK,EAAE;MAAEC,KAAK,EAAE;IAAI,CAAC;IACrBC,KAAK,EAAE;MAAED,KAAK,EAAE,IAAIJ,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;IAAE,CAAC,CAAE;EAC9C,CAAC;EACDM,YAAY,2UAcX;EACDC,cAAc;AA+BhB,CAAC;AAED,eAAeN,YAAY"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d-ability",
3
- "version": "0.0.95",
3
+ "version": "0.0.98",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",