@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.
- package/dist/factory/unit/CameraPoi.d.ts +4 -1
- package/dist/factory/unit/CameraPoi.js +77 -44
- package/dist/factory/unit/CameraPoi.js.map +1 -1
- package/dist/factory/unit/glsl/highway/fragmentShader.d.ts +2 -0
- package/dist/factory/unit/glsl/highway/fragmentShader.js +4 -0
- package/dist/factory/unit/glsl/highway/fragmentShader.js.map +1 -0
- package/dist/factory/unit/glsl/highway/vertexShader.d.ts +2 -0
- package/dist/factory/unit/glsl/highway/vertexShader.js +4 -0
- package/dist/factory/unit/glsl/highway/vertexShader.js.map +1 -0
- package/dist/factory/unit/handle.d.ts +1 -0
- package/dist/factory/unit/handle.js +6 -0
- package/dist/factory/unit/handle.js.map +1 -1
- package/dist/factory/unit/index.d.ts +2 -2
- package/dist/factory/unit/inspection/InspectionObject.d.ts +1 -0
- package/dist/factory/unit/inspection/InspectionObject.js +60 -3
- package/dist/factory/unit/inspection/InspectionObject.js.map +1 -1
- package/dist/factory/unit/inspection/index.d.ts +10 -5
- package/dist/factory/unit/inspection/index.js +52 -17
- package/dist/factory/unit/inspection/index.js.map +1 -1
- package/dist/factory/utils/constant.d.ts +2 -2
- package/dist/factory/utils/constant.js +2 -2
- package/dist/factory/utils/constant.js.map +1 -1
- package/package.json +3 -3
|
@@ -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
|
-
|
|
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 =
|
|
166
|
+
_context3.next = 10;
|
|
158
167
|
return _this2.dialogManage.getMesh(position, position.clone().add(new Vector3(0, -15, 5)));
|
|
159
|
-
case
|
|
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
|
|
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,
|
|
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
|
-
|
|
198
|
-
|
|
199
|
-
|
|
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:
|
|
205
|
-
})
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
_this3.
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
477
|
-
backgroundImage: "url(".concat(usePath, "p4/border.png)"),
|
|
478
|
-
backgroundSize: '100% 100%',
|
|
479
|
-
backgroundRepeat: 'no-repeat',
|
|
480
|
-
position: '
|
|
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-
|
|
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-
|
|
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 =
|
|
631
|
-
var height =
|
|
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
|
|
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
|
-
|
|
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,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,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"}
|
|
@@ -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","
|
|
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"}
|
|
@@ -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
|
|
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
|
-
|
|
5
|
+
gobal: Factory3D;
|
|
6
6
|
inspectionObject: any;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
|
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,
|
|
73
|
-
var
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
-
|
|
88
|
-
|
|
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(
|
|
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
|
|
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 (
|
|
151
|
-
|
|
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' = "
|
|
9
|
-
'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"] = "
|
|
11
|
-
SceneTag["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' = '
|
|
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.
|
|
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-
|
|
25
|
-
"@anov/3d-
|
|
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"
|