@anov/3d 0.0.20 → 0.0.23

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.
@@ -8,10 +8,13 @@ declare class CameraPoi {
8
8
  headMap: HeadMap;
9
9
  dialogManage: Dialog;
10
10
  eventListener: Set<Function>;
11
+ startPosition: Vector3;
12
+ cameraLookAt: Vector3;
11
13
  constructor(gobal: Factory3D);
12
14
  generateObject(): Promise<void>;
13
15
  cameraEvent(sprite: Group, region: any): void;
14
16
  probeEvent(sprite: SpritePoi, region: any): void;
17
+ closeHotmap(): void;
15
18
  togglePoi(visible?: boolean): void;
16
19
  remove(): void;
17
20
  }
@@ -51,7 +54,7 @@ declare class HeadMap {
51
54
  heatMapPlane: Mesh;
52
55
  canvasList: any[];
53
56
  constructor();
54
- create(): Mesh;
57
+ create(distance: any): Mesh;
55
58
  addEventListener(eventName: any, fn: any): void;
56
59
  addBack(): void;
57
60
  createDom(): HTMLCanvasElement;
@@ -8,14 +8,18 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
8
8
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
9
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
10
10
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
11
- import { AdditiveBlending, Box3, CircleGeometry, Color, DoubleSide, Group, MathUtils, Matrix4, Mesh, MeshBasicMaterial, ModelLoader, PerspectiveCamera, PlaneGeometry, ShaderMaterial, Sprite, SpriteMaterial, Texture, TextureLoader, Vector3, use } from '@anov/3d-core';
11
+ import { AdditiveBlending, Box3, CircleGeometry, Color, DoubleSide, Group, MathUtils, Matrix4, Mesh, MeshBasicMaterial, ModelLoader, PerspectiveCamera, PlaneGeometry, ShaderMaterial, Sprite, SpriteMaterial, Texture, TextureLoader, Vector3, use, utils } from '@anov/3d-core';
12
12
  import { Css2DPoi, SpritePoi } from '@anov/3d-ability';
13
+ import heatMap from 'anov-heat-map';
14
+ import { MessageType, sendToMessage } from "../../utils/messageFn";
15
+ import { EMessageStatus } from "../../messageStatus";
13
16
 
14
17
  // @ts-ignore
15
- import heatMap from 'anov-heat-map';
18
+
16
19
  // @ts-ignore
17
20
  import { regionMap } from "../regionData";
18
21
  import { usePath } from "../3d";
22
+ var emitter = utils.emitter;
19
23
  var load = new ModelLoader();
20
24
  var CameraPoi = /*#__PURE__*/function () {
21
25
  function CameraPoi(gobal) {
@@ -26,6 +30,8 @@ var CameraPoi = /*#__PURE__*/function () {
26
30
  _defineProperty(this, "headMap", void 0);
27
31
  _defineProperty(this, "dialogManage", void 0);
28
32
  _defineProperty(this, "eventListener", new Set());
33
+ _defineProperty(this, "startPosition", void 0);
34
+ _defineProperty(this, "cameraLookAt", void 0);
29
35
  this.gobal = gobal;
30
36
  this.dialogManage = new Dialog(this);
31
37
  this.dialogManage.addStyle();
@@ -144,6 +150,9 @@ var CameraPoi = /*#__PURE__*/function () {
144
150
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
145
151
  while (1) switch (_context3.prev = _context3.next) {
146
152
  case 0:
153
+ sendToMessage(MessageType.Event, 'onCameraStatus', EMessageStatus.Success, undefined, {
154
+ id: region.camera.id
155
+ });
147
156
  position = new Vector3().fromArray(region.camera.position);
148
157
  targetPosition = position.clone().toArray();
149
158
  camaraPosition = position.clone().add(new Vector3(0, 40, 80)).toArray();
@@ -154,9 +163,9 @@ var CameraPoi = /*#__PURE__*/function () {
154
163
  position: camaraPosition,
155
164
  target: targetPosition
156
165
  });
157
- _context3.next = 9;
166
+ _context3.next = 10;
158
167
  return _this2.dialogManage.getMesh(position, position.clone().add(new Vector3(0, -15, 5)));
159
- case 9:
168
+ case 10:
160
169
  dialogMesh = _context3.sent;
161
170
  _this2.dialogManage.addEventListener('close', function () {
162
171
  // 初始相机到原始位置
@@ -164,9 +173,12 @@ var CameraPoi = /*#__PURE__*/function () {
164
173
  position: startPosition.toArray(),
165
174
  target: cameraLookAt.toArray()
166
175
  });
176
+ sendToMessage(MessageType.Event, 'onCancelCameraStatus', EMessageStatus.Success, undefined, {
177
+ id: region.camera.id
178
+ });
167
179
  });
168
180
  _this2.gobal.scene.add(dialogMesh);
169
- case 12:
181
+ case 13:
170
182
  case "end":
171
183
  return _context3.stop();
172
184
  }
@@ -181,7 +193,7 @@ var CameraPoi = /*#__PURE__*/function () {
181
193
  var _use$useScene2 = use.useScene(),
182
194
  camera = _use$useScene2.camera;
183
195
  sprite.addEventListener('click', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
184
- var position, targetPosition, camaraPosition, startPosition, cameraLookAt, mesh;
196
+ var position, camaraPosition;
185
197
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
186
198
  while (1) switch (_context4.prev = _context4.next) {
187
199
  case 0:
@@ -192,37 +204,54 @@ var CameraPoi = /*#__PURE__*/function () {
192
204
  return _context4.abrupt("return");
193
205
  case 2:
194
206
  sprite.visible = false;
207
+ sendToMessage(MessageType.Event, 'onGasMonitorStatus', EMessageStatus.Success, undefined, {
208
+ id: region.probePoint[0].id
209
+ });
195
210
  _this3.togglePoi(false);
196
211
  position = new Vector3().fromArray(region.probePoint[0].position);
197
- targetPosition = position.clone().toArray();
198
- camaraPosition = position.clone().add(new Vector3(0, 30, 0)).toArray();
199
- startPosition = camera.position.clone(); // 获取相机朝向
200
- cameraLookAt = new Vector3(); // 创建一个向量来存储相机朝向
201
- camera.getWorldDirection(cameraLookAt); // 获取相机朝向并存储在向量中
212
+ camaraPosition = position.clone().add(new Vector3(0, 30, 0));
213
+ _this3.startPosition = camera.position.clone();
214
+ // 获取相机朝向
215
+ _this3.cameraLookAt = new Vector3(); // 创建一个向量来存储相机朝向
216
+ camera.getWorldDirection(_this3.cameraLookAt); // 获取相机朝向并存储在向量中
202
217
  _this3.gobal.cameraUtil.set({
203
- position: camaraPosition,
204
- target: targetPosition
205
- });
206
- _this3.headMap = new HeadMap();
207
- mesh = _this3.headMap.create();
208
- mesh.position.copy(sprite.position);
209
- mesh.position.y = 0.5;
210
- _this3.gobal.scene.add(mesh);
211
- _this3.headMap.addBack();
212
- _this3.headMap.addEventListener('close', function () {
213
- _this3.togglePoi(true);
214
- _this3.gobal.cameraUtil.set({
215
- position: startPosition.toArray(),
216
- target: cameraLookAt.toArray()
218
+ position: camaraPosition.toArray(),
219
+ target: position.clone().toArray()
220
+ }).then(function () {
221
+ _this3.headMap = new HeadMap();
222
+ var mesh = _this3.headMap.create(camaraPosition.distanceTo(position));
223
+ mesh.position.copy(sprite.position);
224
+ mesh.position.y = 0.5;
225
+ _this3.gobal.scene.add(mesh);
226
+
227
+ // this.headMap.addBack()
228
+ _this3.headMap.addEventListener('close', function () {
229
+ _this3.closeHotmap();
230
+ // this.togglePoi(true)
231
+
232
+ // this.gobal.cameraUtil.set({
233
+ // position: this.startPosition.toArray(),
234
+ // target: this.cameraLookAt.toArray(),
235
+ // })
217
236
  });
218
237
  });
219
- case 18:
238
+ case 11:
220
239
  case "end":
221
240
  return _context4.stop();
222
241
  }
223
242
  }, _callee4);
224
243
  })));
225
244
  }
245
+ }, {
246
+ key: "closeHotmap",
247
+ value: function closeHotmap() {
248
+ this.headMap.remove();
249
+ this.togglePoi(true);
250
+ this.gobal.cameraUtil.set({
251
+ position: this.startPosition.toArray(),
252
+ target: this.cameraLookAt.toArray()
253
+ });
254
+ }
226
255
  }, {
227
256
  key: "togglePoi",
228
257
  value: function togglePoi() {
@@ -348,6 +377,7 @@ var Dialog = /*#__PURE__*/function () {
348
377
  depthWrite: false
349
378
  }));
350
379
  this.cuteSprite.center.set(0.5, 0.5);
380
+ this.cuteSprite.renderOrder = 5;
351
381
  this.cuteSprite.position.copy(position);
352
382
  unFrame = use.useframe(function () {
353
383
  _this4.updateScale(_this4.cuteSprite);
@@ -363,7 +393,7 @@ var Dialog = /*#__PURE__*/function () {
363
393
  reslove(group);
364
394
  }, 1000);
365
395
  }));
366
- case 11:
396
+ case 12:
367
397
  case "end":
368
398
  return _context5.stop();
369
399
  }
@@ -450,7 +480,6 @@ var Dialog = /*#__PURE__*/function () {
450
480
  var clampedDistance = Math.max(minDistance, Math.min(maxDistance, distance));
451
481
  // console.log('clampedDistance:',clampedDistance)
452
482
  // 按照缩放系数和距离进行缩放,缩放系数应该约定好一个固定值
453
-
454
483
  sprite.scale.copy(new Vector3(clampedDistance * 1.5, 1.05 * clampedDistance, 1));
455
484
  }
456
485
  }, {
@@ -471,19 +500,20 @@ var Dialog = /*#__PURE__*/function () {
471
500
  width += 5;
472
501
  height += 5;
473
502
  Object.assign(dialogDiv.style, {
474
- width: "".concat(width, "px"),
475
- height: "".concat(height, "px"),
476
- zIndex: 2,
477
- backgroundImage: "url(".concat(usePath, "p4/border.png)"),
478
- backgroundSize: '100% 100%',
479
- backgroundRepeat: 'no-repeat',
480
- position: 'releate'
503
+ 'width': "".concat(width, "px"),
504
+ 'height': "".concat(height, "px"),
505
+ 'z-index': '3 !important',
506
+ 'backgroundImage': "url(".concat(usePath, "p4/border.png)"),
507
+ 'backgroundSize': '100% 100%',
508
+ 'backgroundRepeat': 'no-repeat',
509
+ 'position': 'relative'
510
+
481
511
  // left: `${(window.innerWidth - width) / 2}px`,
482
512
  // top: `${(window.innerHeight - height) / 2}px`,
483
513
  });
484
514
 
485
515
  var maskingDiv = document.createElement('div');
486
- maskingDiv.className = 'dialog-masking';
516
+ maskingDiv.className = 'dialog-mask';
487
517
  dialogDiv.appendChild(maskingDiv);
488
518
 
489
519
  // 关闭按钮
@@ -573,7 +603,7 @@ var Dialog = /*#__PURE__*/function () {
573
603
  key: "addStyle",
574
604
  value: function addStyle() {
575
605
  // 设置 CSS 规则
576
- var css = "\n .dialog-masking{\n position: absolute;\n top: 8px;\n left: 6px;\n width: calc(100% - 12px);\n height: calc(100% - 16px);\n background: linear-gradient(90deg, rgba(0, 0, 0,.4) 0%,rgba(0, 0, 0,.2) 10%, rgba(0, 0, 0,0) 20%, rgba(0,0,0, 0) 50%, rgba(0, 0, 0,0) 80%, rgba(0, 0, 0,0.2) 90%, rgba(0, 0, 0,.4) 100%);\n pointer-events: auto;\n opacity: 1;\n transform: perspective(100px) rotateX(0deg) rotateY(0deg) rotateZ(0deg);\n transform-origin: center center;\n }\n .hot-back{\n width: 70px;\n height: 25px;\n border-radius: 2px;\n color: #fff;\n font-weight: bold;\n font-size: 14px;\n border:1px solid #d1ae6d;\n background-color: #c8ab75;\n cursor: pointer; /* \u9F20\u6807\u6307\u9488\u6837\u5F0F */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n left: 30px;\n top: 30px;\n pointer-events: auto;\n }\n .hot-back:hover{\n background-color:#c8a158;\n }\n .dialog-close{\n width: 20px;\n height: 20px;\n border-radius: 2px;\n color: #fff;\n background-color: #c8ab75;\n cursor: pointer; /* \u9F20\u6807\u6307\u9488\u6837\u5F0F */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n right: 20px;\n top: 15px;\n pointer-events: auto;\n }\n\n .dialog-close:hover{\n background-color:#c8a158;\n }\n\n .dialog-close-line{\n width: 14px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n top: 9px;\n display: block;\n }\n\n .dialog-close-h-line{\n transform: rotate(-45deg);\n }\n\n .dialog-close-v-line{\n transform: rotate(45deg);\n }\n\n .dialog-operate{\n width: 120px;\n height: 120px;\n background-image: url(".concat(usePath, "p4/operate.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n position: absolute;\n right: 15px;\n bottom: 10px;\n pointer-events: auto;\n }\n\n .dialog-operate-btn{\n width: 0;\n height: 0;\n position: absolute;\n cursor: pointer;\n pointer-events: auto;\n }\n\n .dialog-operate-top{\n border-left: 8px solid transparent; /* \u5DE6\u8FB9\u900F\u660E */\n border-right: 8px solid transparent; /* \u53F3\u8FB9\u900F\u660E */\n border-bottom: 8px solid #f2c67d; /* \u5E95\u8FB9\u5B9E\u5FC3 */\n left: calc(50% - 9px);\n top: 20px;\n }\n .dialog-operate-top:hover{\n border-bottom-color:#fff2dd;\n }\n\n .dialog-operate-bottom{\n border-left: 8px solid transparent; /* \u5DE6\u8FB9\u900F\u660E */\n border-right: 8px solid transparent; /* \u53F3\u8FB9\u900F\u660E */\n border-top: 8px solid #f2c67d; /* \u5E95\u8FB9\u5B9E\u5FC3 */\n left: calc(50% - 9px);\n bottom: 20px;\n }\n\n .dialog-operate-bottom:hover{\n border-top-color:#fff2dd;\n }\n\n .dialog-operate-left{\n border-top: 8px solid transparent; /* \u5DE6\u8FB9\u900F\u660E */\n border-bottom: 8px solid transparent; /* \u53F3\u8FB9\u900F\u660E */\n border-right: 8px solid #f2c67d; /* \u5E95\u8FB9\u5B9E\u5FC3 */\n top: calc(50% - 9px);\n left: 20px;\n }\n .dialog-operate-left:hover{\n border-right-color:#fff2dd;\n }\n\n .dialog-operate-right{\n border-top: 8px solid transparent; /* \u5DE6\u8FB9\u900F\u660E */\n border-bottom: 8px solid transparent; /* \u53F3\u8FB9\u900F\u660E */\n border-left: 8px solid #f2c67d; /* \u5E95\u8FB9\u5B9E\u5FC3 */\n top: calc(50% - 9px);\n right: 20px;\n }\n\n .dialog-operate-right:hover{\n border-left-color:#fff2dd;\n }\n \n .dialog-slider-container {\n width: 13px;\n height: 300px;\n background: url(").concat(usePath, "p4/slider.png);\n background-size: 100% 100%;\n position:absolute;\n right:23px;\n top:50px;\n }\n\n .dialog-slider {\n -webkit-appearance: none;\n width: 300px;\n height: 13px;\n background: transparent;\n outline: none;\n opacity: 0.7;\n -webkit-transition: .2s;\n transition: opacity .2s;\n transform: rotate(-90deg);\n margin-left: -144px;\n margin-top: 144px;\n pointer-events: auto;\n }\n\n .dialog-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 7px;\n height: 20px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n\n .dialog-slider::-moz-range-thumb {\n width: 7px;\n height: 20px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n");
606
+ var css = "\n .page-mask{\n position: fixed;\n top: 0;\n left: 0;\n bottom:0;\n right:0;\n //width: 100%;\n //height: 100%;\n background-color: rgba(0, 0, 0, 0.5); /* \u534A\u900F\u660E\u80CC\u666F */\n //filter: blur(10px); /* \u6A21\u7CCA\u6548\u679C */\n z-index: 1 !important; /* \u786E\u4FDD\u8499\u7248\u4F4D\u4E8E\u5176\u4ED6\u5143\u7D20\u4E4B\u4E0A */\n }\n .dialog-mask{\n position: absolute;\n top: 8px;\n left: 6px;\n width: calc(100% - 12px);\n height: calc(100% - 16px);\n background: linear-gradient(90deg, rgba(0, 0, 0,.4) 0%,rgba(0, 0, 0,.2) 10%, rgba(0, 0, 0,0) 20%, rgba(0,0,0, 0) 50%, rgba(0, 0, 0,0) 80%, rgba(0, 0, 0,0.2) 90%, rgba(0, 0, 0,.4) 100%);\n pointer-events: auto;\n opacity: 1;\n transform: perspective(100px) rotateX(0deg) rotateY(0deg) rotateZ(0deg);\n transform-origin: center center;\n }\n .hot-back{\n width: 70px;\n height: 25px;\n border-radius: 2px;\n color: #fff;\n font-weight: bold;\n font-size: 14px;\n border:1px solid #d1ae6d;\n background-color: #c8ab75;\n cursor: pointer; /* \u9F20\u6807\u6307\u9488\u6837\u5F0F */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n left: 30px;\n top: 30px;\n pointer-events: auto;\n }\n .hot-back:hover{\n background-color:#c8a158;\n }\n .dialog-close{\n width: 20px;\n height: 20px;\n border-radius: 2px;\n color: #fff;\n background-color: #c8ab75;\n cursor: pointer; /* \u9F20\u6807\u6307\u9488\u6837\u5F0F */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n right: 20px;\n top: 15px;\n pointer-events: auto;\n }\n\n .dialog-close:hover{\n background-color:#c8a158;\n }\n\n .dialog-close-line{\n width: 14px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n top: 9px;\n display: block;\n }\n\n .dialog-close-h-line{\n transform: rotate(-45deg);\n }\n\n .dialog-close-v-line{\n transform: rotate(45deg);\n }\n\n .dialog-operate{\n width: 120px;\n height: 120px;\n background-image: url(".concat(usePath, "p4/operate.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n position: absolute;\n right: 15px;\n bottom: 10px;\n pointer-events: auto;\n }\n\n .dialog-operate-btn{\n width: 0;\n height: 0;\n position: absolute;\n cursor: pointer;\n pointer-events: auto;\n }\n\n .dialog-operate-top{\n border-left: 8px solid transparent; /* \u5DE6\u8FB9\u900F\u660E */\n border-right: 8px solid transparent; /* \u53F3\u8FB9\u900F\u660E */\n border-bottom: 8px solid #f2c67d; /* \u5E95\u8FB9\u5B9E\u5FC3 */\n left: calc(50% - 9px);\n top: 20px;\n }\n .dialog-operate-top:hover{\n border-bottom-color:#fff2dd;\n }\n\n .dialog-operate-bottom{\n border-left: 8px solid transparent; /* \u5DE6\u8FB9\u900F\u660E */\n border-right: 8px solid transparent; /* \u53F3\u8FB9\u900F\u660E */\n border-top: 8px solid #f2c67d; /* \u5E95\u8FB9\u5B9E\u5FC3 */\n left: calc(50% - 9px);\n bottom: 20px;\n }\n\n .dialog-operate-bottom:hover{\n border-top-color:#fff2dd;\n }\n\n .dialog-operate-left{\n border-top: 8px solid transparent; /* \u5DE6\u8FB9\u900F\u660E */\n border-bottom: 8px solid transparent; /* \u53F3\u8FB9\u900F\u660E */\n border-right: 8px solid #f2c67d; /* \u5E95\u8FB9\u5B9E\u5FC3 */\n top: calc(50% - 9px);\n left: 20px;\n }\n .dialog-operate-left:hover{\n border-right-color:#fff2dd;\n }\n\n .dialog-operate-right{\n border-top: 8px solid transparent; /* \u5DE6\u8FB9\u900F\u660E */\n border-bottom: 8px solid transparent; /* \u53F3\u8FB9\u900F\u660E */\n border-left: 8px solid #f2c67d; /* \u5E95\u8FB9\u5B9E\u5FC3 */\n top: calc(50% - 9px);\n right: 20px;\n }\n\n .dialog-operate-right:hover{\n border-left-color:#fff2dd;\n }\n \n .dialog-slider-container {\n width: 13px;\n height: 300px;\n background: url(").concat(usePath, "p4/slider.png);\n background-size: 100% 100%;\n position:absolute;\n right:23px;\n top:50px;\n }\n\n .dialog-slider {\n -webkit-appearance: none;\n width: 300px;\n height: 13px;\n background: transparent;\n outline: none;\n opacity: 0.7;\n -webkit-transition: .2s;\n transition: opacity .2s;\n transform: rotate(-90deg);\n margin-left: -144px;\n margin-top: 144px;\n pointer-events: auto;\n }\n\n .dialog-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 7px;\n height: 20px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n\n .dialog-slider::-moz-range-thumb {\n width: 7px;\n height: 20px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n");
577
607
  // 创建一个 <style> 元素
578
608
  var styleElement = document.createElement('style');
579
609
  styleElement.appendChild(document.createTextNode(css));
@@ -621,14 +651,14 @@ var HeadMap = /*#__PURE__*/function () {
621
651
  // 热力图
622
652
  _createClass(HeadMap, [{
623
653
  key: "create",
624
- value: function create() {
654
+ value: function create(distance) {
625
655
  var heatmap = heatMap.create({
626
656
  container: this.createDom(),
627
657
  gradient: this.TemperatureColorStops
628
658
  });
629
659
  var len = 1200;
630
- var width = 2000;
631
- var height = 1000;
660
+ var width = window.innerWidth;
661
+ var height = window.innerHeight;
632
662
  var points = [];
633
663
  var max = 0;
634
664
  while (len--) {
@@ -693,11 +723,14 @@ var HeadMap = /*#__PURE__*/function () {
693
723
  greyTexture.needsUpdate = true;
694
724
  heatMapMaterial.uniforms.heatMap.value = texture;
695
725
  heatMapMaterial.uniforms.greyMap.value = greyTexture;
696
- var heatMapGeometry = new PlaneGeometry(200, 100, 100, 100); // 3d热力图大小,及分块数量
726
+ var _use$useScene5 = use.useScene(),
727
+ camera = _use$useScene5.camera;
728
+ // 计算平面的尺寸
729
+ var h = 2 * Math.tan(camera.fov * Math.PI / 360) * distance * 2 * 0.85;
730
+ var w = h * camera.aspect;
731
+ var heatMapGeometry = new PlaneGeometry(w, h, 100, 100); // 3d热力图大小,及分块数量
697
732
  var heatMapPlane = new Mesh(heatMapGeometry, heatMapMaterial);
698
733
  heatMapPlane.rotation.set(-Math.PI / 2, 0, 0);
699
- // heatMapPlane.position.set(0, 0, 0) // 3d热力图中心点位置
700
-
701
734
  this.heatMapPlane = heatMapPlane;
702
735
  return heatMapPlane;
703
736
  }
@@ -716,7 +749,7 @@ var HeadMap = /*#__PURE__*/function () {
716
749
  document.body.appendChild(this.backEle);
717
750
  this.backEle.addEventListener('click', function () {
718
751
  _this6.eventList.has('close') && _this6.eventList.get('close')();
719
- _this6.remove();
752
+ // this.remove()
720
753
  });
721
754
  }
722
755
  }, {
@@ -1 +1 @@
1
- {"version":3,"names":["AdditiveBlending","Box3","CircleGeometry","Color","DoubleSide","Group","MathUtils","Matrix4","Mesh","MeshBasicMaterial","ModelLoader","PerspectiveCamera","PlaneGeometry","ShaderMaterial","Sprite","SpriteMaterial","Texture","TextureLoader","Vector3","use","Css2DPoi","SpritePoi","heatMap","regionMap","usePath","load","CameraPoi","gobal","Map","Set","dialogManage","Dialog","addStyle","loadGLTF","gltf","model","Object","keys","forEach","key","region","group","name","camera","sprite","scale","rotation","y","Math","PI","position","fromArray","copy","add","scan","scene","clone","addScalar","x","cameraMesh","set","title","interactionManager","cameraEvent","point","MethanePoint","probePoint","item","mesh","warn","probeEvent","create","warnMesh","rotatingRight","unFrame","useframe","children","z","abs","eventListener","useScene","unClick","addEventListener","targetPosition","toArray","camaraPosition","startPosition","cameraLookAt","getWorldDirection","cameraUtil","target","getMesh","dialogMesh","visible","togglePoi","headMap","HeadMap","addBack","removeFromParent","remove","clear","fn","close","geometry","texture","circle","map","side","transparent","rotateX","material","vertexShader","fragmentShader","blending","depthTest","color","numPoints","i","random","cameraManage","manage","cameraPosition","window","innerWidth","innerHeight","getTarget","lookAt","setCustomPerspective","cuteSprite","depthWrite","center","updateScale","Promise","reslove","setTimeout","getBorderMesh","borderMesh","angleX","degToRad","angleY","angleZ","rotationMatrix","makeRotationX","multiply","makeRotationY","makeRotationZ","cameraDirection","targetDirection","applyMatrix4","devicePixelRatio","bbox","setFromObject","min","project","max","width","height","scaleFactors","scaleFactor","minDistance","maxDistance","objectPosition","distance","distanceTo","clampedDistance","eventName","eventList","has","getBoxSize","dialogDiv","document","createElement","assign","style","zIndex","backgroundImage","backgroundSize","backgroundRepeat","maskingDiv","className","appendChild","closeSpan","get","hLine","vLine","op","opList","btnSpan","sliderDiv","sliderBar","type","value","fov","updateProjectionMatrix","css","styleElement","createTextNode","head","heatmap","container","createDom","gradient","TemperatureColorStops","len","points","val","floor","push","setData","data","greymap","heatMapMaterial","uniforms","undefined","greyMap","Zscale","u_color","u_opacity","_renderer","canvas","needsUpdate","greyTexture","heatMapGeometry","heatMapPlane","backEle","innerHTML","body","canvasList","length"],"sources":["../../../src/factory/unit/CameraPoi.ts"],"sourcesContent":["import { AdditiveBlending, Box3, CircleGeometry, Color, DoubleSide, Group, MathUtils, Matrix4, Mesh, MeshBasicMaterial, ModelLoader, PerspectiveCamera, PlaneGeometry, ShaderMaterial, Sprite, SpriteMaterial, Texture, TextureLoader, Vector3, use } from '@anov/3d-core'\nimport { Css2DPoi, SpritePoi } from '@anov/3d-ability'\n\n// @ts-ignore\nimport heatMap from 'anov-heat-map'\nimport type Factory3D from '../3d'\n\n// @ts-ignore\nimport { regionMap } from '../regionData'\n\nimport { usePath } from '../3d'\n\nconst load = new ModelLoader()\nclass CameraPoi {\n gobal: Factory3D\n cameraMesh: Map<string, Group> = new Map()\n warnMesh: Map<string, SpritePoi> = new Map()\n headMap: HeadMap\n dialogManage: Dialog\n eventListener: Set<Function> = new Set()\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.dialogManage = new Dialog(this)\n this.dialogManage.addStyle()\n }\n\n async generateObject() {\n const model = await load.loadGLTF(`${usePath}shexiang.glb`, false, true, './draco/', (gltf) => {\n return gltf\n })\n\n Object.keys(regionMap).forEach(async (key: string) => {\n // 摄像机\n const region = regionMap[key]\n const group = new Group()\n group.name = region.camera.name\n const sprite = new SpritePoi(`${usePath}camera.png`, { scale: [10, 10, 1] })\n sprite.rotation.y = Math.PI\n const position = new Vector3().fromArray(region.camera.position)\n sprite.position.copy(position)\n group.add(sprite)\n\n const scan = model.scene.clone()\n scan.scale.addScalar(5)\n scan.rotation.x = (-Math.PI / 2) + 0.5\n scan.position.copy(position.clone().add(new Vector3(0, -2, 0)))\n group.add(scan)\n\n this.cameraMesh.set(region.title, group)\n this.gobal.interactionManager.add(group)\n this.cameraEvent(group, region)\n this.gobal.scene.add(group)\n\n // 甲烷检测点\n const point = new MethanePoint()\n region.probePoint?.forEach((item) => {\n let mesh\n if (item.warn) {\n mesh = new SpritePoi(`${usePath}p4/warn.png`, { scale: [10, 10, 1] })\n this.gobal.interactionManager.add(mesh)\n this.probeEvent(mesh, region)\n }\n else {\n mesh = point.create()\n }\n mesh.position.copy(new Vector3().fromArray(item.position))\n this.warnMesh.set(region.title, mesh)\n\n this.gobal.scene.add(mesh)\n })\n })\n // 设置左右旋转的标志位和旋转速度\n let rotatingRight = true // 是否正在向右转动\n\n const unFrame = use.useframe(() => {\n this.cameraMesh.forEach((group) => {\n const scan = group.children[1]\n // 更新相机的旋转角度\n if (rotatingRight) {\n // 向右旋转\n scan.rotation.z += 0.005\n }\n else {\n // 向左旋转\n scan.rotation.z -= 0.005\n }\n\n // 检查是否达到目标旋转角度\n if (Math.abs(scan.rotation.z) >= Math.abs(Math.PI / 4)) {\n // 到达目标角度,切换旋转方向并更新目标角度\n rotatingRight = !rotatingRight\n }\n })\n })\n this.eventListener.add(unFrame)\n }\n\n cameraEvent(sprite: Group, region: any) {\n const { camera } = use.useScene()\n const unClick = sprite.addEventListener('click', async () => {\n const position = new Vector3().fromArray(region.camera.position)\n const targetPosition: [number, number, number] = position.clone().toArray()\n const camaraPosition: [number, number, number] = position.clone().add(new Vector3(0, 40, 80)).toArray()\n\n const startPosition = camera.position.clone()\n // 获取相机朝向\n const cameraLookAt = new Vector3() // 创建一个向量来存储相机朝向\n camera.getWorldDirection(cameraLookAt) // 获取相机朝向并存储在向量中\n this.gobal.cameraUtil.set({\n position: camaraPosition,\n target: targetPosition,\n })\n\n const dialogMesh = await this.dialogManage.getMesh(position, position.clone().add(new Vector3(0, -15, 5)))\n this.dialogManage.addEventListener('close', () => {\n // 初始相机到原始位置\n this.gobal.cameraUtil.set({\n position: startPosition.toArray(),\n target: cameraLookAt.toArray(),\n })\n })\n this.gobal.scene.add(dialogMesh)\n })\n // this.eventListener.add(unClick)\n }\n\n probeEvent(sprite: SpritePoi, region) {\n const { camera } = use.useScene()\n sprite.addEventListener('click', async () => {\n if (!sprite.visible)\n return\n sprite.visible = false\n this.togglePoi(false)\n const position = new Vector3().fromArray(region.probePoint[0].position)\n const targetPosition: [number, number, number] = position.clone().toArray()\n const camaraPosition: [number, number, number] = position.clone().add(new Vector3(0, 30, 0)).toArray()\n\n const startPosition = camera.position.clone()\n // 获取相机朝向\n const cameraLookAt = new Vector3() // 创建一个向量来存储相机朝向\n camera.getWorldDirection(cameraLookAt) // 获取相机朝向并存储在向量中\n this.gobal.cameraUtil.set({\n position: camaraPosition,\n target: targetPosition,\n })\n\n this.headMap = new HeadMap()\n const mesh = this.headMap.create()\n mesh.position.copy(sprite.position)\n mesh.position.y = 0.5\n this.gobal.scene.add(mesh)\n\n this.headMap.addBack()\n this.headMap.addEventListener('close', () => {\n this.togglePoi(true)\n\n this.gobal.cameraUtil.set({\n position: startPosition.toArray(),\n target: cameraLookAt.toArray(),\n })\n })\n })\n }\n\n togglePoi(visible = true) {\n this.warnMesh.forEach((sprite) => {\n sprite.visible = visible\n })\n this.cameraMesh.forEach((sprite) => {\n sprite.visible = visible\n })\n }\n\n remove() {\n // 删除摄像机POI点\n this.cameraMesh.forEach((sprite) => {\n sprite.removeFromParent()\n sprite.remove()\n })\n this.cameraMesh.clear()\n this.warnMesh.forEach((sprite) => {\n sprite.removeFromParent()\n sprite.remove()\n })\n this.warnMesh.clear()\n this.eventListener.forEach((fn) => {\n fn()\n })\n // 热力图\n if (this.headMap)\n this.headMap.remove()\n this.eventListener.clear()\n\n this.dialogManage.close()\n }\n}\n\nexport default CameraPoi\n\nclass MethanePoint {\n constructor() {\n\n }\n\n create() {\n // 定义Shader的uniform变量\n\n const geometry = new PlaneGeometry(10, 10)\n const texture = new TextureLoader().load(`${usePath}p4/monitor.png`)\n const circle = new Mesh(geometry, new MeshBasicMaterial({\n map: texture,\n side: DoubleSide,\n transparent: true,\n }))\n circle.rotateX(-Math.PI / 3)\n return circle\n }\n\n // 随机多点的方案\n createBack() {\n // 定义Shader的uniform变量\n\n const group = new Group()\n const geometry = new CircleGeometry(2, 32)\n // 创建自定义着色器材质\n const material = new ShaderMaterial({\n vertexShader: `\n void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_PointSize = 20.0; // 设置点的大小\n }\n `,\n fragmentShader: `\n void main() {\n vec2 center = vec2(0.5, 0.5); // 圆心坐标\n vec2 toCenter = gl_PointCoord - center; // 计算点到圆心的向量\n float distance = length(toCenter); // 计算点到圆心的距离\n if (distance > 0.5) discard; // 超出半径范围的点直接丢弃\n vec3 innerColor = vec3(1.0, .8, 0.0); // 内圈颜色为黄色\n vec3 outerColor = vec3(0.8, 0.4, 0.0); // 外圈颜色为深橘色\n \n vec3 finalColor = mix(innerColor, outerColor, smoothstep(0.1, 0.23, distance)); // 根据距离混合颜色\n if(distance>0.3) finalColor = mix(finalColor, vec3(0.75, 0.4, 0.0), smoothstep(0.25, 0.3, distance)); // 根据距离混合颜色\n gl_FragColor = vec4(finalColor, 1.0); // 设置片段颜色\n }\n `,\n blending: AdditiveBlending,\n depthTest: false,\n transparent: true,\n side: DoubleSide,\n })\n const circle = new Mesh(geometry, new MeshBasicMaterial({ color: '#f7a157' }))\n const numPoints = 100 // 点的数量\n\n for (let i = 0; i < numPoints; i++) {\n const x = Math.random() * 700 - 322 // 随机生成 x 坐标\n const z = Math.random() * 340 - 144 // 随机生成 z 坐标\n const point = circle.clone()\n point.position.copy(new Vector3(x, 20.55, z))\n point.rotateX(-Math.PI / 2)\n group.add(point)\n }\n\n return group\n }\n}\n\nclass Dialog {\n manage: CameraPoi\n\n camera: PerspectiveCamera\n cameraPosition: Vector3\n cameraTargetPosition: Vector3\n\n borderMesh: Css2DPoi\n cuteSprite: Sprite\n eventListener: Set<Function> = new Set()\n eventList: Map<string, Function> = new Map()\n\n constructor(cameraManage) {\n this.manage = cameraManage\n }\n\n async getMesh(position, cameraPosition) {\n this.camera = new PerspectiveCamera(\n 90, window.innerWidth / window.innerHeight, 0.1, 100000000,\n )\n this.camera.position.copy(cameraPosition)\n const target = this.getTarget(cameraPosition)\n this.camera.lookAt(target)\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(this.camera)\n this.cuteSprite = new Sprite(new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false }))\n this.cuteSprite.center.set(0.5, 0.5)\n this.cuteSprite.position.copy(position)\n\n const unFrame = use.useframe(() => {\n this.updateScale(this.cuteSprite)\n })\n this.eventListener.add(unFrame)\n\n return new Promise((reslove) => {\n setTimeout(() => {\n this.getBorderMesh(this.camera, this.cuteSprite)\n const group = new Group()\n group.add(this.borderMesh)\n group.add(this.cuteSprite)\n close()\n reslove(group)\n }, 1000)\n })\n }\n\n getTarget(cameraPosition, rotation = [-30, 0, 0]) {\n // 将旋转角度转换为弧度\n const angleX = MathUtils.degToRad(rotation[0])\n const angleY = MathUtils.degToRad(rotation[1])\n const angleZ = MathUtils.degToRad(rotation[2])\n\n // 创建旋转矩阵\n const rotationMatrix = new Matrix4()\n rotationMatrix.makeRotationX(angleX)\n rotationMatrix.multiply(new Matrix4().makeRotationY(angleY))\n rotationMatrix.multiply(new Matrix4().makeRotationZ(angleZ))\n\n // 定义相机的方向向量(例如,相机的方向默认为(0, 0, -1))\n const cameraDirection = new Vector3(0, 0, 1)\n\n // 将相机的方向向量乘以旋转矩阵,得到相机目标位置的向量\n const targetDirection = cameraDirection.clone().applyMatrix4(rotationMatrix)\n\n // 计算相机的目标位置\n return cameraPosition.clone().add(targetDirection)\n }\n\n getBoxSize(sprite: Sprite) {\n const { camera } = use.useScene()\n\n // 获取设备像素比\n const devicePixelRatio = window.devicePixelRatio || 1\n // 获取精灵对象的边界框\n const bbox = new Box3().setFromObject(sprite)\n // 将边界框的最小和最大顶点转换为屏幕坐标\n const min = bbox.min.project(camera)\n const max = bbox.max.project(camera)\n\n // 计算精灵在屏幕中的宽度和高度像素值\n let width = (max.x - min.x) * window.innerWidth / devicePixelRatio * 0.9458\n let height = (max.y - min.y) * window.innerHeight / devicePixelRatio * 1.0617\n\n // 定义设备像素比和对应的缩放系数的映射关系\n const scaleFactors = {\n 1: 0.5,\n 1.5: 0.75,\n 2: 1,\n }\n const scaleFactor = scaleFactors[devicePixelRatio] || 1\n // 应用缩放系数\n width *= scaleFactor\n height *= scaleFactor\n\n return { width, height }\n }\n\n updateScale(sprite: Sprite) {\n const { camera } = use.useScene()\n // 距离限制范围的值,用于计算缩放比例\n const minDistance = 0.1\n const maxDistance = 1000000\n // 获取相机和物体的世界坐标位置\n const cameraPosition = camera?.position\n const objectPosition = sprite.position\n\n // 计算相机和物体之间的距离\n const distance = cameraPosition?.distanceTo(objectPosition) || 0.1\n\n // 使用 Math.min() 和 Math.max() 方法限制 resultDistance 的范围\n const clampedDistance = Math.max(minDistance, Math.min(maxDistance, distance))\n // console.log('clampedDistance:',clampedDistance)\n // 按照缩放系数和距离进行缩放,缩放系数应该约定好一个固定值\n\n sprite.scale.copy(new Vector3(clampedDistance * 1.5, 1.05 * clampedDistance, 1))\n }\n\n addEventListener(eventName, fn) {\n if (this.eventList.has(eventName))\n this.eventList[eventName] = fn\n else\n this.eventList.set(eventName, fn)\n }\n\n getBorderMesh(camera, sprite: Sprite) {\n let { width, height } = this.getBoxSize(sprite)\n\n // 弹窗容器\n const dialogDiv = document.createElement('div')\n width += 5\n height += 5\n Object.assign(dialogDiv.style, {\n width: `${width}px`,\n height: `${height}px`,\n zIndex: 2,\n backgroundImage: `url(${usePath}p4/border.png)`,\n backgroundSize: '100% 100%',\n backgroundRepeat: 'no-repeat',\n position: 'releate',\n // left: `${(window.innerWidth - width) / 2}px`,\n // top: `${(window.innerHeight - height) / 2}px`,\n })\n\n const maskingDiv = document.createElement('div')\n maskingDiv.className = 'dialog-masking'\n dialogDiv.appendChild(maskingDiv)\n\n // 关闭按钮\n const closeSpan = document.createElement('span')\n closeSpan.className = 'dialog-close'\n closeSpan.addEventListener('click', () => {\n this.eventList.has('close') && this.eventList.get('close')()\n this.close()\n })\n const hLine = document.createElement('span')\n hLine.className = 'dialog-close-line dialog-close-h-line'\n closeSpan.appendChild(hLine)\n const vLine = document.createElement('span')\n vLine.className = 'dialog-close-line dialog-close-v-line'\n closeSpan.appendChild(vLine)\n dialogDiv.appendChild(closeSpan)\n\n // 操作按钮\n const op = document.createElement('div')\n op.className = 'dialog-operate'\n dialogDiv.appendChild(op)\n const opList = ['left', 'right', 'top', 'bottom']\n opList.forEach((key) => {\n const btnSpan = document.createElement('span')\n btnSpan.className = `dialog-operate-btn dialog-operate-${key}`\n btnSpan.addEventListener('click', () => {\n switch (key) {\n case 'top':\n camera.rotation.x -= 0.01\n break\n case 'bottom':\n camera.rotation.x += 0.01\n break\n case 'left':\n camera.rotation.y -= 0.01\n break\n case 'right':\n camera.rotation.y += 0.01\n break\n }\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(camera)\n sprite.material = new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false })\n setTimeout(() => close(), 800)\n })\n op.appendChild(btnSpan)\n })\n\n // 滑动条\n const sliderDiv = document.createElement('div')\n sliderDiv.className = 'dialog-slider-container'\n const sliderBar = document.createElement('input')\n sliderBar.type = 'range'\n sliderBar.min = '30'\n sliderBar.max = '120'\n sliderBar.value = '90'\n sliderBar.className = 'dialog-slider'\n sliderBar.addEventListener('input', () => {\n camera.fov = sliderBar.value\n camera.updateProjectionMatrix()\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(camera)\n sprite.material = new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false })\n setTimeout(() => close(), 800)\n })\n sliderDiv.appendChild(sliderBar)\n dialogDiv.appendChild(sliderDiv)\n\n this.borderMesh = new Css2DPoi(dialogDiv)\n this.borderMesh.position.copy(sprite.position)\n return this.borderMesh\n }\n\n addStyle() {\n // 设置 CSS 规则\n const css = `\n .dialog-masking{\n position: absolute;\n top: 8px;\n left: 6px;\n width: calc(100% - 12px);\n height: calc(100% - 16px);\n background: linear-gradient(90deg, rgba(0, 0, 0,.4) 0%,rgba(0, 0, 0,.2) 10%, rgba(0, 0, 0,0) 20%, rgba(0,0,0, 0) 50%, rgba(0, 0, 0,0) 80%, rgba(0, 0, 0,0.2) 90%, rgba(0, 0, 0,.4) 100%);\n pointer-events: auto;\n opacity: 1;\n transform: perspective(100px) rotateX(0deg) rotateY(0deg) rotateZ(0deg);\n transform-origin: center center;\n }\n .hot-back{\n width: 70px;\n height: 25px;\n border-radius: 2px;\n color: #fff;\n font-weight: bold;\n font-size: 14px;\n border:1px solid #d1ae6d;\n background-color: #c8ab75;\n cursor: pointer; /* 鼠标指针样式 */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n left: 30px;\n top: 30px;\n pointer-events: auto;\n }\n .hot-back:hover{\n background-color:#c8a158;\n }\n .dialog-close{\n width: 20px;\n height: 20px;\n border-radius: 2px;\n color: #fff;\n background-color: #c8ab75;\n cursor: pointer; /* 鼠标指针样式 */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n right: 20px;\n top: 15px;\n pointer-events: auto;\n }\n\n .dialog-close:hover{\n background-color:#c8a158;\n }\n\n .dialog-close-line{\n width: 14px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n top: 9px;\n display: block;\n }\n\n .dialog-close-h-line{\n transform: rotate(-45deg);\n }\n\n .dialog-close-v-line{\n transform: rotate(45deg);\n }\n\n .dialog-operate{\n width: 120px;\n height: 120px;\n background-image: url(${usePath}p4/operate.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n position: absolute;\n right: 15px;\n bottom: 10px;\n pointer-events: auto;\n }\n\n .dialog-operate-btn{\n width: 0;\n height: 0;\n position: absolute;\n cursor: pointer;\n pointer-events: auto;\n }\n\n .dialog-operate-top{\n border-left: 8px solid transparent; /* 左边透明 */\n border-right: 8px solid transparent; /* 右边透明 */\n border-bottom: 8px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 9px);\n top: 20px;\n }\n .dialog-operate-top:hover{\n border-bottom-color:#fff2dd;\n }\n\n .dialog-operate-bottom{\n border-left: 8px solid transparent; /* 左边透明 */\n border-right: 8px solid transparent; /* 右边透明 */\n border-top: 8px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 9px);\n bottom: 20px;\n }\n\n .dialog-operate-bottom:hover{\n border-top-color:#fff2dd;\n }\n\n .dialog-operate-left{\n border-top: 8px solid transparent; /* 左边透明 */\n border-bottom: 8px solid transparent; /* 右边透明 */\n border-right: 8px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 9px);\n left: 20px;\n }\n .dialog-operate-left:hover{\n border-right-color:#fff2dd;\n }\n\n .dialog-operate-right{\n border-top: 8px solid transparent; /* 左边透明 */\n border-bottom: 8px solid transparent; /* 右边透明 */\n border-left: 8px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 9px);\n right: 20px;\n }\n\n .dialog-operate-right:hover{\n border-left-color:#fff2dd;\n }\n \n .dialog-slider-container {\n width: 13px;\n height: 300px;\n background: url(${usePath}p4/slider.png);\n background-size: 100% 100%;\n position:absolute;\n right:23px;\n top:50px;\n }\n\n .dialog-slider {\n -webkit-appearance: none;\n width: 300px;\n height: 13px;\n background: transparent;\n outline: none;\n opacity: 0.7;\n -webkit-transition: .2s;\n transition: opacity .2s;\n transform: rotate(-90deg);\n margin-left: -144px;\n margin-top: 144px;\n pointer-events: auto;\n }\n\n .dialog-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 7px;\n height: 20px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n\n .dialog-slider::-moz-range-thumb {\n width: 7px;\n height: 20px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n`\n // 创建一个 <style> 元素\n const styleElement = document.createElement('style')\n styleElement.appendChild(document.createTextNode(css))\n // 将 <style> 元素添加到 <head> 中\n document.head.appendChild(styleElement)\n }\n\n close() {\n // 删除弹窗POI\n if (this.borderMesh) {\n this.borderMesh.remove()\n this.borderMesh.removeFromParent()\n }\n if (this.cuteSprite) {\n this.cuteSprite.remove()\n this.cuteSprite.removeFromParent()\n }\n // 移除事件监听\n this.eventListener.forEach((fn) => {\n fn()\n })\n this.eventListener.clear()\n this.eventList.clear()\n }\n}\n\nclass HeadMap {\n TemperatureColorStops = {\n 1.0: '#f00',\n 0.9: '#e2fa00',\n 0.6: '#33f900',\n 0.3: '#0349df',\n 0.0: '#0f00ff',\n }\n\n eventList: Map<string, Function> = new Map()\n backEle: HTMLElement\n heatMapPlane: Mesh\n canvasList = []\n\n constructor() {\n\n }\n\n // 热力图\n create() {\n const heatmap = heatMap.create({\n container: this.createDom(),\n gradient: this.TemperatureColorStops,\n })\n let len = 1200\n const width = 2000\n const height = 1000\n const points = []\n let max = 0\n while (len--) {\n const val = Math.floor(Math.random() * 10)\n max = Math.max(max, val)\n const point = {\n x: Math.floor(Math.random() * width),\n y: Math.floor(Math.random() * height),\n value: val,\n }\n points.push(point)\n }\n heatmap.setData({\n max,\n data: points,\n })\n\n // 灰度图\n const greymap = heatMap.create({\n container: this.createDom(),\n gradient: {\n '0': 'black',\n '1.0': 'white',\n },\n })\n\n greymap.setData({\n max,\n data: points,\n })\n const heatMapMaterial = new ShaderMaterial({\n transparent: true,\n depthTest: false,\n side: DoubleSide,\n vertexShader: `varying vec2 vUv;\n uniform float Zscale;\n uniform sampler2D greyMap;\n void main() {\n vUv = uv;\n vec4 frgColor = texture2D(greyMap, uv);//获取灰度图点位信息\n float height = Zscale * frgColor.a;//通过灰度图的rgb*需要设置的高度计算出热力图每个点位最终在z轴高度\n vec3 transformed = vec3( position.x, position.y, height);//重新组装点坐标\n gl_Position = projectionMatrix * modelViewMatrix * vec4(transformed, 1.0);//渲染点位\n \n }\n `,\n fragmentShader: `varying vec2 vUv;\n uniform sampler2D heatMap;//热力图\n uniform vec3 u_color;//基础颜色\n uniform float u_opacity; // 透明度\n void main() {\n //vec4 alphaColor = texture2D(heatMap, vUv);\n // gl_FragColor = alphaColor;\n gl_FragColor = vec4(u_color, u_opacity) * texture2D(heatMap, vUv);//把热力图颜色和透明度进行渲染\n }`,\n uniforms: {\n heatMap: {\n value: { value: undefined },\n },\n greyMap: {\n value: { value: undefined },\n },\n Zscale: { value: 0 }, // 高度参数\n u_color: {\n value: new Color('rgb(255, 255, 255)'),\n },\n u_opacity: {\n value: 0.8,\n },\n },\n })\n\n const texture = new Texture(heatmap._renderer.canvas)\n texture.needsUpdate = true\n const greyTexture = new Texture(greymap._renderer.canvas)\n greyTexture.needsUpdate = true\n\n heatMapMaterial.uniforms.heatMap.value = texture\n heatMapMaterial.uniforms.greyMap.value = greyTexture\n\n const heatMapGeometry = new PlaneGeometry(200, 100, 100, 100) // 3d热力图大小,及分块数量\n const heatMapPlane = new Mesh(heatMapGeometry, heatMapMaterial)\n heatMapPlane.rotation.set(-Math.PI / 2, 0, 0)\n // heatMapPlane.position.set(0, 0, 0) // 3d热力图中心点位置\n\n this.heatMapPlane = heatMapPlane\n return heatMapPlane\n }\n\n addEventListener(eventName, fn) {\n if (this.eventList.has(eventName))\n this.eventList[eventName] = fn\n else\n this.eventList.set(eventName, fn)\n }\n\n addBack() {\n this.backEle = document.createElement('div')\n this.backEle.className = 'hot-back'\n this.backEle.innerHTML = '返回'\n document.body.appendChild(this.backEle)\n this.backEle.addEventListener('click', () => {\n this.eventList.has('close') && this.eventList.get('close')()\n this.remove()\n })\n }\n\n createDom() {\n // 创建一个新的 canvas 元素\n const canvas = document.createElement('canvas')\n canvas.style.zIndex = '-1'\n // 设置 canvas 元素的宽度和高度\n canvas.width = window.innerWidth\n canvas.height = window.innerHeight\n document.body.appendChild(canvas)\n this.canvasList.push(canvas)\n return canvas\n }\n\n remove() {\n this.canvasList.forEach((canvas) => {\n canvas.remove()\n })\n this.canvasList.length = 0\n this.backEle && this.backEle.remove()\n this.heatMapPlane.removeFromParent()\n this.heatMapPlane.remove()\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["AdditiveBlending","Box3","CircleGeometry","Color","DoubleSide","Group","MathUtils","Matrix4","Mesh","MeshBasicMaterial","ModelLoader","PerspectiveCamera","PlaneGeometry","ShaderMaterial","Sprite","SpriteMaterial","Texture","TextureLoader","Vector3","use","utils","Css2DPoi","SpritePoi","heatMap","MessageType","sendToMessage","EMessageStatus","regionMap","usePath","emitter","load","CameraPoi","gobal","Map","Set","dialogManage","Dialog","addStyle","loadGLTF","gltf","model","Object","keys","forEach","key","region","group","name","camera","sprite","scale","rotation","y","Math","PI","position","fromArray","copy","add","scan","scene","clone","addScalar","x","cameraMesh","set","title","interactionManager","cameraEvent","point","MethanePoint","probePoint","item","mesh","warn","probeEvent","create","warnMesh","rotatingRight","unFrame","useframe","children","z","abs","eventListener","useScene","unClick","addEventListener","Event","Success","undefined","id","targetPosition","toArray","camaraPosition","startPosition","cameraLookAt","getWorldDirection","cameraUtil","target","getMesh","dialogMesh","visible","togglePoi","then","headMap","HeadMap","distanceTo","closeHotmap","remove","removeFromParent","clear","fn","close","geometry","texture","circle","map","side","transparent","rotateX","material","vertexShader","fragmentShader","blending","depthTest","color","numPoints","i","random","cameraManage","manage","cameraPosition","window","innerWidth","innerHeight","getTarget","lookAt","setCustomPerspective","cuteSprite","depthWrite","center","renderOrder","updateScale","Promise","reslove","setTimeout","getBorderMesh","borderMesh","angleX","degToRad","angleY","angleZ","rotationMatrix","makeRotationX","multiply","makeRotationY","makeRotationZ","cameraDirection","targetDirection","applyMatrix4","devicePixelRatio","bbox","setFromObject","min","project","max","width","height","scaleFactors","scaleFactor","minDistance","maxDistance","objectPosition","distance","clampedDistance","eventName","eventList","has","getBoxSize","dialogDiv","document","createElement","assign","style","maskingDiv","className","appendChild","closeSpan","get","hLine","vLine","op","opList","btnSpan","sliderDiv","sliderBar","type","value","fov","updateProjectionMatrix","css","styleElement","createTextNode","head","heatmap","container","createDom","gradient","TemperatureColorStops","len","points","val","floor","push","setData","data","greymap","heatMapMaterial","uniforms","greyMap","Zscale","u_color","u_opacity","_renderer","canvas","needsUpdate","greyTexture","h","tan","w","aspect","heatMapGeometry","heatMapPlane","backEle","innerHTML","body","zIndex","canvasList","length"],"sources":["../../../src/factory/unit/CameraPoi.ts"],"sourcesContent":["import { AdditiveBlending, Box3, CircleGeometry, Color, DoubleSide, Group, MathUtils, Matrix4, Mesh, MeshBasicMaterial, ModelLoader, PerspectiveCamera, PlaneGeometry, ShaderMaterial, Sprite, SpriteMaterial, Texture, TextureLoader, Vector3, use, utils } from '@anov/3d-core'\nimport { Css2DPoi, SpritePoi } from '@anov/3d-ability'\nimport heatMap from 'anov-heat-map'\nimport { MessageType, sendToMessage } from '../../utils/messageFn'\nimport { EMessageStatus } from '../../messageStatus'\n\n// @ts-ignore\nimport type Factory3D from '../3d'\n\n// @ts-ignore\nimport { regionMap } from '../regionData'\n\nimport { usePath } from '../3d'\n\nconst { emitter } = utils\n\nconst load = new ModelLoader()\nclass CameraPoi {\n gobal: Factory3D\n cameraMesh: Map<string, Group> = new Map()\n warnMesh: Map<string, SpritePoi> = new Map()\n headMap: HeadMap\n dialogManage: Dialog\n eventListener: Set<Function> = new Set()\n\n startPosition: Vector3\n cameraLookAt: Vector3\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.dialogManage = new Dialog(this)\n this.dialogManage.addStyle()\n }\n\n async generateObject() {\n const model = await load.loadGLTF(`${usePath}shexiang.glb`, false, true, './draco/', (gltf) => {\n return gltf\n })\n\n Object.keys(regionMap).forEach(async (key: string) => {\n // 摄像机\n const region = regionMap[key]\n const group = new Group()\n group.name = region.camera.name\n const sprite = new SpritePoi(`${usePath}camera.png`, { scale: [10, 10, 1] })\n sprite.rotation.y = Math.PI\n const position = new Vector3().fromArray(region.camera.position)\n sprite.position.copy(position)\n group.add(sprite)\n\n const scan = model.scene.clone()\n scan.scale.addScalar(5)\n scan.rotation.x = (-Math.PI / 2) + 0.5\n scan.position.copy(position.clone().add(new Vector3(0, -2, 0)))\n group.add(scan)\n\n this.cameraMesh.set(region.title, group)\n this.gobal.interactionManager.add(group)\n this.cameraEvent(group, region)\n this.gobal.scene.add(group)\n\n // 甲烷检测点\n const point = new MethanePoint()\n region.probePoint?.forEach((item) => {\n let mesh\n if (item.warn) {\n mesh = new SpritePoi(`${usePath}p4/warn.png`, { scale: [10, 10, 1] })\n this.gobal.interactionManager.add(mesh)\n this.probeEvent(mesh, region)\n }\n else {\n mesh = point.create()\n }\n mesh.position.copy(new Vector3().fromArray(item.position))\n this.warnMesh.set(region.title, mesh)\n\n this.gobal.scene.add(mesh)\n })\n })\n // 设置左右旋转的标志位和旋转速度\n let rotatingRight = true // 是否正在向右转动\n\n const unFrame = use.useframe(() => {\n this.cameraMesh.forEach((group) => {\n const scan = group.children[1]\n // 更新相机的旋转角度\n if (rotatingRight) {\n // 向右旋转\n scan.rotation.z += 0.005\n }\n else {\n // 向左旋转\n scan.rotation.z -= 0.005\n }\n\n // 检查是否达到目标旋转角度\n if (Math.abs(scan.rotation.z) >= Math.abs(Math.PI / 4)) {\n // 到达目标角度,切换旋转方向并更新目标角度\n rotatingRight = !rotatingRight\n }\n })\n })\n this.eventListener.add(unFrame)\n }\n\n cameraEvent(sprite: Group, region: any) {\n const { camera } = use.useScene()\n const unClick = sprite.addEventListener('click', async () => {\n sendToMessage(MessageType.Event, 'onCameraStatus', EMessageStatus.Success, undefined, { id: region.camera.id })\n\n const position = new Vector3().fromArray(region.camera.position)\n const targetPosition: [number, number, number] = position.clone().toArray()\n const camaraPosition: [number, number, number] = position.clone().add(new Vector3(0, 40, 80)).toArray()\n\n const startPosition = camera.position.clone()\n // 获取相机朝向\n const cameraLookAt = new Vector3() // 创建一个向量来存储相机朝向\n camera.getWorldDirection(cameraLookAt) // 获取相机朝向并存储在向量中\n this.gobal.cameraUtil.set({\n position: camaraPosition,\n target: targetPosition,\n })\n\n const dialogMesh = await this.dialogManage.getMesh(position, position.clone().add(new Vector3(0, -15, 5)))\n this.dialogManage.addEventListener('close', () => {\n // 初始相机到原始位置\n this.gobal.cameraUtil.set({\n position: startPosition.toArray(),\n target: cameraLookAt.toArray(),\n })\n sendToMessage(MessageType.Event, 'onCancelCameraStatus', EMessageStatus.Success, undefined, { id: region.camera.id })\n })\n this.gobal.scene.add(dialogMesh)\n })\n // this.eventListener.add(unClick)\n }\n\n probeEvent(sprite: SpritePoi, region) {\n const { camera } = use.useScene()\n sprite.addEventListener('click', async () => {\n if (!sprite.visible)\n return\n sprite.visible = false\n sendToMessage(MessageType.Event, 'onGasMonitorStatus', EMessageStatus.Success, undefined, { id: region.probePoint[0].id })\n this.togglePoi(false)\n const position = new Vector3().fromArray(region.probePoint[0].position)\n const camaraPosition = position.clone().add(new Vector3(0, 30, 0))\n\n this.startPosition = camera.position.clone()\n // 获取相机朝向\n this.cameraLookAt = new Vector3() // 创建一个向量来存储相机朝向\n camera.getWorldDirection(this.cameraLookAt) // 获取相机朝向并存储在向量中\n this.gobal.cameraUtil.set({\n position: camaraPosition.toArray(),\n target: position.clone().toArray(),\n }).then(() => {\n this.headMap = new HeadMap()\n const mesh = this.headMap.create(camaraPosition.distanceTo(position))\n mesh.position.copy(sprite.position)\n mesh.position.y = 0.5\n this.gobal.scene.add(mesh)\n\n // this.headMap.addBack()\n this.headMap.addEventListener('close', () => {\n this.closeHotmap()\n // this.togglePoi(true)\n\n // this.gobal.cameraUtil.set({\n // position: this.startPosition.toArray(),\n // target: this.cameraLookAt.toArray(),\n // })\n })\n })\n })\n }\n\n closeHotmap() {\n this.headMap.remove()\n this.togglePoi(true)\n\n this.gobal.cameraUtil.set({\n position: this.startPosition.toArray(),\n target: this.cameraLookAt.toArray(),\n })\n }\n\n togglePoi(visible = true) {\n this.warnMesh.forEach((sprite) => {\n sprite.visible = visible\n })\n this.cameraMesh.forEach((sprite) => {\n sprite.visible = visible\n })\n }\n\n remove() {\n // 删除摄像机POI点\n this.cameraMesh.forEach((sprite) => {\n sprite.removeFromParent()\n sprite.remove()\n })\n this.cameraMesh.clear()\n this.warnMesh.forEach((sprite) => {\n sprite.removeFromParent()\n sprite.remove()\n })\n this.warnMesh.clear()\n this.eventListener.forEach((fn) => {\n fn()\n })\n // 热力图\n if (this.headMap)\n this.headMap.remove()\n this.eventListener.clear()\n\n this.dialogManage.close()\n }\n}\n\nexport default CameraPoi\n\nclass MethanePoint {\n constructor() {\n\n }\n\n create() {\n // 定义Shader的uniform变量\n\n const geometry = new PlaneGeometry(10, 10)\n const texture = new TextureLoader().load(`${usePath}p4/monitor.png`)\n const circle = new Mesh(geometry, new MeshBasicMaterial({\n map: texture,\n side: DoubleSide,\n transparent: true,\n }))\n circle.rotateX(-Math.PI / 3)\n return circle\n }\n\n // 随机多点的方案\n createBack() {\n // 定义Shader的uniform变量\n\n const group = new Group()\n const geometry = new CircleGeometry(2, 32)\n // 创建自定义着色器材质\n const material = new ShaderMaterial({\n vertexShader: `\n void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n gl_PointSize = 20.0; // 设置点的大小\n }\n `,\n fragmentShader: `\n void main() {\n vec2 center = vec2(0.5, 0.5); // 圆心坐标\n vec2 toCenter = gl_PointCoord - center; // 计算点到圆心的向量\n float distance = length(toCenter); // 计算点到圆心的距离\n if (distance > 0.5) discard; // 超出半径范围的点直接丢弃\n vec3 innerColor = vec3(1.0, .8, 0.0); // 内圈颜色为黄色\n vec3 outerColor = vec3(0.8, 0.4, 0.0); // 外圈颜色为深橘色\n \n vec3 finalColor = mix(innerColor, outerColor, smoothstep(0.1, 0.23, distance)); // 根据距离混合颜色\n if(distance>0.3) finalColor = mix(finalColor, vec3(0.75, 0.4, 0.0), smoothstep(0.25, 0.3, distance)); // 根据距离混合颜色\n gl_FragColor = vec4(finalColor, 1.0); // 设置片段颜色\n }\n `,\n blending: AdditiveBlending,\n depthTest: false,\n transparent: true,\n side: DoubleSide,\n })\n const circle = new Mesh(geometry, new MeshBasicMaterial({ color: '#f7a157' }))\n const numPoints = 100 // 点的数量\n\n for (let i = 0; i < numPoints; i++) {\n const x = Math.random() * 700 - 322 // 随机生成 x 坐标\n const z = Math.random() * 340 - 144 // 随机生成 z 坐标\n const point = circle.clone()\n point.position.copy(new Vector3(x, 20.55, z))\n point.rotateX(-Math.PI / 2)\n group.add(point)\n }\n\n return group\n }\n}\n\nclass Dialog {\n manage: CameraPoi\n\n camera: PerspectiveCamera\n cameraPosition: Vector3\n cameraTargetPosition: Vector3\n\n borderMesh: Css2DPoi\n cuteSprite: Sprite\n eventListener: Set<Function> = new Set()\n eventList: Map<string, Function> = new Map()\n\n constructor(cameraManage) {\n this.manage = cameraManage\n }\n\n async getMesh(position, cameraPosition) {\n this.camera = new PerspectiveCamera(\n 90, window.innerWidth / window.innerHeight, 0.1, 100000000,\n )\n this.camera.position.copy(cameraPosition)\n const target = this.getTarget(cameraPosition)\n this.camera.lookAt(target)\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(this.camera)\n this.cuteSprite = new Sprite(new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false }))\n this.cuteSprite.center.set(0.5, 0.5)\n this.cuteSprite.renderOrder = 5\n this.cuteSprite.position.copy(position)\n\n const unFrame = use.useframe(() => {\n this.updateScale(this.cuteSprite)\n })\n this.eventListener.add(unFrame)\n\n return new Promise((reslove) => {\n setTimeout(() => {\n this.getBorderMesh(this.camera, this.cuteSprite)\n const group = new Group()\n group.add(this.borderMesh)\n group.add(this.cuteSprite)\n close()\n reslove(group)\n }, 1000)\n })\n }\n\n getTarget(cameraPosition, rotation = [-30, 0, 0]) {\n // 将旋转角度转换为弧度\n const angleX = MathUtils.degToRad(rotation[0])\n const angleY = MathUtils.degToRad(rotation[1])\n const angleZ = MathUtils.degToRad(rotation[2])\n\n // 创建旋转矩阵\n const rotationMatrix = new Matrix4()\n rotationMatrix.makeRotationX(angleX)\n rotationMatrix.multiply(new Matrix4().makeRotationY(angleY))\n rotationMatrix.multiply(new Matrix4().makeRotationZ(angleZ))\n\n // 定义相机的方向向量(例如,相机的方向默认为(0, 0, -1))\n const cameraDirection = new Vector3(0, 0, 1)\n\n // 将相机的方向向量乘以旋转矩阵,得到相机目标位置的向量\n const targetDirection = cameraDirection.clone().applyMatrix4(rotationMatrix)\n\n // 计算相机的目标位置\n return cameraPosition.clone().add(targetDirection)\n }\n\n getBoxSize(sprite: Sprite) {\n const { camera } = use.useScene()\n\n // 获取设备像素比\n const devicePixelRatio = window.devicePixelRatio || 1\n // 获取精灵对象的边界框\n const bbox = new Box3().setFromObject(sprite)\n // 将边界框的最小和最大顶点转换为屏幕坐标\n const min = bbox.min.project(camera)\n const max = bbox.max.project(camera)\n\n // 计算精灵在屏幕中的宽度和高度像素值\n let width = (max.x - min.x) * window.innerWidth / devicePixelRatio * 0.9458\n let height = (max.y - min.y) * window.innerHeight / devicePixelRatio * 1.0617\n\n // 定义设备像素比和对应的缩放系数的映射关系\n const scaleFactors = {\n 1: 0.5,\n 1.5: 0.75,\n 2: 1,\n }\n const scaleFactor = scaleFactors[devicePixelRatio] || 1\n // 应用缩放系数\n width *= scaleFactor\n height *= scaleFactor\n\n return { width, height }\n }\n\n updateScale(sprite: Sprite) {\n const { camera } = use.useScene()\n // 距离限制范围的值,用于计算缩放比例\n const minDistance = 0.1\n const maxDistance = 1000000\n // 获取相机和物体的世界坐标位置\n const cameraPosition = camera?.position\n const objectPosition = sprite.position\n\n // 计算相机和物体之间的距离\n const distance = cameraPosition?.distanceTo(objectPosition) || 0.1\n\n // 使用 Math.min() 和 Math.max() 方法限制 resultDistance 的范围\n const clampedDistance = Math.max(minDistance, Math.min(maxDistance, distance))\n // console.log('clampedDistance:',clampedDistance)\n // 按照缩放系数和距离进行缩放,缩放系数应该约定好一个固定值\n sprite.scale.copy(new Vector3(clampedDistance * 1.5, 1.05 * clampedDistance, 1))\n }\n\n addEventListener(eventName, fn) {\n if (this.eventList.has(eventName))\n this.eventList[eventName] = fn\n else\n this.eventList.set(eventName, fn)\n }\n\n getBorderMesh(camera, sprite: Sprite) {\n let { width, height } = this.getBoxSize(sprite)\n\n // 弹窗容器\n const dialogDiv = document.createElement('div')\n width += 5\n height += 5\n Object.assign(dialogDiv.style, {\n 'width': `${width}px`,\n 'height': `${height}px`,\n 'z-index': '3 !important',\n 'backgroundImage': `url(${usePath}p4/border.png)`,\n 'backgroundSize': '100% 100%',\n 'backgroundRepeat': 'no-repeat',\n 'position': 'relative',\n\n // left: `${(window.innerWidth - width) / 2}px`,\n // top: `${(window.innerHeight - height) / 2}px`,\n })\n\n const maskingDiv = document.createElement('div')\n maskingDiv.className = 'dialog-mask'\n dialogDiv.appendChild(maskingDiv)\n\n // 关闭按钮\n const closeSpan = document.createElement('span')\n closeSpan.className = 'dialog-close'\n closeSpan.addEventListener('click', () => {\n this.eventList.has('close') && this.eventList.get('close')()\n this.close()\n })\n const hLine = document.createElement('span')\n hLine.className = 'dialog-close-line dialog-close-h-line'\n closeSpan.appendChild(hLine)\n const vLine = document.createElement('span')\n vLine.className = 'dialog-close-line dialog-close-v-line'\n closeSpan.appendChild(vLine)\n dialogDiv.appendChild(closeSpan)\n\n // 操作按钮\n const op = document.createElement('div')\n op.className = 'dialog-operate'\n dialogDiv.appendChild(op)\n const opList = ['left', 'right', 'top', 'bottom']\n opList.forEach((key) => {\n const btnSpan = document.createElement('span')\n btnSpan.className = `dialog-operate-btn dialog-operate-${key}`\n btnSpan.addEventListener('click', () => {\n switch (key) {\n case 'top':\n camera.rotation.x -= 0.01\n break\n case 'bottom':\n camera.rotation.x += 0.01\n break\n case 'left':\n camera.rotation.y -= 0.01\n break\n case 'right':\n camera.rotation.y += 0.01\n break\n }\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(camera)\n sprite.material = new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false })\n setTimeout(() => close(), 800)\n })\n op.appendChild(btnSpan)\n })\n\n // 滑动条\n const sliderDiv = document.createElement('div')\n sliderDiv.className = 'dialog-slider-container'\n const sliderBar = document.createElement('input')\n sliderBar.type = 'range'\n sliderBar.min = '30'\n sliderBar.max = '120'\n sliderBar.value = '90'\n sliderBar.className = 'dialog-slider'\n sliderBar.addEventListener('input', () => {\n camera.fov = sliderBar.value\n camera.updateProjectionMatrix()\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(camera)\n sprite.material = new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false })\n setTimeout(() => close(), 800)\n })\n sliderDiv.appendChild(sliderBar)\n dialogDiv.appendChild(sliderDiv)\n\n this.borderMesh = new Css2DPoi(dialogDiv)\n this.borderMesh.position.copy(sprite.position)\n return this.borderMesh\n }\n\n addStyle() {\n // 设置 CSS 规则\n const css = `\n .page-mask{\n position: fixed;\n top: 0;\n left: 0;\n bottom:0;\n right:0;\n //width: 100%;\n //height: 100%;\n background-color: rgba(0, 0, 0, 0.5); /* 半透明背景 */\n //filter: blur(10px); /* 模糊效果 */\n z-index: 1 !important; /* 确保蒙版位于其他元素之上 */\n }\n .dialog-mask{\n position: absolute;\n top: 8px;\n left: 6px;\n width: calc(100% - 12px);\n height: calc(100% - 16px);\n background: linear-gradient(90deg, rgba(0, 0, 0,.4) 0%,rgba(0, 0, 0,.2) 10%, rgba(0, 0, 0,0) 20%, rgba(0,0,0, 0) 50%, rgba(0, 0, 0,0) 80%, rgba(0, 0, 0,0.2) 90%, rgba(0, 0, 0,.4) 100%);\n pointer-events: auto;\n opacity: 1;\n transform: perspective(100px) rotateX(0deg) rotateY(0deg) rotateZ(0deg);\n transform-origin: center center;\n }\n .hot-back{\n width: 70px;\n height: 25px;\n border-radius: 2px;\n color: #fff;\n font-weight: bold;\n font-size: 14px;\n border:1px solid #d1ae6d;\n background-color: #c8ab75;\n cursor: pointer; /* 鼠标指针样式 */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n left: 30px;\n top: 30px;\n pointer-events: auto;\n }\n .hot-back:hover{\n background-color:#c8a158;\n }\n .dialog-close{\n width: 20px;\n height: 20px;\n border-radius: 2px;\n color: #fff;\n background-color: #c8ab75;\n cursor: pointer; /* 鼠标指针样式 */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n right: 20px;\n top: 15px;\n pointer-events: auto;\n }\n\n .dialog-close:hover{\n background-color:#c8a158;\n }\n\n .dialog-close-line{\n width: 14px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n top: 9px;\n display: block;\n }\n\n .dialog-close-h-line{\n transform: rotate(-45deg);\n }\n\n .dialog-close-v-line{\n transform: rotate(45deg);\n }\n\n .dialog-operate{\n width: 120px;\n height: 120px;\n background-image: url(${usePath}p4/operate.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n position: absolute;\n right: 15px;\n bottom: 10px;\n pointer-events: auto;\n }\n\n .dialog-operate-btn{\n width: 0;\n height: 0;\n position: absolute;\n cursor: pointer;\n pointer-events: auto;\n }\n\n .dialog-operate-top{\n border-left: 8px solid transparent; /* 左边透明 */\n border-right: 8px solid transparent; /* 右边透明 */\n border-bottom: 8px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 9px);\n top: 20px;\n }\n .dialog-operate-top:hover{\n border-bottom-color:#fff2dd;\n }\n\n .dialog-operate-bottom{\n border-left: 8px solid transparent; /* 左边透明 */\n border-right: 8px solid transparent; /* 右边透明 */\n border-top: 8px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 9px);\n bottom: 20px;\n }\n\n .dialog-operate-bottom:hover{\n border-top-color:#fff2dd;\n }\n\n .dialog-operate-left{\n border-top: 8px solid transparent; /* 左边透明 */\n border-bottom: 8px solid transparent; /* 右边透明 */\n border-right: 8px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 9px);\n left: 20px;\n }\n .dialog-operate-left:hover{\n border-right-color:#fff2dd;\n }\n\n .dialog-operate-right{\n border-top: 8px solid transparent; /* 左边透明 */\n border-bottom: 8px solid transparent; /* 右边透明 */\n border-left: 8px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 9px);\n right: 20px;\n }\n\n .dialog-operate-right:hover{\n border-left-color:#fff2dd;\n }\n \n .dialog-slider-container {\n width: 13px;\n height: 300px;\n background: url(${usePath}p4/slider.png);\n background-size: 100% 100%;\n position:absolute;\n right:23px;\n top:50px;\n }\n\n .dialog-slider {\n -webkit-appearance: none;\n width: 300px;\n height: 13px;\n background: transparent;\n outline: none;\n opacity: 0.7;\n -webkit-transition: .2s;\n transition: opacity .2s;\n transform: rotate(-90deg);\n margin-left: -144px;\n margin-top: 144px;\n pointer-events: auto;\n }\n\n .dialog-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 7px;\n height: 20px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n\n .dialog-slider::-moz-range-thumb {\n width: 7px;\n height: 20px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n`\n // 创建一个 <style> 元素\n const styleElement = document.createElement('style')\n styleElement.appendChild(document.createTextNode(css))\n // 将 <style> 元素添加到 <head> 中\n document.head.appendChild(styleElement)\n }\n\n close() {\n // 删除弹窗POI\n if (this.borderMesh) {\n this.borderMesh.remove()\n this.borderMesh.removeFromParent()\n }\n if (this.cuteSprite) {\n this.cuteSprite.remove()\n this.cuteSprite.removeFromParent()\n }\n // 移除事件监听\n this.eventListener.forEach((fn) => {\n fn()\n })\n this.eventListener.clear()\n this.eventList.clear()\n }\n}\n\nclass HeadMap {\n TemperatureColorStops = {\n 1.0: '#f00',\n 0.9: '#e2fa00',\n 0.6: '#33f900',\n 0.3: '#0349df',\n 0.0: '#0f00ff',\n }\n\n eventList: Map<string, Function> = new Map()\n backEle: HTMLElement\n heatMapPlane: Mesh\n canvasList = []\n\n constructor() {\n\n }\n\n // 热力图\n create(distance) {\n const heatmap = heatMap.create({\n container: this.createDom(),\n gradient: this.TemperatureColorStops,\n })\n let len = 1200\n const width = window.innerWidth\n const height = window.innerHeight\n const points = []\n let max = 0\n while (len--) {\n const val = Math.floor(Math.random() * 10)\n max = Math.max(max, val)\n const point = {\n x: Math.floor(Math.random() * width),\n y: Math.floor(Math.random() * height),\n value: val,\n }\n points.push(point)\n }\n heatmap.setData({\n max,\n data: points,\n })\n\n // 灰度图\n const greymap = heatMap.create({\n container: this.createDom(),\n gradient: {\n '0': 'black',\n '1.0': 'white',\n },\n })\n\n greymap.setData({\n max,\n data: points,\n })\n const heatMapMaterial = new ShaderMaterial({\n transparent: true,\n depthTest: false,\n side: DoubleSide,\n vertexShader: `varying vec2 vUv;\n uniform float Zscale;\n uniform sampler2D greyMap;\n void main() {\n vUv = uv;\n vec4 frgColor = texture2D(greyMap, uv);//获取灰度图点位信息\n float height = Zscale * frgColor.a;//通过灰度图的rgb*需要设置的高度计算出热力图每个点位最终在z轴高度\n vec3 transformed = vec3( position.x, position.y, height);//重新组装点坐标\n gl_Position = projectionMatrix * modelViewMatrix * vec4(transformed, 1.0);//渲染点位\n \n }\n `,\n fragmentShader: `varying vec2 vUv;\n uniform sampler2D heatMap;//热力图\n uniform vec3 u_color;//基础颜色\n uniform float u_opacity; // 透明度\n void main() {\n //vec4 alphaColor = texture2D(heatMap, vUv);\n // gl_FragColor = alphaColor;\n gl_FragColor = vec4(u_color, u_opacity) * texture2D(heatMap, vUv);//把热力图颜色和透明度进行渲染\n }`,\n uniforms: {\n heatMap: {\n value: { value: undefined },\n },\n greyMap: {\n value: { value: undefined },\n },\n Zscale: { value: 0 }, // 高度参数\n u_color: {\n value: new Color('rgb(255, 255, 255)'),\n },\n u_opacity: {\n value: 0.8,\n },\n },\n })\n\n const texture = new Texture(heatmap._renderer.canvas)\n texture.needsUpdate = true\n const greyTexture = new Texture(greymap._renderer.canvas)\n greyTexture.needsUpdate = true\n\n heatMapMaterial.uniforms.heatMap.value = texture\n heatMapMaterial.uniforms.greyMap.value = greyTexture\n\n const { camera } = use.useScene()\n // 计算平面的尺寸\n const h = 2 * Math.tan(camera.fov * Math.PI / 360) * distance * 2 * 0.85\n const w = h * camera.aspect\n\n const heatMapGeometry = new PlaneGeometry(w, h, 100, 100) // 3d热力图大小,及分块数量\n const heatMapPlane = new Mesh(heatMapGeometry, heatMapMaterial)\n heatMapPlane.rotation.set(-Math.PI / 2, 0, 0)\n\n this.heatMapPlane = heatMapPlane\n return heatMapPlane\n }\n\n addEventListener(eventName, fn) {\n if (this.eventList.has(eventName))\n this.eventList[eventName] = fn\n else\n this.eventList.set(eventName, fn)\n }\n\n addBack() {\n this.backEle = document.createElement('div')\n this.backEle.className = 'hot-back'\n this.backEle.innerHTML = '返回'\n document.body.appendChild(this.backEle)\n this.backEle.addEventListener('click', () => {\n this.eventList.has('close') && this.eventList.get('close')()\n // this.remove()\n })\n }\n\n createDom() {\n // 创建一个新的 canvas 元素\n const canvas = document.createElement('canvas')\n canvas.style.zIndex = '-1'\n // 设置 canvas 元素的宽度和高度\n canvas.width = window.innerWidth\n canvas.height = window.innerHeight\n document.body.appendChild(canvas)\n this.canvasList.push(canvas)\n return canvas\n }\n\n remove() {\n this.canvasList.forEach((canvas) => {\n canvas.remove()\n })\n this.canvasList.length = 0\n this.backEle && this.backEle.remove()\n this.heatMapPlane.removeFromParent()\n this.heatMapPlane.remove()\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const fragmentShader: string;
2
+ export default fragmentShader;
@@ -0,0 +1,4 @@
1
+ import { ShaderChunk } from '@anov/3d-core';
2
+ var fragmentShader = /* glsl */"\n".concat(ShaderChunk.logdepthbuf_pars_fragment, "\nuniform float alpha;\nvarying vec2 vUv;\n\nvoid main() {\n float centerLineWidth = 0.05; \n float sideLineWidth = 0.1; \n\n vec2 adjustedUv = vec2(vUv.x, vUv.y - 0.25);\n\n float centerLine = smoothstep(centerLineWidth * 0.5, centerLineWidth * 0.6, abs(adjustedUv.y)); \n float leftLine = smoothstep(sideLineWidth * 0.5, sideLineWidth * 0.6, adjustedUv.x); \n float rightLine = smoothstep(sideLineWidth * 0.5, sideLineWidth * 0.6, 1.0 - adjustedUv.x);\n\n float line = max(max(centerLine, leftLine), rightLine); \n\n vec3 centerColor = vec3(1.0, 1.0, 1.0); \n vec3 sideColor = vec3(0.8, 0.4, 0.0); \n vec3 otherColor = vec3(0.95, 0.7, 0.2); \n vec3 finalColor;\n\n if (abs(adjustedUv.y) < centerLineWidth * 0.5) {\n gl_FragColor = vec4(vec3(1.0, 1.0, 1.0), .5); \n }else if(abs(adjustedUv.y+0.25)>0.0 && abs(adjustedUv.y+0.25)<0.05){\n gl_FragColor = vec4(sideColor, .5); \n }else if(abs(adjustedUv.y-0.25)>0.0 && abs(adjustedUv.y-0.25)<0.05){\n gl_FragColor = vec4(sideColor, .5); \n }\n else{\n gl_FragColor = vec4(otherColor, alpha);\n }\n ; \n\n ").concat(ShaderChunk.logdepthbuf_fragment, "\n}\n");
3
+ export default fragmentShader;
4
+ //# sourceMappingURL=fragmentShader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ShaderChunk","fragmentShader","logdepthbuf_pars_fragment","logdepthbuf_fragment"],"sources":["../../../../../src/factory/unit/glsl/highway/fragmentShader.ts"],"sourcesContent":["import { ShaderChunk } from '@anov/3d-core'\n\nconst fragmentShader = /* glsl */ `\n${ShaderChunk.logdepthbuf_pars_fragment}\nuniform float alpha;\nvarying vec2 vUv;\n\nvoid main() {\n float centerLineWidth = 0.05; \n float sideLineWidth = 0.1; \n\n vec2 adjustedUv = vec2(vUv.x, vUv.y - 0.25);\n\n float centerLine = smoothstep(centerLineWidth * 0.5, centerLineWidth * 0.6, abs(adjustedUv.y)); \n float leftLine = smoothstep(sideLineWidth * 0.5, sideLineWidth * 0.6, adjustedUv.x); \n float rightLine = smoothstep(sideLineWidth * 0.5, sideLineWidth * 0.6, 1.0 - adjustedUv.x);\n\n float line = max(max(centerLine, leftLine), rightLine); \n\n vec3 centerColor = vec3(1.0, 1.0, 1.0); \n vec3 sideColor = vec3(0.8, 0.4, 0.0); \n vec3 otherColor = vec3(0.95, 0.7, 0.2); \n vec3 finalColor;\n\n if (abs(adjustedUv.y) < centerLineWidth * 0.5) {\n gl_FragColor = vec4(vec3(1.0, 1.0, 1.0), .5); \n }else if(abs(adjustedUv.y+0.25)>0.0 && abs(adjustedUv.y+0.25)<0.05){\n gl_FragColor = vec4(sideColor, .5); \n }else if(abs(adjustedUv.y-0.25)>0.0 && abs(adjustedUv.y-0.25)<0.05){\n gl_FragColor = vec4(sideColor, .5); \n }\n else{\n gl_FragColor = vec4(otherColor, alpha);\n }\n ; \n\n ${ShaderChunk.logdepthbuf_fragment}\n}\n`\n\nexport default fragmentShader"],"mappings":"AAAA,SAASA,WAAW,QAAQ,eAAe;AAE3C,IAAMC,cAAc,GAAG,sBACrBD,WAAW,CAACE,yBAAyB,0oCAiCjCF,WAAW,CAACG,oBAAoB,UAErC;AAED,eAAeF,cAAc"}
@@ -0,0 +1,2 @@
1
+ declare const vertexShader: string;
2
+ export default vertexShader;
@@ -0,0 +1,4 @@
1
+ import { ShaderChunk } from '@anov/3d-core';
2
+ var vertexShader = /* glsl */"\n".concat(ShaderChunk.logdepthbuf_pars_vertex, "\nbool isPerspectiveMatrix(mat4) {\n return true;\n }\nvarying vec2 vUv;\n\nvoid main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n ").concat(ShaderChunk.logdepthbuf_vertex, "\n}\n");
3
+ export default vertexShader;
4
+ //# sourceMappingURL=vertexShader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ShaderChunk","vertexShader","logdepthbuf_pars_vertex","logdepthbuf_vertex"],"sources":["../../../../../src/factory/unit/glsl/highway/vertexShader.ts"],"sourcesContent":["import { ShaderChunk } from '@anov/3d-core'\n\nconst vertexShader = /* glsl */`\n${ShaderChunk.logdepthbuf_pars_vertex}\nbool isPerspectiveMatrix(mat4) {\n return true;\n }\nvarying vec2 vUv;\n\nvoid main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n ${ShaderChunk.logdepthbuf_vertex}\n}\n`\n\nexport default vertexShader"],"mappings":"AAAA,SAASA,WAAW,QAAQ,eAAe;AAE3C,IAAMC,YAAY,GAAG,sBACnBD,WAAW,CAACE,uBAAuB,6MAS/BF,WAAW,CAACG,kBAAkB,UAEnC;AAED,eAAeF,YAAY"}
@@ -20,6 +20,7 @@ declare class HandlerManage implements BaseModule {
20
20
  clickPerson(params: any): void;
21
21
  clickBar(params: any): void;
22
22
  clickCamera(params: any): void;
23
+ clickGasCancel(): void;
23
24
  click(name: any): void;
24
25
  setInspectTarget(params: {
25
26
  target: string;
@@ -40,6 +40,12 @@ var HandlerManage = /*#__PURE__*/function () {
40
40
  value: function clickCamera(params) {
41
41
  this.click(params.name);
42
42
  }
43
+ }, {
44
+ key: "clickGasCancel",
45
+ value: function clickGasCancel() {
46
+ // @ts-ignore
47
+ this.app.caseInstance.cameraPoi.closeHotmap();
48
+ }
43
49
  }, {
44
50
  key: "click",
45
51
  value: function click(name) {
@@ -1 +1 @@
1
- {"version":3,"names":["map","HF","HPU","LLCV","CMP1","CMP2","invertMap","HandlerManage","app","params","click","id","title","name","object","sceneControl","scene","getObjectByName","console","log","dispatchEvent","type","target","caseInstance","inspection","goToInspectionTarget","inspectionObject","stop","contineMove"],"sources":["../../../src/factory/unit/handle.ts"],"sourcesContent":["import { regionMap } from '../regionData'\nimport type Anov3D from '../../sdkEntry'\nimport type { BaseModule } from '../../utils/abstract'\n\nexport const map = {\n HF: 0.04,\n HPU: 0.15,\n LLCV: 0.24,\n CMP1: 0.40,\n CMP2: 0.68,\n}\n\nexport const invertMap = {\n 0.04: 'HF',\n 0.15: 'HPU',\n 0.24: 'LLCV',\n 0.40: 'CMP1',\n 0.68: 'CMP2',\n}\n\nclass HandlerManage implements BaseModule {\n app: Anov3D\n constructor(app: Anov3D) {\n this.app = app\n }\n\n clickPerson(params: any) {\n this.click(params.id)\n }\n\n clickBar(params: any) {\n this.click(params.title)\n }\n\n clickCamera(params: any) {\n this.click(params.name)\n }\n\n click(name) {\n // 根据名称动态获取Mesh对象\n const object = this.app.sceneControl.scene!.getObjectByName(name)\n\n // 触发事件\n if (object) {\n console.log('Mesh对象已找到!')\n // 手动调用Mesh对象上的点击事件处理函数\n object.dispatchEvent({ type: 'click' })\n }\n else {\n console.log('未找到Mesh对象!')\n }\n }\n\n setInspectTarget(params: { target: string }) {\n const { target } = params\n\n // @ts-ignore\n return this.app.caseInstance.inspection.goToInspectionTarget(map[target])\n }\n\n stopInspect() {\n // @ts-ignore\n this.app.caseInstance.inspection.inspectionObject.stop()\n }\n\n continueInspect() {\n // @ts-ignore\n this.app.caseInstance.inspection.inspectionObject.contineMove()\n }\n}\n\nexport default HandlerManage\n"],"mappings":";;;;;;;AAIA,OAAO,IAAMA,GAAG,GAAG;EACjBC,EAAE,EAAE,IAAI;EACRC,GAAG,EAAE,IAAI;EACTC,IAAI,EAAE,IAAI;EACVC,IAAI,EAAE,IAAI;EACVC,IAAI,EAAE;AACR,CAAC;AAED,OAAO,IAAMC,SAAS,GAAG;EACvB,IAAI,EAAE,IAAI;EACV,IAAI,EAAE,KAAK;EACX,IAAI,EAAE,MAAM;EACZ,IAAI,EAAE,MAAM;EACZ,IAAI,EAAE;AACR,CAAC;AAAA,IAEKC,aAAa;EAEjB,uBAAYC,GAAW,EAAE;IAAA;IAAA;IACvB,IAAI,CAACA,GAAG,GAAGA,GAAG;EAChB;EAAC;IAAA;IAAA,OAED,qBAAYC,MAAW,EAAE;MACvB,IAAI,CAACC,KAAK,CAACD,MAAM,CAACE,EAAE,CAAC;IACvB;EAAC;IAAA;IAAA,OAED,kBAASF,MAAW,EAAE;MACpB,IAAI,CAACC,KAAK,CAACD,MAAM,CAACG,KAAK,CAAC;IAC1B;EAAC;IAAA;IAAA,OAED,qBAAYH,MAAW,EAAE;MACvB,IAAI,CAACC,KAAK,CAACD,MAAM,CAACI,IAAI,CAAC;IACzB;EAAC;IAAA;IAAA,OAED,eAAMA,IAAI,EAAE;MACV;MACA,IAAMC,MAAM,GAAG,IAAI,CAACN,GAAG,CAACO,YAAY,CAACC,KAAK,CAAEC,eAAe,CAACJ,IAAI,CAAC;;MAEjE;MACA,IAAIC,MAAM,EAAE;QACVI,OAAO,CAACC,GAAG,CAAC,YAAY,CAAC;QACzB;QACAL,MAAM,CAACM,aAAa,CAAC;UAAEC,IAAI,EAAE;QAAQ,CAAC,CAAC;MACzC,CAAC,MACI;QACHH,OAAO,CAACC,GAAG,CAAC,YAAY,CAAC;MAC3B;IACF;EAAC;IAAA;IAAA,OAED,0BAAiBV,MAA0B,EAAE;MAC3C,IAAQa,MAAM,GAAKb,MAAM,CAAjBa,MAAM;;MAEd;MACA,OAAO,IAAI,CAACd,GAAG,CAACe,YAAY,CAACC,UAAU,CAACC,oBAAoB,CAACzB,GAAG,CAACsB,MAAM,CAAC,CAAC;IAC3E;EAAC;IAAA;IAAA,OAED,uBAAc;MACZ;MACA,IAAI,CAACd,GAAG,CAACe,YAAY,CAACC,UAAU,CAACE,gBAAgB,CAACC,IAAI,EAAE;IAC1D;EAAC;IAAA;IAAA,OAED,2BAAkB;MAChB;MACA,IAAI,CAACnB,GAAG,CAACe,YAAY,CAACC,UAAU,CAACE,gBAAgB,CAACE,WAAW,EAAE;IACjE;EAAC;EAAA;AAAA;AAGH,eAAerB,aAAa"}
1
+ {"version":3,"names":["map","HF","HPU","LLCV","CMP1","CMP2","invertMap","HandlerManage","app","params","click","id","title","name","caseInstance","cameraPoi","closeHotmap","object","sceneControl","scene","getObjectByName","console","log","dispatchEvent","type","target","inspection","goToInspectionTarget","inspectionObject","stop","contineMove"],"sources":["../../../src/factory/unit/handle.ts"],"sourcesContent":["import { regionMap } from '../regionData'\nimport type Anov3D from '../../sdkEntry'\nimport type { BaseModule } from '../../utils/abstract'\n\nexport const map = {\n HF: 0.04,\n HPU: 0.15,\n LLCV: 0.24,\n CMP1: 0.40,\n CMP2: 0.68,\n}\n\nexport const invertMap = {\n 0.04: 'HF',\n 0.15: 'HPU',\n 0.24: 'LLCV',\n 0.40: 'CMP1',\n 0.68: 'CMP2',\n}\n\nclass HandlerManage implements BaseModule {\n app: Anov3D\n constructor(app: Anov3D) {\n this.app = app\n }\n\n clickPerson(params: any) {\n this.click(params.id)\n }\n\n clickBar(params: any) {\n this.click(params.title)\n }\n\n clickCamera(params: any) {\n this.click(params.name)\n }\n\n clickGasCancel() {\n // @ts-ignore\n this.app.caseInstance.cameraPoi.closeHotmap()\n }\n\n click(name) {\n // 根据名称动态获取Mesh对象\n const object = this.app.sceneControl.scene!.getObjectByName(name)\n\n // 触发事件\n if (object) {\n console.log('Mesh对象已找到!')\n // 手动调用Mesh对象上的点击事件处理函数\n object.dispatchEvent({ type: 'click' })\n }\n else {\n console.log('未找到Mesh对象!')\n }\n }\n\n setInspectTarget(params: { target: string }) {\n const { target } = params\n\n // @ts-ignore\n return this.app.caseInstance.inspection.goToInspectionTarget(map[target])\n }\n\n stopInspect() {\n // @ts-ignore\n this.app.caseInstance.inspection.inspectionObject.stop()\n }\n\n continueInspect() {\n // @ts-ignore\n this.app.caseInstance.inspection.inspectionObject.contineMove()\n }\n}\n\nexport default HandlerManage\n"],"mappings":";;;;;;;AAIA,OAAO,IAAMA,GAAG,GAAG;EACjBC,EAAE,EAAE,IAAI;EACRC,GAAG,EAAE,IAAI;EACTC,IAAI,EAAE,IAAI;EACVC,IAAI,EAAE,IAAI;EACVC,IAAI,EAAE;AACR,CAAC;AAED,OAAO,IAAMC,SAAS,GAAG;EACvB,IAAI,EAAE,IAAI;EACV,IAAI,EAAE,KAAK;EACX,IAAI,EAAE,MAAM;EACZ,IAAI,EAAE,MAAM;EACZ,IAAI,EAAE;AACR,CAAC;AAAA,IAEKC,aAAa;EAEjB,uBAAYC,GAAW,EAAE;IAAA;IAAA;IACvB,IAAI,CAACA,GAAG,GAAGA,GAAG;EAChB;EAAC;IAAA;IAAA,OAED,qBAAYC,MAAW,EAAE;MACvB,IAAI,CAACC,KAAK,CAACD,MAAM,CAACE,EAAE,CAAC;IACvB;EAAC;IAAA;IAAA,OAED,kBAASF,MAAW,EAAE;MACpB,IAAI,CAACC,KAAK,CAACD,MAAM,CAACG,KAAK,CAAC;IAC1B;EAAC;IAAA;IAAA,OAED,qBAAYH,MAAW,EAAE;MACvB,IAAI,CAACC,KAAK,CAACD,MAAM,CAACI,IAAI,CAAC;IACzB;EAAC;IAAA;IAAA,OAED,0BAAiB;MACf;MACA,IAAI,CAACL,GAAG,CAACM,YAAY,CAACC,SAAS,CAACC,WAAW,EAAE;IAC/C;EAAC;IAAA;IAAA,OAED,eAAMH,IAAI,EAAE;MACV;MACA,IAAMI,MAAM,GAAG,IAAI,CAACT,GAAG,CAACU,YAAY,CAACC,KAAK,CAAEC,eAAe,CAACP,IAAI,CAAC;;MAEjE;MACA,IAAII,MAAM,EAAE;QACVI,OAAO,CAACC,GAAG,CAAC,YAAY,CAAC;QACzB;QACAL,MAAM,CAACM,aAAa,CAAC;UAAEC,IAAI,EAAE;QAAQ,CAAC,CAAC;MACzC,CAAC,MACI;QACHH,OAAO,CAACC,GAAG,CAAC,YAAY,CAAC;MAC3B;IACF;EAAC;IAAA;IAAA,OAED,0BAAiBb,MAA0B,EAAE;MAC3C,IAAQgB,MAAM,GAAKhB,MAAM,CAAjBgB,MAAM;;MAEd;MACA,OAAO,IAAI,CAACjB,GAAG,CAACM,YAAY,CAACY,UAAU,CAACC,oBAAoB,CAAC3B,GAAG,CAACyB,MAAM,CAAC,CAAC;IAC3E;EAAC;IAAA;IAAA,OAED,uBAAc;MACZ;MACA,IAAI,CAACjB,GAAG,CAACM,YAAY,CAACY,UAAU,CAACE,gBAAgB,CAACC,IAAI,EAAE;IAC1D;EAAC;IAAA;IAAA,OAED,2BAAkB;MAChB;MACA,IAAI,CAACrB,GAAG,CAACM,YAAY,CAACY,UAAU,CAACE,gBAAgB,CAACE,WAAW,EAAE;IACjE;EAAC;EAAA;AAAA;AAGH,eAAevB,aAAa"}
@@ -1,8 +1,8 @@
1
1
  export declare const toggleTag: {
2
2
  Overview(): void;
3
3
  Person(): void;
4
- "smart-inspection"(): void;
5
- "security-operation"(): void;
4
+ Inspection(): void;
5
+ Maintenance(): void;
6
6
  };
7
7
  declare const handleUnit: () => void;
8
8
  export default handleUnit;
@@ -7,6 +7,7 @@ declare class InspectionObject {
7
7
  private tempLine;
8
8
  private isLock;
9
9
  private isAnimation;
10
+ walkCurveMesh: any;
10
11
  css2d: Css2DPoi;
11
12
  constructor(inspection: any);
12
13
  private loadModel;
@@ -8,13 +8,15 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
8
8
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
9
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
10
10
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
11
- import { Clock, EdgesGeometry, Group, LineBasicMaterial, LineCurve3, LineSegments, Matrix4, ModelLoader, Quaternion, Vector3, use, utils } from '@anov/3d-core';
11
+ import { Clock, Color, EdgesGeometry, Group, LineBasicMaterial, LineCurve3, LineSegments, Matrix4, Mesh, MeshBasicMaterial, ModelLoader, Quaternion, ShaderMaterial, TubeGeometry, Vector3, use, utils } from '@anov/3d-core';
12
12
  import { Css2DPoi, SpritePoi } from '@anov/3d-ability';
13
13
  import { Tween } from '@tweenjs/tween.js';
14
14
  import { createFinirMaterial } from "../../utils/finirMaterial";
15
15
  import { usePath } from "../../3d";
16
16
  import { MessageType, sendToMessage } from "../../../utils/messageFn";
17
17
  import { EMessageStatus } from "../../../messageStatus";
18
+ import fragmentShader from "../glsl/highway/fragmentShader";
19
+ import vertexShader from "../glsl/highway/vertexShader";
18
20
  import { isCheck, targetProgresspoints } from "./lineData";
19
21
  var modelLoader = new ModelLoader();
20
22
  var InspectionObject = /*#__PURE__*/function () {
@@ -26,6 +28,7 @@ var InspectionObject = /*#__PURE__*/function () {
26
28
  _defineProperty(this, "tempLine", void 0);
27
29
  _defineProperty(this, "isLock", false);
28
30
  _defineProperty(this, "isAnimation", false);
31
+ _defineProperty(this, "walkCurveMesh", void 0);
29
32
  _defineProperty(this, "css2d", void 0);
30
33
  _defineProperty(this, "startRotate", function (targetQuaternion, mesh, cb) {
31
34
  var clock = new Clock();
@@ -135,6 +138,7 @@ var InspectionObject = /*#__PURE__*/function () {
135
138
  value: function () {
136
139
  var _startMove = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(curve) {
137
140
  var _this2 = this;
141
+ var walkCurve, walkCurveMesh;
138
142
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
139
143
  while (1) switch (_context2.prev = _context2.next) {
140
144
  case 0:
@@ -145,13 +149,51 @@ var InspectionObject = /*#__PURE__*/function () {
145
149
  _context2.next = 3;
146
150
  return this.loadModel();
147
151
  case 3:
148
- this.control = utils.moveWithLine(this.model, curve, 10);
152
+ this.control = utils.moveWithLine(this.model, curve, 10, {
153
+ groundCurve: this.inspection.groundCurve
154
+ });
155
+ walkCurve = this.control.getWalkCurve();
149
156
  use.useframe(function () {
157
+ if (!_this2.inspection.isHide) {
158
+ walkCurve = _this2.control.getWalkCurve();
159
+ if (walkCurveMesh) {
160
+ if (walkCurve && walkCurve.points.length > 2) {
161
+ walkCurveMesh.removeFromParent();
162
+ walkCurveMesh.geometry.dispose();
163
+ walkCurveMesh.geometry = new TubeGeometry(walkCurve, 10000, 3, 2, false);
164
+ _this2.inspection.gobal.scene.add(walkCurveMesh);
165
+ } else {
166
+ walkCurveMesh.removeFromParent();
167
+ walkCurveMesh.geometry.dispose();
168
+ }
169
+ } else {
170
+ if (walkCurve.points.length > 2) {
171
+ var tube = new TubeGeometry(walkCurve, 10000, 3, 2, false);
172
+ walkCurveMesh = new Mesh(tube, new ShaderMaterial({
173
+ transparent: true,
174
+ uniforms: {
175
+ alpha: {
176
+ value: 0.9
177
+ }
178
+ },
179
+ vertexShader: vertexShader,
180
+ fragmentShader: fragmentShader
181
+ }));
182
+ _this2.walkCurveMesh = walkCurveMesh;
183
+ _this2.inspection.gobal.scene.add(walkCurveMesh);
184
+ }
185
+ }
186
+ } else {
187
+ if (walkCurveMesh) {
188
+ walkCurveMesh.removeFromParent();
189
+ walkCurveMesh.geometry.dispose();
190
+ }
191
+ }
150
192
  sendToMessage(MessageType.Event, 'onInspectProgress', EMessageStatus.Success, undefined, {
151
193
  percentage: _this2.getSportsProgress
152
194
  });
153
195
  });
154
- case 5:
196
+ case 6:
155
197
  case "end":
156
198
  return _context2.stop();
157
199
  }
@@ -229,6 +271,14 @@ var InspectionObject = /*#__PURE__*/function () {
229
271
  }, 500);
230
272
  return;
231
273
  }
274
+ var currentAnchor = this.inspection.anchorObject.get(targetProgresspoints[key].name);
275
+ currentAnchor.traverse(function (child) {
276
+ if (child.name === 'cylinder') child.material = new MeshBasicMaterial({
277
+ color: new Color('yellow')
278
+ });else child.material = new MeshBasicMaterial({
279
+ color: new Color('#facb2b')
280
+ });
281
+ });
232
282
  setTimeout(function () {
233
283
  var rotationMatrix = new Matrix4();
234
284
  var targetQuaternion = new Quaternion();
@@ -307,6 +357,13 @@ var InspectionObject = /*#__PURE__*/function () {
307
357
  backwardTween.onComplete(function () {
308
358
  _this3.isAnimation = false;
309
359
  _this3.contineMove();
360
+ currentAnchor.traverse(function (child) {
361
+ if (child.name === 'cylinder') child.material = new MeshBasicMaterial({
362
+ color: new Color('#cdccca')
363
+ });else child.material = new MeshBasicMaterial({
364
+ color: new Color('#fff')
365
+ });
366
+ });
310
367
  setTimeout(function () {
311
368
  _this3.isLock = false;
312
369
  }, 500);
@@ -1 +1 @@
1
- {"version":3,"names":["Clock","EdgesGeometry","Group","LineBasicMaterial","LineCurve3","LineSegments","Matrix4","ModelLoader","Quaternion","Vector3","use","utils","Css2DPoi","SpritePoi","Tween","createFinirMaterial","usePath","MessageType","sendToMessage","EMessageStatus","isCheck","targetProgresspoints","modelLoader","InspectionObject","inspection","targetQuaternion","mesh","cb","clock","quaternion","equals","animation","useframe","delta","getDelta","step","rotateTowards","loadGLTF","glb","div","document","createElement","style","position","img","src","span","innerText","top","left","transform","color","fontSize","fontWeight","appendChild","poi","width","height","img2","css2d","set","visible","scale","fly1","scene","getObjectByName","fly2","fly3","fly4","copy","clone","add","rotation","z","getSportsProgress","isLock","stop","checkAnimation","group","minCamera","y","rotateY","Math","PI","model","traverse","child","layers","enable","gobal","curve","loadModel","control","moveWithLine","Event","Success","undefined","percentage","getProgress","targetMesh","updateMatrixWorld","localForward","worldForward","applyQuaternion","normalize","target","direction","sub","setFromUnitVectors","dotProduct","dot","angleRadians","acos","angleDegrees","flipQuaternion","setFromAxisAngle","multiply","lastFromPositin","currentPositin","targetPosition","vTo","vFrom","Promise","resolve","emitter","on","data","progress","isAnimation","key","Object","keys","find","p","num","parseFloat","targetMeshId","lookAt","pipeline","realModl","contineMove","setTimeout","rotationMatrix","startQuaternion","up","setFromRotationMatrix","forwardTween","t","to","onUpdate","obj","slerp","backwardTween","onComplete","finirMesh","name","Number","finirMaterialV2","type","material","lineSegments","geometry","subscription","then","start","off","currentPosition","targetProgress","startRotate","upCurve","x","upControl","loop","lookat","addEventListener","tempCurve","generateTempPath","tempControl","lastPosition","downCurve","downControl","rotationMatrix2","targetQuaternion2","targetPosition2","getPointAt","setProgress","contine","speed","setSpeed","emit"],"sources":["../../../../src/factory/unit/inspection/InspectionObject.ts"],"sourcesContent":["import type { Camera, Mesh, ShaderMaterial } from '@anov/3d-core'\nimport { BoxGeometry, Clock, Color, EdgesGeometry, Group, LineBasicMaterial, LineCurve3, LineSegments, Matrix4, MeshBasicMaterial, ModelLoader, Quaternion, Vector3, use, utils } from '@anov/3d-core'\nimport { Css2DPoi, SpritePoi, addColorifyPass, createHighSelectedTool } from '@anov/3d-ability'\nimport { Tween } from '@tweenjs/tween.js'\nimport { createFinirMaterial } from '../../utils/finirMaterial'\nimport { usePath } from '../../3d'\nimport { MessageType, sendToMessage } from '../../../utils/messageFn'\nimport { EMessageStatus } from '../../../messageStatus'\nimport { invertMap } from '../handle'\nimport { isCheck, targetProgresspoints } from './lineData'\n\nconst modelLoader = new ModelLoader()\n\nclass InspectionObject {\n model\n private inspection\n private control\n private tempLine\n private isLock = false\n private isAnimation = false\n css2d: Css2DPoi\n\n constructor(inspection) {\n this.inspection = inspection\n }\n\n private async loadModel() {\n const glb = await (await modelLoader.loadGLTF(`${usePath}car.glb`, false, true, './draco/'))\n\n const div = document.createElement('div')\n div.style.position = 'relative'\n\n const img = document.createElement('img')\n img.src = `${usePath}aerialVehicle02.png`\n\n const span = document.createElement('span')\n span.innerText = '巡检无人机'\n span.style.position = 'absolute'\n span.style.top = '10px'\n span.style.left = '50%'\n span.style.transform = 'translateX(-30%)'\n\n span.style.color = 'white'\n span.style.fontSize = '20px'\n span.style.fontWeight = 'bold'\n\n div.appendChild(img)\n div.appendChild(span)\n\n const poi = new SpritePoi(div, {\n width: 100 * 2,\n height: 40 * 2,\n })\n\n const img2 = document.createElement('img')\n img2.src = `${usePath}aerialVehicle01.png`\n const css2d = new Css2DPoi(img2)\n\n css2d.position.set(0, 0, 0)\n css2d.visible = false\n\n poi.scale.set(100, 40, 1)\n\n const fly1 = glb.scene.getObjectByName('fly1')\n const fly2 = glb.scene.getObjectByName('fly1_1')\n const fly3 = glb.scene.getObjectByName('fly1_2')\n const fly4 = glb.scene.getObjectByName('fly1_3')\n\n use.useframe(() => {\n poi.position.copy(glb.scene.position.clone().add(new Vector3(0, 10, 0)))\n\n fly1.rotation.z += 1.3\n fly2.rotation.z += 1.3\n fly3.rotation.z += 1.3\n fly4.rotation.z += 1.3\n\n if (isCheck(this.getSportsProgress)\n && !this.isLock) {\n this.stop()\n this.checkAnimation(this.getSportsProgress)\n }\n })\n\n // const box = new Mesh(new BoxGeometry(10, 10, 10), new MeshBasicMaterial({ color: 0xFF0000 }))\n\n const group = new Group()\n group.add(glb.scene)\n group.add(poi)\n group.add(this.inspection.minCamera)\n\n // box.scale.set(0.1, 0.1, 0.1)\n\n this.inspection.minCamera.position.copy(glb.scene.position)\n this.inspection.minCamera.position.z -= 5\n this.inspection.minCamera.position.y += 5\n this.inspection.minCamera.rotateY(Math.PI)\n\n this.model = group\n\n glb.scene.scale.set(5, 5, 5)\n\n glb.scene.traverse((child) => {\n child.layers.enable(2)\n })\n\n this.inspection.gobal.scene.add(this.model)\n this.inspection.gobal.scene.add(css2d)\n }\n\n async startMove(curve) {\n if (!this.model)\n await this.loadModel()\n\n this.control = utils.moveWithLine(this.model, curve, 10)\n\n use.useframe(() => {\n sendToMessage(MessageType.Event, 'onInspectProgress', EMessageStatus.Success, undefined, {\n percentage: this.getSportsProgress,\n })\n })\n }\n\n get getSportsProgress() {\n if (!this.control)\n return 0\n\n return this.control.getProgress()\n }\n\n private getTargetQuaternion(targetMesh: Group) {\n targetMesh.updateMatrixWorld(true)\n const localForward = new Vector3(0, 0, -1)\n const worldForward = localForward.applyQuaternion(targetMesh.quaternion.clone()).normalize()\n\n const target = targetMesh.position.clone()\n const direction = target.sub(this.model.position).normalize()\n\n const targetQuaternion = new Quaternion().setFromUnitVectors(worldForward, direction)\n\n const dotProduct = worldForward.dot(direction)\n const angleRadians = Math.acos(dotProduct)\n const angleDegrees = angleRadians * (180 / Math.PI)\n\n // todo: some problem\n if (angleDegrees < 60) {\n const flipQuaternion = new Quaternion()\n flipQuaternion.setFromAxisAngle(new Vector3(0, 1, 0), Math.PI)\n targetQuaternion.multiply(flipQuaternion)\n }\n }\n\n private getTargetQuaternionV2(lastFromPositin: Vector3, currentPositin: Vector3, targetPosition: Vector3) {\n const vTo = targetPosition.clone().sub(currentPositin).normalize()\n const vFrom = currentPositin.clone().sub(lastFromPositin).normalize()\n\n const targetQuaternion = new Quaternion().setFromUnitVectors(vFrom, vTo)\n\n const flipQuaternion = new Quaternion()\n flipQuaternion.setFromAxisAngle(new Vector3(0, 1, 0), Math.PI)\n targetQuaternion.multiply(flipQuaternion)\n\n return targetQuaternion\n }\n\n subscription() {\n return new Promise((resolve) => {\n utils.emitter.on('continue', (data) => {\n resolve(data)\n })\n })\n }\n\n private checkAnimation(progress: number) {\n this.isLock = true\n this.isAnimation = true\n\n const key = Object.keys(targetProgresspoints).find((p) => {\n const num = parseFloat(p)\n if (progress >= num && progress < num + 0.01)\n return true\n })\n\n const targetMeshId = targetProgresspoints[key].lookAt\n\n let targetMesh: Group | null = null\n\n if (targetMeshId === 'GY_GD_guandaofamen_5')\n targetMesh = this.inspection.gobal.pipeline.getObjectByName(targetMeshId) as Group\n\n else\n targetMesh = this.inspection.gobal.realModl.getObjectByName(targetMeshId) as Group\n\n if (!targetMesh) {\n this.contineMove()\n this.isAnimation = false\n setTimeout(() => {\n this.isLock = false\n }, 500)\n return\n }\n\n setTimeout(() => {\n const rotationMatrix = new Matrix4()\n\n const targetQuaternion = new Quaternion()\n const startQuaternion = this.model.quaternion.clone()\n\n rotationMatrix.lookAt(targetMesh.position, this.model.position, this.model.up)\n targetQuaternion.setFromRotationMatrix(rotationMatrix)\n\n const forwardTween = new Tween({ t: 0 })\n .to({ t: 1 }, 2000)\n .onUpdate((obj) => {\n this.model.quaternion.copy(startQuaternion).slerp(targetQuaternion, obj.t)\n })\n\n const backwardTween = new Tween({ t: 1 })\n .to({ t: 0 }, 2000)\n .onUpdate((obj) => {\n this.model.quaternion.copy(startQuaternion).slerp(targetQuaternion, obj.t)\n })\n\n forwardTween.onComplete(() => {\n let finirMesh: Group | null = null\n\n sendToMessage(MessageType.Event, 'onReachTarget', EMessageStatus.Success, undefined, {\n target: targetProgresspoints[key].name,\n })\n\n if (Number(key) === 0.04 || Number(key) === 0.68)\n (this.inspection.minCamera as Camera).layers.set(2)\n\n if (Number(key) === 0.15 || Number(key) === 0.24 || Number(key) === 0.40) {\n (this.inspection.minCamera as Camera).layers.enable(3)\n // @ts-ignore\n if (!targetMesh.finirMesh) {\n finirMesh = targetMesh.clone() as any as Group\n\n const finirMaterialV2 = createFinirMaterial('yellow', 5.3)\n\n finirMesh.traverse((child) => {\n child.layers.set(3)\n\n if (child.type === 'Mesh') {\n // @ts-ignore\n child.material = finirMaterialV2\n\n // @ts-ignore\n const lineSegments = new LineSegments(new EdgesGeometry(child.geometry as any), new LineBasicMaterial({ color: 'yellow' }))\n\n lineSegments.layers.set(3)\n finirMesh.add(lineSegments)\n }\n })\n\n // @ts-ignore\n targetMesh.finirMesh = finirMesh\n\n this.inspection.gobal.scene.add(finirMesh)\n }\n else {\n // @ts-ignore\n finirMesh = targetMesh.finirMesh\n\n finirMesh.visible = true\n }\n }\n\n if (Number(key) === 0.15 || Number(key) === 0.24) {\n this.subscription().then((data) => {\n if (data) {\n finirMesh.visible = false\n backwardTween.start()\n\n utils.emitter.off('continue')\n }\n })\n }\n else {\n setTimeout(() => {\n if (Number(key) === 0.04 || Number(key) === 0.68)\n (this.inspection.minCamera as Camera).layers.set(0)\n\n if (Number(key) === 0.40)\n finirMesh.visible = false\n\n backwardTween.start()\n }, 6000)\n }\n })\n\n setTimeout(() => {\n forwardTween.start()\n }, 1000)\n\n backwardTween.onComplete(() => {\n this.isAnimation = false\n this.contineMove()\n\n setTimeout(() => {\n this.isLock = false\n }, 500)\n })\n }, 1000)\n }\n\n generateTempPath(currentPosition: Vector3, targetPosition: Vector3) {\n return new LineCurve3(currentPosition, targetPosition)\n }\n\n private startRotate = (targetQuaternion: Quaternion, mesh: Group, cb: () => void) => {\n const clock = new Clock()\n\n if (mesh.quaternion.equals(targetQuaternion))\n return cb()\n\n const animation = use.useframe(() => {\n const delta = clock.getDelta()\n if (!mesh.quaternion.equals(targetQuaternion)) {\n const step = 1 * delta\n mesh.quaternion.rotateTowards(targetQuaternion, step)\n }\n else {\n animation()\n cb()\n }\n },\n )\n }\n\n gotoTarget(targetPosition: Vector3, targetProgress: number) {\n if (this.isAnimation)\n return\n\n this.isAnimation = true\n\n this.control.stop()\n\n const rotationMatrix = new Matrix4()\n const targetQuaternion = new Quaternion()\n\n rotationMatrix.lookAt(targetPosition, this.model.position, this.model.up)\n targetQuaternion.setFromRotationMatrix(rotationMatrix)\n\n this.startRotate(targetQuaternion, this.model,\n () => {\n const currentPosition = this.model.position\n const upCurve = new LineCurve3(currentPosition, new Vector3(currentPosition.x, currentPosition.y + 100, currentPosition.z))\n const upControl = utils.moveWithLine(this.model, upCurve, 10, { loop: false, lookat: targetPosition })\n\n upControl.addEventListener('end', () => {\n const tempCurve = this.generateTempPath(currentPosition, new Vector3(targetPosition.x, targetPosition.y + 100, targetPosition.z))\n const tempControl = utils.moveWithLine(this.model, tempCurve, 50, { loop: false, lookat: false })\n\n tempControl.addEventListener('end', () => {\n const lastPosition = this.model.position\n const downCurve = new LineCurve3(lastPosition, new Vector3(lastPosition.x, lastPosition.y - 100, lastPosition.z))\n const downControl = utils.moveWithLine(this.model, downCurve, 10, { loop: false, lookat: false })\n\n downControl.addEventListener('end', () => {\n const rotationMatrix2 = new Matrix4()\n const targetQuaternion2 = new Quaternion()\n\n const targetPosition2 = this.inspection.curve.getPointAt((targetProgress + 0.01) % 1)\n\n rotationMatrix2.lookAt(targetPosition2, this.model.position, this.model.up)\n targetQuaternion2.setFromRotationMatrix(rotationMatrix2)\n\n this.startRotate(targetQuaternion2, this.model, () => {\n setTimeout(() => {\n this.isAnimation = false\n this.control.setProgress(targetProgress)\n this.control.contine()\n }, 500)\n })\n })\n })\n })\n })\n }\n\n setSpeed(speed: number) {\n if (this.control)\n this.control.setSpeed(speed)\n }\n\n stop() {\n if (this.control)\n this.control.stop()\n }\n\n contineMove() {\n if (this.control)\n this.control.contine()\n\n utils.emitter.emit('continue', true)\n }\n\n dispose() { }\n}\n\nexport default InspectionObject"],"mappings":"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"}
1
+ {"version":3,"names":["Clock","Color","EdgesGeometry","Group","LineBasicMaterial","LineCurve3","LineSegments","Matrix4","Mesh","MeshBasicMaterial","ModelLoader","Quaternion","ShaderMaterial","TubeGeometry","Vector3","use","utils","Css2DPoi","SpritePoi","Tween","createFinirMaterial","usePath","MessageType","sendToMessage","EMessageStatus","fragmentShader","vertexShader","isCheck","targetProgresspoints","modelLoader","InspectionObject","inspection","targetQuaternion","mesh","cb","clock","quaternion","equals","animation","useframe","delta","getDelta","step","rotateTowards","loadGLTF","glb","div","document","createElement","style","position","img","src","span","innerText","top","left","transform","color","fontSize","fontWeight","appendChild","poi","width","height","img2","css2d","set","visible","scale","fly1","scene","getObjectByName","fly2","fly3","fly4","copy","clone","add","rotation","z","getSportsProgress","isLock","stop","checkAnimation","group","minCamera","y","rotateY","Math","PI","model","traverse","child","layers","enable","gobal","curve","loadModel","control","moveWithLine","groundCurve","walkCurve","getWalkCurve","isHide","walkCurveMesh","points","length","removeFromParent","geometry","dispose","tube","transparent","uniforms","alpha","value","Event","Success","undefined","percentage","getProgress","targetMesh","updateMatrixWorld","localForward","worldForward","applyQuaternion","normalize","target","direction","sub","setFromUnitVectors","dotProduct","dot","angleRadians","acos","angleDegrees","flipQuaternion","setFromAxisAngle","multiply","lastFromPositin","currentPositin","targetPosition","vTo","vFrom","Promise","resolve","emitter","on","data","progress","isAnimation","key","Object","keys","find","p","num","parseFloat","targetMeshId","lookAt","pipeline","realModl","contineMove","setTimeout","currentAnchor","anchorObject","get","name","material","rotationMatrix","startQuaternion","up","setFromRotationMatrix","forwardTween","t","to","onUpdate","obj","slerp","backwardTween","onComplete","finirMesh","Number","finirMaterialV2","type","lineSegments","subscription","then","start","off","currentPosition","targetProgress","startRotate","upCurve","x","upControl","loop","lookat","addEventListener","tempCurve","generateTempPath","tempControl","lastPosition","downCurve","downControl","rotationMatrix2","targetQuaternion2","targetPosition2","getPointAt","setProgress","contine","speed","setSpeed","emit"],"sources":["../../../../src/factory/unit/inspection/InspectionObject.ts"],"sourcesContent":["import type { Camera } from '@anov/3d-core'\nimport { BoxGeometry, Clock, Color, EdgesGeometry, Group, LineBasicMaterial, LineCurve3, LineSegments, Matrix4, Mesh, MeshBasicMaterial, ModelLoader, Quaternion, ShaderChunk, ShaderMaterial, TubeGeometry, Vector3, use, utils } from '@anov/3d-core'\nimport { Css2DPoi, SpritePoi, addColorifyPass, createHighSelectedTool } from '@anov/3d-ability'\nimport { Tween } from '@tweenjs/tween.js'\nimport { createFinirMaterial } from '../../utils/finirMaterial'\nimport { usePath } from '../../3d'\nimport { MessageType, sendToMessage } from '../../../utils/messageFn'\nimport { EMessageStatus } from '../../../messageStatus'\nimport { invertMap } from '../handle'\nimport fragmentShader from '../glsl/highway/fragmentShader'\nimport vertexShader from '../glsl/highway/vertexShader'\nimport { isCheck, targetProgresspoints } from './lineData'\n\nconst modelLoader = new ModelLoader()\n\nclass InspectionObject {\n model\n private inspection\n private control\n private tempLine\n private isLock = false\n private isAnimation = false\n walkCurveMesh\n css2d: Css2DPoi\n\n constructor(inspection) {\n this.inspection = inspection\n }\n\n private async loadModel() {\n const glb = await (await modelLoader.loadGLTF(`${usePath}car.glb`, false, true, './draco/'))\n\n const div = document.createElement('div')\n div.style.position = 'relative'\n\n const img = document.createElement('img')\n img.src = `${usePath}aerialVehicle02.png`\n\n const span = document.createElement('span')\n span.innerText = '巡检无人机'\n span.style.position = 'absolute'\n span.style.top = '10px'\n span.style.left = '50%'\n span.style.transform = 'translateX(-30%)'\n\n span.style.color = 'white'\n span.style.fontSize = '20px'\n span.style.fontWeight = 'bold'\n\n div.appendChild(img)\n div.appendChild(span)\n\n const poi = new SpritePoi(div, {\n width: 100 * 2,\n height: 40 * 2,\n })\n\n const img2 = document.createElement('img')\n img2.src = `${usePath}aerialVehicle01.png`\n const css2d = new Css2DPoi(img2)\n\n css2d.position.set(0, 0, 0)\n css2d.visible = false\n\n poi.scale.set(100, 40, 1)\n\n const fly1 = glb.scene.getObjectByName('fly1')\n const fly2 = glb.scene.getObjectByName('fly1_1')\n const fly3 = glb.scene.getObjectByName('fly1_2')\n const fly4 = glb.scene.getObjectByName('fly1_3')\n\n use.useframe(() => {\n poi.position.copy(glb.scene.position.clone().add(new Vector3(0, 10, 0)))\n\n fly1.rotation.z += 1.3\n fly2.rotation.z += 1.3\n fly3.rotation.z += 1.3\n fly4.rotation.z += 1.3\n\n if (isCheck(this.getSportsProgress)\n && !this.isLock) {\n this.stop()\n this.checkAnimation(this.getSportsProgress)\n }\n })\n\n // const box = new Mesh(new BoxGeometry(10, 10, 10), new MeshBasicMaterial({ color: 0xFF0000 }))\n\n const group = new Group()\n group.add(glb.scene)\n group.add(poi)\n group.add(this.inspection.minCamera)\n\n // box.scale.set(0.1, 0.1, 0.1)\n\n this.inspection.minCamera.position.copy(glb.scene.position)\n this.inspection.minCamera.position.z -= 5\n this.inspection.minCamera.position.y += 5\n this.inspection.minCamera.rotateY(Math.PI)\n\n this.model = group\n\n glb.scene.scale.set(5, 5, 5)\n\n glb.scene.traverse((child) => {\n child.layers.enable(2)\n })\n\n this.inspection.gobal.scene.add(this.model)\n this.inspection.gobal.scene.add(css2d)\n }\n\n async startMove(curve) {\n if (!this.model)\n await this.loadModel()\n\n this.control = utils.moveWithLine(this.model, curve, 10, {\n groundCurve: this.inspection.groundCurve,\n })\n\n let walkCurve = this.control.getWalkCurve()\n let walkCurveMesh\n\n use.useframe(() => {\n if (!this.inspection.isHide) {\n walkCurve = this.control.getWalkCurve()\n\n if (walkCurveMesh) {\n if (walkCurve && walkCurve.points.length > 2) {\n walkCurveMesh.removeFromParent()\n walkCurveMesh.geometry.dispose()\n walkCurveMesh.geometry = new TubeGeometry(walkCurve, 10000, 3, 2, false)\n this.inspection.gobal.scene.add(walkCurveMesh)\n }\n else {\n walkCurveMesh.removeFromParent()\n walkCurveMesh.geometry.dispose()\n }\n }\n else {\n if (walkCurve.points.length > 2) {\n const tube = new TubeGeometry(walkCurve, 10000, 3, 2, false)\n walkCurveMesh = new Mesh(tube, new ShaderMaterial({\n transparent: true,\n uniforms: {\n alpha: {\n value: 0.9,\n },\n },\n vertexShader,\n fragmentShader,\n }))\n this.walkCurveMesh = walkCurveMesh\n this.inspection.gobal.scene.add(walkCurveMesh)\n }\n }\n }\n else {\n if (walkCurveMesh) {\n walkCurveMesh.removeFromParent()\n walkCurveMesh.geometry.dispose()\n }\n }\n\n sendToMessage(MessageType.Event, 'onInspectProgress', EMessageStatus.Success, undefined, {\n percentage: this.getSportsProgress,\n })\n })\n }\n\n get getSportsProgress() {\n if (!this.control)\n return 0\n\n return this.control.getProgress()\n }\n\n private getTargetQuaternion(targetMesh: Group) {\n targetMesh.updateMatrixWorld(true)\n const localForward = new Vector3(0, 0, -1)\n const worldForward = localForward.applyQuaternion(targetMesh.quaternion.clone()).normalize()\n\n const target = targetMesh.position.clone()\n const direction = target.sub(this.model.position).normalize()\n\n const targetQuaternion = new Quaternion().setFromUnitVectors(worldForward, direction)\n\n const dotProduct = worldForward.dot(direction)\n const angleRadians = Math.acos(dotProduct)\n const angleDegrees = angleRadians * (180 / Math.PI)\n\n // todo: some problem\n if (angleDegrees < 60) {\n const flipQuaternion = new Quaternion()\n flipQuaternion.setFromAxisAngle(new Vector3(0, 1, 0), Math.PI)\n targetQuaternion.multiply(flipQuaternion)\n }\n }\n\n private getTargetQuaternionV2(lastFromPositin: Vector3, currentPositin: Vector3, targetPosition: Vector3) {\n const vTo = targetPosition.clone().sub(currentPositin).normalize()\n const vFrom = currentPositin.clone().sub(lastFromPositin).normalize()\n\n const targetQuaternion = new Quaternion().setFromUnitVectors(vFrom, vTo)\n\n const flipQuaternion = new Quaternion()\n flipQuaternion.setFromAxisAngle(new Vector3(0, 1, 0), Math.PI)\n targetQuaternion.multiply(flipQuaternion)\n\n return targetQuaternion\n }\n\n subscription() {\n return new Promise((resolve) => {\n utils.emitter.on('continue', (data) => {\n resolve(data)\n })\n })\n }\n\n private checkAnimation(progress: number) {\n this.isLock = true\n this.isAnimation = true\n\n const key = Object.keys(targetProgresspoints).find((p) => {\n const num = parseFloat(p)\n if (progress >= num && progress < num + 0.01)\n return true\n })\n\n const targetMeshId = targetProgresspoints[key].lookAt\n\n let targetMesh: Group | null = null\n\n if (targetMeshId === 'GY_GD_guandaofamen_5')\n targetMesh = this.inspection.gobal.pipeline.getObjectByName(targetMeshId) as Group\n\n else\n targetMesh = this.inspection.gobal.realModl.getObjectByName(targetMeshId) as Group\n\n if (!targetMesh) {\n this.contineMove()\n this.isAnimation = false\n setTimeout(() => {\n this.isLock = false\n }, 500)\n return\n }\n\n const currentAnchor = this.inspection.anchorObject.get(targetProgresspoints[key].name)\n\n currentAnchor.traverse((child) => {\n if (child.name === 'cylinder')\n child.material = new MeshBasicMaterial({ color: new Color('yellow') })\n else\n child.material = new MeshBasicMaterial({ color: new Color('#facb2b') })\n })\n\n setTimeout(() => {\n const rotationMatrix = new Matrix4()\n\n const targetQuaternion = new Quaternion()\n const startQuaternion = this.model.quaternion.clone()\n\n rotationMatrix.lookAt(targetMesh.position, this.model.position, this.model.up)\n targetQuaternion.setFromRotationMatrix(rotationMatrix)\n\n const forwardTween = new Tween({ t: 0 })\n .to({ t: 1 }, 2000)\n .onUpdate((obj) => {\n this.model.quaternion.copy(startQuaternion).slerp(targetQuaternion, obj.t)\n })\n\n const backwardTween = new Tween({ t: 1 })\n .to({ t: 0 }, 2000)\n .onUpdate((obj) => {\n this.model.quaternion.copy(startQuaternion).slerp(targetQuaternion, obj.t)\n })\n\n forwardTween.onComplete(() => {\n let finirMesh: Group | null = null\n\n sendToMessage(MessageType.Event, 'onReachTarget', EMessageStatus.Success, undefined, {\n target: targetProgresspoints[key].name,\n })\n\n if (Number(key) === 0.04 || Number(key) === 0.68)\n (this.inspection.minCamera as Camera).layers.set(2)\n\n if (Number(key) === 0.15 || Number(key) === 0.24 || Number(key) === 0.40) {\n (this.inspection.minCamera as Camera).layers.enable(3)\n // @ts-ignore\n if (!targetMesh.finirMesh) {\n finirMesh = targetMesh.clone() as any as Group\n\n const finirMaterialV2 = createFinirMaterial('yellow', 5.3)\n\n finirMesh.traverse((child) => {\n child.layers.set(3)\n\n if (child.type === 'Mesh') {\n // @ts-ignore\n child.material = finirMaterialV2\n\n // @ts-ignore\n const lineSegments = new LineSegments(new EdgesGeometry(child.geometry as any), new LineBasicMaterial({ color: 'yellow' }))\n\n lineSegments.layers.set(3)\n finirMesh.add(lineSegments)\n }\n })\n\n // @ts-ignore\n targetMesh.finirMesh = finirMesh\n\n this.inspection.gobal.scene.add(finirMesh)\n }\n else {\n // @ts-ignore\n finirMesh = targetMesh.finirMesh\n\n finirMesh.visible = true\n }\n }\n\n if (Number(key) === 0.15 || Number(key) === 0.24) {\n this.subscription().then((data) => {\n if (data) {\n finirMesh.visible = false\n backwardTween.start()\n\n utils.emitter.off('continue')\n }\n })\n }\n else {\n setTimeout(() => {\n if (Number(key) === 0.04 || Number(key) === 0.68)\n (this.inspection.minCamera as Camera).layers.set(0)\n\n if (Number(key) === 0.40)\n finirMesh.visible = false\n\n backwardTween.start()\n }, 6000)\n }\n })\n\n setTimeout(() => {\n forwardTween.start()\n }, 1000)\n\n backwardTween.onComplete(() => {\n this.isAnimation = false\n this.contineMove()\n\n currentAnchor.traverse((child) => {\n if (child.name === 'cylinder')\n child.material = new MeshBasicMaterial({ color: new Color('#cdccca') })\n else\n child.material = new MeshBasicMaterial({ color: new Color('#fff') })\n })\n\n setTimeout(() => {\n this.isLock = false\n }, 500)\n })\n }, 1000)\n }\n\n generateTempPath(currentPosition: Vector3, targetPosition: Vector3) {\n return new LineCurve3(currentPosition, targetPosition)\n }\n\n private startRotate = (targetQuaternion: Quaternion, mesh: Group, cb: () => void) => {\n const clock = new Clock()\n\n if (mesh.quaternion.equals(targetQuaternion))\n return cb()\n\n const animation = use.useframe(() => {\n const delta = clock.getDelta()\n if (!mesh.quaternion.equals(targetQuaternion)) {\n const step = 1 * delta\n mesh.quaternion.rotateTowards(targetQuaternion, step)\n }\n else {\n animation()\n cb()\n }\n },\n )\n }\n\n gotoTarget(targetPosition: Vector3, targetProgress: number) {\n if (this.isAnimation)\n return\n\n this.isAnimation = true\n\n this.control.stop()\n\n const rotationMatrix = new Matrix4()\n const targetQuaternion = new Quaternion()\n\n rotationMatrix.lookAt(targetPosition, this.model.position, this.model.up)\n targetQuaternion.setFromRotationMatrix(rotationMatrix)\n\n this.startRotate(targetQuaternion, this.model,\n () => {\n const currentPosition = this.model.position\n const upCurve = new LineCurve3(currentPosition, new Vector3(currentPosition.x, currentPosition.y + 100, currentPosition.z))\n const upControl = utils.moveWithLine(this.model, upCurve, 10, { loop: false, lookat: targetPosition })\n\n upControl.addEventListener('end', () => {\n const tempCurve = this.generateTempPath(currentPosition, new Vector3(targetPosition.x, targetPosition.y + 100, targetPosition.z))\n const tempControl = utils.moveWithLine(this.model, tempCurve, 50, { loop: false, lookat: false })\n\n tempControl.addEventListener('end', () => {\n const lastPosition = this.model.position\n const downCurve = new LineCurve3(lastPosition, new Vector3(lastPosition.x, lastPosition.y - 100, lastPosition.z))\n const downControl = utils.moveWithLine(this.model, downCurve, 10, { loop: false, lookat: false })\n\n downControl.addEventListener('end', () => {\n const rotationMatrix2 = new Matrix4()\n const targetQuaternion2 = new Quaternion()\n\n const targetPosition2 = this.inspection.curve.getPointAt((targetProgress + 0.01) % 1)\n\n rotationMatrix2.lookAt(targetPosition2, this.model.position, this.model.up)\n targetQuaternion2.setFromRotationMatrix(rotationMatrix2)\n\n this.startRotate(targetQuaternion2, this.model, () => {\n setTimeout(() => {\n this.isAnimation = false\n this.control.setProgress(targetProgress)\n this.control.contine()\n }, 500)\n })\n })\n })\n })\n })\n }\n\n setSpeed(speed: number) {\n if (this.control)\n this.control.setSpeed(speed)\n }\n\n stop() {\n if (this.control)\n this.control.stop()\n }\n\n contineMove() {\n if (this.control)\n this.control.contine()\n\n utils.emitter.emit('continue', true)\n }\n\n dispose() { }\n}\n\nexport default InspectionObject"],"mappings":"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"}
@@ -1,12 +1,16 @@
1
1
  import type { Object3D } from '@anov/3d-core';
2
- import { PerspectiveCamera } from '@anov/3d-core';
2
+ import { Group, PerspectiveCamera } from '@anov/3d-core';
3
3
  import type Factory3D from '../../3d';
4
4
  declare class Inspection {
5
- private gobal;
5
+ gobal: Factory3D;
6
6
  inspectionObject: any;
7
- private curve;
8
- private line;
9
- private viewElement;
7
+ curve: any;
8
+ groundCurve: any;
9
+ line: Group;
10
+ viewElement: HTMLDivElement;
11
+ isHide: boolean;
12
+ anchorObject: Map<string, Group>;
13
+ anchorGroup: Group;
10
14
  minCamera: PerspectiveCamera;
11
15
  InspectionPathObject: Object3D;
12
16
  constructor(gobal: Factory3D);
@@ -19,6 +23,7 @@ declare class Inspection {
19
23
  * make ground road
20
24
  */
21
25
  private makeGroundRoad;
26
+ private anchorMesh;
22
27
  private setInspectionCamera;
23
28
  get getPathLength(): any;
24
29
  startInspection(line: any): void;
@@ -5,10 +5,12 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
5
5
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
7
7
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
8
- import { Group, Mesh, MeshBasicMaterial, MirroredRepeatWrapping, PerspectiveCamera, RepeatWrapping, TextureLoader, TubeGeometry, use } from '@anov/3d-core';
8
+ import { Color, CylinderGeometry, Group, Mesh, MeshBasicMaterial, MirroredRepeatWrapping, PerspectiveCamera, RepeatWrapping, ShaderMaterial, TextureLoader, TubeGeometry, use } from '@anov/3d-core';
9
9
  import { RoundLineGeometry, initPostEffects } from '@anov/3d-ability';
10
10
  import { usePath } from "../../3d";
11
- import { flyLinePoints, groundLinePoints } from "./lineData";
11
+ import fragmentShader from "../glsl/highway/fragmentShader";
12
+ import vertexShader from "../glsl/highway/vertexShader";
13
+ import { flyLinePoints, groundLinePoints, targetProgresspoints } from "./lineData";
12
14
  import InspectionObject from "./InspectionObject";
13
15
  var Inspection = /*#__PURE__*/function () {
14
16
  function Inspection(gobal) {
@@ -17,8 +19,12 @@ var Inspection = /*#__PURE__*/function () {
17
19
  _defineProperty(this, "gobal", void 0);
18
20
  _defineProperty(this, "inspectionObject", void 0);
19
21
  _defineProperty(this, "curve", void 0);
22
+ _defineProperty(this, "groundCurve", void 0);
20
23
  _defineProperty(this, "line", void 0);
21
24
  _defineProperty(this, "viewElement", void 0);
25
+ _defineProperty(this, "isHide", true);
26
+ _defineProperty(this, "anchorObject", new Map());
27
+ _defineProperty(this, "anchorGroup", void 0);
22
28
  _defineProperty(this, "minCamera", void 0);
23
29
  _defineProperty(this, "InspectionPathObject", void 0);
24
30
  this.gobal = gobal;
@@ -69,24 +75,49 @@ var Inspection = /*#__PURE__*/function () {
69
75
  texture.wrapS = RepeatWrapping;
70
76
  texture.wrapT = MirroredRepeatWrapping;
71
77
  texture.repeat.set(1, 2);
72
- var tube = new TubeGeometry(groundLine.curve, 10000, 6, 2, false);
73
- var mesh = new Mesh(tube, new MeshBasicMaterial({
74
- side: 2,
75
- map: texture,
76
- transparent: true
77
- }));
78
- var mesh2 = new Mesh(tube, new MeshBasicMaterial({
79
- side: 2
78
+ var tube = new TubeGeometry(groundLine.curve, 10000, 4, 2, false);
79
+ var mesh2 = new Mesh(tube, new ShaderMaterial({
80
+ transparent: true,
81
+ uniforms: {
82
+ alpha: {
83
+ value: 0.2
84
+ }
85
+ },
86
+ vertexShader: vertexShader,
87
+ fragmentShader: fragmentShader
80
88
  }));
81
89
  var groundGroup = new Group();
82
90
  groundGroup.add(mesh2);
83
- groundGroup.add(mesh);
84
91
  groundGroup.position.y = 3;
92
+ this.groundCurve = groundLine.curve;
85
93
  this.line = groundGroup;
86
94
  this.gobal.scene.add(groundGroup);
87
- use.useframe(function () {
88
- texture.offset.x -= -0.009;
95
+ this.anchorMesh();
96
+ }
97
+ }, {
98
+ key: "anchorMesh",
99
+ value: function anchorMesh() {
100
+ var _this2 = this;
101
+ var anchorGroup = new Group();
102
+ Object.keys(targetProgresspoints).forEach(function (key) {
103
+ var demoPoints = _this2.groundCurve.getPointAt(Number(key));
104
+ var singleAnchorGroup = new Group();
105
+ var cylinder = new Mesh(new CylinderGeometry(10, 10, 2, 64), new MeshBasicMaterial({
106
+ color: new Color('#cdccca')
107
+ }));
108
+ var cylinder1 = new Mesh(new CylinderGeometry(5, 5, 1, 64), new MeshBasicMaterial({
109
+ color: new Color('#fff')
110
+ }));
111
+ cylinder1.position.y = 2;
112
+ cylinder.name = 'cylinder';
113
+ cylinder1.name = 'cylinder1';
114
+ singleAnchorGroup.add(cylinder, cylinder1);
115
+ singleAnchorGroup.position.set(demoPoints.x, demoPoints.y + 5, demoPoints.z);
116
+ _this2.anchorObject.set(targetProgresspoints[key].name, singleAnchorGroup);
117
+ anchorGroup.add(singleAnchorGroup);
89
118
  });
119
+ this.anchorGroup = anchorGroup;
120
+ this.gobal.scene.add(anchorGroup);
90
121
  }
91
122
  }, {
92
123
  key: "setInspectionCamera",
@@ -95,7 +126,7 @@ var Inspection = /*#__PURE__*/function () {
95
126
  if (this.minCamera) {
96
127
  minCamera = this.minCamera;
97
128
  } else {
98
- minCamera = new PerspectiveCamera(90, window.innerWidth / window.innerHeight, 0.1, 1000);
129
+ minCamera = new PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 1000);
99
130
  }
100
131
  this.gobal.scene.cutoutCamera = minCamera;
101
132
  this.gobal.scene.cutoutArea = {
@@ -131,24 +162,28 @@ var Inspection = /*#__PURE__*/function () {
131
162
  }, {
132
163
  key: "show",
133
164
  value: function show() {
165
+ this.isHide = false;
134
166
  document.body.appendChild(this.viewElement);
135
167
  this.gobal.scene.cutout = true;
168
+ this.anchorGroup.visible = true;
136
169
  this.line.visible = true;
137
170
  this.inspectionObject.model && (this.inspectionObject.model.visible = true);
138
171
  }
139
172
  }, {
140
173
  key: "hide",
141
174
  value: function hide() {
142
- var _this2 = this;
175
+ var _this3 = this;
176
+ this.isHide = true;
143
177
  if (this.viewElement && document.body.contains(this.viewElement)) document.body.removeChild(this.viewElement);
144
178
  this.gobal.scene.cutout = false;
145
179
  this.gobal.scene.cutMain(this.gobal.scene.renderer);
146
180
  this.line.visible = false;
181
+ this.anchorGroup.visible = false;
147
182
 
148
183
  // this.addeHighSelected([])
149
184
  var check = use.useframe(function () {
150
- if (_this2.inspectionObject.model) {
151
- _this2.inspectionObject.model.visible = false;
185
+ if (_this3.inspectionObject.model) {
186
+ _this3.inspectionObject.model.visible = false;
152
187
  check();
153
188
  }
154
189
  });
@@ -1 +1 @@
1
- {"version":3,"names":["Group","Mesh","MeshBasicMaterial","MirroredRepeatWrapping","PerspectiveCamera","RepeatWrapping","TextureLoader","TubeGeometry","use","RoundLineGeometry","initPostEffects","usePath","flyLinePoints","groundLinePoints","InspectionObject","Inspection","gobal","generateInspectionPath","makeGroundRoad","setInspectionCamera","inspectionObject","startInspection","curve","hide","viewElement","document","createElement","style","position","width","height","top","cursor","addEventListener","toggleView","flyLine","radius","close","groundLine","texture","load","rotation","Math","PI","wrapS","wrapT","repeat","set","tube","mesh","side","map","transparent","mesh2","groundGroup","add","y","line","scene","useframe","offset","x","minCamera","window","innerWidth","innerHeight","cutoutCamera","cutoutArea","layers","renderer","type","getLength","startMove","targetProgress","targetPosition","getPointAt","gotoTarget","body","appendChild","cutout","visible","model","contains","removeChild","cutMain","check"],"sources":["../../../../src/factory/unit/inspection/index.ts"],"sourcesContent":["import type { Object3D, Vector3 } from '@anov/3d-core'\nimport { Color, Group, Mesh, MeshBasicMaterial, MirroredRepeatWrapping, PerspectiveCamera, RepeatWrapping, TextureLoader, TubeGeometry, use } from '@anov/3d-core'\nimport { RoundLineGeometry, addColorifyPass, createHighSelectedTool, initPostEffects } from '@anov/3d-ability'\nimport type Factory3D from '../../3d'\nimport { usePath } from '../../3d'\nimport { flyLinePoints, groundLinePoints } from './lineData'\nimport InspectionObject from './InspectionObject'\n\nclass Inspection {\n private gobal: Factory3D\n inspectionObject\n private curve\n private line: Group\n\n private viewElement: HTMLDivElement\n\n minCamera: PerspectiveCamera\n InspectionPathObject: Object3D\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.generateInspectionPath()\n this.makeGroundRoad()\n this.setInspectionCamera()\n\n this.inspectionObject = new InspectionObject(this)\n\n this.startInspection(this.curve)\n this.hide()\n\n const viewElement = document.createElement('div')\n\n viewElement.style.position = 'absolute'\n viewElement.style.width = '200px'\n viewElement.style.height = '200px'\n viewElement.style.top = '100px'\n viewElement.style.cursor = 'pointer'\n\n viewElement.addEventListener('click', () => {\n this.gobal.toggleView()\n })\n\n this.viewElement = viewElement\n }\n\n /**\n * generate inspection path\n * @param linePosition\n */\n private generateInspectionPath() {\n const flyLine = new RoundLineGeometry(flyLinePoints, {\n radius: 20,\n close: true,\n })\n\n this.curve = flyLine.curve\n }\n\n /**\n * make ground road\n */\n private makeGroundRoad() {\n const groundLine = new RoundLineGeometry(groundLinePoints, {\n radius: 20,\n close: true,\n })\n\n const texture = new TextureLoader().load(`${usePath}roll.png`)\n texture.rotation = Math.PI\n texture.wrapS = RepeatWrapping\n texture.wrapT = MirroredRepeatWrapping\n texture.repeat.set(1, 2)\n\n const tube = new TubeGeometry(groundLine.curve, 10000, 6, 2, false)\n const mesh = new Mesh(tube, new MeshBasicMaterial({ side: 2, map: texture, transparent: true }))\n const mesh2 = new Mesh(tube, new MeshBasicMaterial({ side: 2 }))\n\n const groundGroup = new Group()\n\n groundGroup.add(mesh2)\n groundGroup.add(mesh)\n groundGroup.position.y = 3\n\n this.line = groundGroup\n this.gobal.scene.add(groundGroup)\n\n use.useframe(() => {\n texture.offset.x -= -0.009\n })\n }\n\n private setInspectionCamera() {\n let minCamera\n\n if (this.minCamera) {\n minCamera = this.minCamera\n }\n else {\n minCamera = new PerspectiveCamera(90,\n window.innerWidth / window.innerHeight\n , 0.1, 1000)\n }\n\n this.gobal.scene.cutoutCamera = minCamera\n this.gobal.scene.cutoutArea = { x: 0, y: 0, width: 200, height: 200 }\n this.gobal.scene.add(minCamera)\n\n this.minCamera = minCamera\n\n this.minCamera.layers.set(0)\n\n initPostEffects(this.gobal.scene.scene, this.gobal.scene.renderer, this.gobal.scene.cutoutCamera, {\n type: 'sub',\n })\n }\n\n get getPathLength() {\n return this.curve.getLength()\n }\n\n startInspection(line) {\n this.setInspectionCamera()\n this.inspectionObject.startMove(line)\n }\n\n goToInspectionTarget(targetProgress: number) {\n const targetPosition = this.curve.getPointAt(targetProgress)\n this.inspectionObject.gotoTarget(targetPosition, targetProgress)\n }\n\n show() {\n document.body.appendChild(this.viewElement)\n this.gobal.scene.cutout = true\n this.line.visible = true\n this.inspectionObject.model && (this.inspectionObject.model.visible = true)\n }\n\n hide() {\n if (this.viewElement && document.body.contains(this.viewElement))\n document.body.removeChild(this.viewElement)\n\n this.gobal.scene.cutout = false\n this.gobal.scene.cutMain(this.gobal.scene.renderer)\n this.line.visible = false\n\n // this.addeHighSelected([])\n const check = use.useframe(() => {\n if (this.inspectionObject.model) {\n this.inspectionObject.model.visible = false\n check()\n }\n })\n }\n}\n\nexport default Inspection"],"mappings":"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"}
1
+ {"version":3,"names":["Color","CylinderGeometry","Group","Mesh","MeshBasicMaterial","MirroredRepeatWrapping","PerspectiveCamera","RepeatWrapping","ShaderMaterial","TextureLoader","TubeGeometry","use","RoundLineGeometry","initPostEffects","usePath","fragmentShader","vertexShader","flyLinePoints","groundLinePoints","targetProgresspoints","InspectionObject","Inspection","gobal","Map","generateInspectionPath","makeGroundRoad","setInspectionCamera","inspectionObject","startInspection","curve","hide","viewElement","document","createElement","style","position","width","height","top","cursor","addEventListener","toggleView","flyLine","radius","close","groundLine","texture","load","rotation","Math","PI","wrapS","wrapT","repeat","set","tube","mesh2","transparent","uniforms","alpha","value","groundGroup","add","y","groundCurve","line","scene","anchorMesh","anchorGroup","Object","keys","forEach","key","demoPoints","getPointAt","Number","singleAnchorGroup","cylinder","color","cylinder1","name","x","z","anchorObject","minCamera","window","innerWidth","innerHeight","cutoutCamera","cutoutArea","layers","renderer","type","getLength","startMove","targetProgress","targetPosition","gotoTarget","isHide","body","appendChild","cutout","visible","model","contains","removeChild","cutMain","check","useframe"],"sources":["../../../../src/factory/unit/inspection/index.ts"],"sourcesContent":["import type { Object3D, Vector3 } from '@anov/3d-core'\nimport { Color, CylinderGeometry, Group, Mesh, MeshBasicMaterial, MirroredRepeatWrapping, PerspectiveCamera, RepeatWrapping, ShaderChunk, ShaderMaterial, TextureLoader, TubeGeometry, use } from '@anov/3d-core'\nimport { RoundLineGeometry, addColorifyPass, createHighSelectedTool, initPostEffects } from '@anov/3d-ability'\nimport type Factory3D from '../../3d'\nimport { usePath } from '../../3d'\nimport fragmentShader from '../glsl/highway/fragmentShader'\nimport vertexShader from '../glsl/highway/vertexShader'\nimport { flyLinePoints, groundLinePoints, targetProgresspoints } from './lineData'\nimport InspectionObject from './InspectionObject'\n\nclass Inspection {\n gobal: Factory3D\n inspectionObject\n curve\n groundCurve\n line: Group\n viewElement: HTMLDivElement\n isHide = true\n anchorObject: Map<string, Group> = new Map()\n anchorGroup: Group\n minCamera: PerspectiveCamera\n InspectionPathObject: Object3D\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.generateInspectionPath()\n this.makeGroundRoad()\n this.setInspectionCamera()\n\n this.inspectionObject = new InspectionObject(this)\n\n this.startInspection(this.curve)\n this.hide()\n\n const viewElement = document.createElement('div')\n\n viewElement.style.position = 'absolute'\n viewElement.style.width = '200px'\n viewElement.style.height = '200px'\n viewElement.style.top = '100px'\n viewElement.style.cursor = 'pointer'\n\n viewElement.addEventListener('click', () => {\n this.gobal.toggleView()\n })\n\n this.viewElement = viewElement\n }\n\n /**\n * generate inspection path\n * @param linePosition\n */\n private generateInspectionPath() {\n const flyLine = new RoundLineGeometry(flyLinePoints, {\n radius: 20,\n close: true,\n })\n\n this.curve = flyLine.curve\n }\n\n /**\n * make ground road\n */\n private makeGroundRoad() {\n const groundLine = new RoundLineGeometry(groundLinePoints, {\n radius: 20,\n close: true,\n })\n\n const texture = new TextureLoader().load(`${usePath}roll.png`)\n texture.rotation = Math.PI\n texture.wrapS = RepeatWrapping\n texture.wrapT = MirroredRepeatWrapping\n texture.repeat.set(1, 2)\n\n const tube = new TubeGeometry(groundLine.curve, 10000, 4, 2, false)\n const mesh2 = new Mesh(tube, new ShaderMaterial({\n transparent: true,\n uniforms: {\n alpha: {\n value: 0.2,\n },\n },\n vertexShader,\n fragmentShader,\n }))\n\n const groundGroup = new Group()\n\n groundGroup.add(mesh2)\n groundGroup.position.y = 3\n\n this.groundCurve = groundLine.curve\n this.line = groundGroup\n this.gobal.scene.add(groundGroup)\n\n this.anchorMesh()\n }\n\n private anchorMesh() {\n const anchorGroup = new Group()\n\n Object.keys(targetProgresspoints).forEach((key) => {\n const demoPoints = this.groundCurve.getPointAt(Number(key))\n const singleAnchorGroup = new Group()\n\n const cylinder = new Mesh(new CylinderGeometry(10, 10, 2, 64), new MeshBasicMaterial({ color: new Color('#cdccca') }))\n const cylinder1 = new Mesh(new CylinderGeometry(5, 5, 1, 64), new MeshBasicMaterial({ color: new Color('#fff') }))\n cylinder1.position.y = 2\n\n cylinder.name = 'cylinder'\n cylinder1.name = 'cylinder1'\n\n singleAnchorGroup.add(cylinder, cylinder1)\n singleAnchorGroup.position.set(demoPoints.x, demoPoints.y + 5, demoPoints.z)\n\n this.anchorObject.set(targetProgresspoints[key].name, singleAnchorGroup)\n anchorGroup.add(singleAnchorGroup)\n })\n this.anchorGroup = anchorGroup\n this.gobal.scene.add(anchorGroup)\n }\n\n private setInspectionCamera() {\n let minCamera\n\n if (this.minCamera) {\n minCamera = this.minCamera\n }\n else {\n minCamera = new PerspectiveCamera(60,\n window.innerWidth / window.innerHeight\n , 0.1, 1000)\n }\n\n this.gobal.scene.cutoutCamera = minCamera\n this.gobal.scene.cutoutArea = { x: 0, y: 0, width: 200, height: 200 }\n this.gobal.scene.add(minCamera)\n\n this.minCamera = minCamera\n\n this.minCamera.layers.set(0)\n\n initPostEffects(this.gobal.scene.scene, this.gobal.scene.renderer, this.gobal.scene.cutoutCamera, {\n type: 'sub',\n })\n }\n\n get getPathLength() {\n return this.curve.getLength()\n }\n\n startInspection(line) {\n this.setInspectionCamera()\n this.inspectionObject.startMove(line)\n }\n\n goToInspectionTarget(targetProgress: number) {\n const targetPosition = this.curve.getPointAt(targetProgress)\n this.inspectionObject.gotoTarget(targetPosition, targetProgress)\n }\n\n show() {\n this.isHide = false\n\n document.body.appendChild(this.viewElement)\n this.gobal.scene.cutout = true\n this.anchorGroup.visible = true\n this.line.visible = true\n this.inspectionObject.model && (this.inspectionObject.model.visible = true)\n }\n\n hide() {\n this.isHide = true\n\n if (this.viewElement && document.body.contains(this.viewElement))\n document.body.removeChild(this.viewElement)\n\n this.gobal.scene.cutout = false\n this.gobal.scene.cutMain(this.gobal.scene.renderer)\n this.line.visible = false\n this.anchorGroup.visible = false\n\n // this.addeHighSelected([])\n const check = use.useframe(() => {\n if (this.inspectionObject.model) {\n this.inspectionObject.model.visible = false\n check()\n }\n })\n }\n}\n\nexport default Inspection"],"mappings":"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"}
@@ -5,6 +5,6 @@ export declare enum SceneStyle {
5
5
  export declare enum SceneTag {
6
6
  'overview' = "Overview",
7
7
  'people-management' = "Person",
8
- 'smart-inspection' = "smart-inspection",
9
- 'security-operation' = "security-operation"
8
+ 'smart-inspection' = "Inspection",
9
+ 'security-operation' = "Maintenance"
10
10
  }
@@ -7,7 +7,7 @@ export var SceneTag;
7
7
  (function (SceneTag) {
8
8
  SceneTag["overview"] = "Overview";
9
9
  SceneTag["people-management"] = "Person";
10
- SceneTag["smart-inspection"] = "smart-inspection";
11
- SceneTag["security-operation"] = "security-operation";
10
+ SceneTag["smart-inspection"] = "Inspection";
11
+ SceneTag["security-operation"] = "Maintenance";
12
12
  })(SceneTag || (SceneTag = {}));
13
13
  //# sourceMappingURL=constant.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["SceneStyle","SceneTag"],"sources":["../../../src/factory/utils/constant.ts"],"sourcesContent":["export enum SceneStyle {\n 'real',\n 'tech',\n}\n\nexport enum SceneTag {\n 'overview' = 'Overview',\n 'people-management' = 'Person',\n 'smart-inspection' = 'smart-inspection',\n 'security-operation' = 'security-operation',\n}"],"mappings":"AAAA,WAAYA,UAAU;AAGrB,WAHWA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;AAAA,GAAVA,UAAU,KAAVA,UAAU;AAKtB,WAAYC,QAAQ;AAKnB,WALWA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;AAAA,GAARA,QAAQ,KAARA,QAAQ"}
1
+ {"version":3,"names":["SceneStyle","SceneTag"],"sources":["../../../src/factory/utils/constant.ts"],"sourcesContent":["export enum SceneStyle {\n 'real',\n 'tech',\n}\n\nexport enum SceneTag {\n 'overview' = 'Overview',\n 'people-management' = 'Person',\n 'smart-inspection' = 'Inspection',\n 'security-operation' = 'Maintenance',\n}"],"mappings":"AAAA,WAAYA,UAAU;AAGrB,WAHWA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;AAAA,GAAVA,UAAU,KAAVA,UAAU;AAKtB,WAAYC,QAAQ;AAKnB,WALWA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;AAAA,GAARA,QAAQ,KAARA,QAAQ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d",
3
- "version": "0.0.20",
3
+ "version": "0.0.23",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",
@@ -21,8 +21,8 @@
21
21
  "anov-heat-map": "^0.0.1",
22
22
  "localforage": "^1.10.0",
23
23
  "uuid": "^9.0.1",
24
- "@anov/3d-core": "^0.0.7",
25
- "@anov/3d-ability": "^0.0.7"
24
+ "@anov/3d-ability": "^0.0.7",
25
+ "@anov/3d-core": "^0.0.7"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/uuid": "^9.0.7"