@anov/3d 0.0.15 → 0.0.17
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/applicationApi.js +5 -2
- package/dist/applicationApi.js.map +1 -1
- package/dist/factory/unit/handle.d.ts +20 -2
- package/dist/factory/unit/handle.js +29 -3
- package/dist/factory/unit/handle.js.map +1 -1
- package/dist/factory/unit/inspection/InspectionObject.js +39 -27
- package/dist/factory/unit/inspection/InspectionObject.js.map +1 -1
- package/dist/factory/unit/inspection/index.d.ts +1 -1
- package/dist/factory/unit/inspection/index.js.map +1 -1
- package/dist/utils/abstract.js +1 -0
- package/dist/utils/abstract.js.map +1 -1
- package/package.json +1 -1
package/dist/applicationApi.js
CHANGED
|
@@ -52,7 +52,10 @@ var Application = /*#__PURE__*/function () {
|
|
|
52
52
|
controls: params.controls
|
|
53
53
|
});
|
|
54
54
|
this.iEngine = anov3D;
|
|
55
|
-
this.loadCase(anov3D, params);
|
|
55
|
+
var caseInstance = this.loadCase(anov3D, params);
|
|
56
|
+
|
|
57
|
+
// @ts-ignore
|
|
58
|
+
this.iEngine.caseInstance = caseInstance;
|
|
56
59
|
sendToMessage(MessageType.Api, 'core.init', EMessageStatus.Success, id);
|
|
57
60
|
} catch (error) {
|
|
58
61
|
sendToMessage(MessageType.Api, 'core.init', EMessageStatus.EventHandleFailed);
|
|
@@ -99,7 +102,7 @@ var Application = /*#__PURE__*/function () {
|
|
|
99
102
|
controls: option.controls
|
|
100
103
|
});
|
|
101
104
|
factory.renderScene(anov3D.sceneControl);
|
|
102
|
-
|
|
105
|
+
return factory;
|
|
103
106
|
}
|
|
104
107
|
}
|
|
105
108
|
}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["utils","getFnByFnkey","MessageType","sendToMessage","EMessageStatus","Factory3D","Anov3D","defaultCameraParams","Application","opts","container","el","Api","Success","params","id","camera","cameraParams","fov","near","far","position","target","anov3D","model","case","size","width","clientWidth","height","clientHeight","environment","weather","time","controls","iEngine","loadCase","error","EventHandleFailed","console","req","name","init","Error","fn","res","Promise","resolve","then","failMessage","message","eventName","cb","storeManagement","set","option","factory","envMaps","imgBox","decoderPath","renderScene","sceneControl","createInstance"],"sources":["../src/applicationApi.ts"],"sourcesContent":["import { utils } from '@anov/3d-core'\nimport { getFnByFnkey } from './utils/index'\nimport { MessageType, sendToMessage } from './utils/messageFn'\nimport { EMessageStatus } from './messageStatus'\nimport Factory3D from './factory/3d'\nimport Anov3D, { defaultCameraParams } from './index'\n\ntype ApplicationOptions = {\n el: HTMLElement\n}\n\nexport type InitOptions = {\n case?: string // 案例名称,用于兼容init直接加载项目\n camera?: {\n fov?: number\n near?: number\n far?: number\n position?: [\n number,\n number,\n number,\n ]\n target?: [\n number,\n number,\n number,\n ]\n }\n model?: string\n decoderPath?: string // DRACO压缩 资源文件路径\n size?: {\n width: number\n height: number\n }\n environment?: {\n weather?: string\n time?: number\n }\n envMaps: {\n use?: boolean\n imgBox?: Array<string> | string\n }\n controls: {\n // 相机缩放范围\n minDistance?: number\n maxDistance?: number\n // 上下旋转范围\n minPolarAngle?: number// 默认值0\n maxPolarAngle?: number\n // 左右旋转范围\n minAzimuthAngle?: number\n maxAzimuthAngle?: number\n }\n}\n\nclass Application {\n private container: HTMLElement\n iEngine: Anov3D | undefined\n\n constructor(opts: ApplicationOptions) {\n this.container = opts.el\n\n sendToMessage(MessageType.Api, 'engineReady', EMessageStatus.Success)\n }\n\n private init(params: InitOptions, id: string) {\n try {\n const { camera = {} } = params || {}\n\n const cameraParams = {\n fov: camera.fov ?? defaultCameraParams.fov,\n near: camera.near ?? defaultCameraParams.near,\n far: camera.far ?? defaultCameraParams.far,\n position: camera.position,\n target: camera.target,\n }\n\n const anov3D = new Anov3D({\n container: this.container,\n model: params.case ? '' : params?.model, // temporary solution by LM\n size: {\n width: params?.size?.width ?? this.container.clientWidth,\n height: params?.size?.height ?? this.container.clientHeight,\n },\n camera: {\n ...cameraParams,\n },\n environment: {\n weather: params?.environment?.weather,\n time: params?.environment?.time,\n },\n controls: params.controls,\n })\n this.iEngine = anov3D\n\n this.loadCase(anov3D, params)\n\n sendToMessage(MessageType.Api, 'core.init', EMessageStatus.Success, id)\n }\n catch (error) {\n sendToMessage(MessageType.Api, 'core.init', EMessageStatus.EventHandleFailed)\n console.error(error)\n }\n }\n\n sendMessage(req: { name: string; id: string; params: any }) {\n if (req.name === 'Core.init' || req.name === 'core.init') {\n this.init(req.params, req.id)\n return\n }\n\n if (!this.iEngine)\n throw new Error('please init first!')\n\n const fn = getFnByFnkey(this.iEngine, req.name, req.id) as any\n\n try {\n const res = fn(req.params)\n\n Promise.resolve(res).then((res) => {\n sendToMessage(MessageType.Api, req.name, EMessageStatus.Success, req.id, res)\n })\n }\n catch (error: any) {\n sendToMessage(MessageType.Api, req.name, EMessageStatus.EventHandleFailed, req.id, {\n failMessage: error.message,\n })\n }\n }\n\n receiveMessage(eventName: string, cb: (params: any) => void) {\n utils.storeManagement.set(eventName, cb)\n }\n\n // 此方法 用于直接加载案例\n private loadCase(anov3D: Anov3D, option: InitOptions) {\n switch (option.case) {\n case 'factory':\n // eslint-disable-next-line no-case-declarations\n const factory = new Factory3D({ model: option.model, environment: option.envMaps.imgBox as string, decoderPath: option.decoderPath, controls: option.controls })\n factory.renderScene(anov3D.sceneControl)\n
|
|
1
|
+
{"version":3,"names":["utils","getFnByFnkey","MessageType","sendToMessage","EMessageStatus","Factory3D","Anov3D","defaultCameraParams","Application","opts","container","el","Api","Success","params","id","camera","cameraParams","fov","near","far","position","target","anov3D","model","case","size","width","clientWidth","height","clientHeight","environment","weather","time","controls","iEngine","caseInstance","loadCase","error","EventHandleFailed","console","req","name","init","Error","fn","res","Promise","resolve","then","failMessage","message","eventName","cb","storeManagement","set","option","factory","envMaps","imgBox","decoderPath","renderScene","sceneControl","createInstance"],"sources":["../src/applicationApi.ts"],"sourcesContent":["import { utils } from '@anov/3d-core'\nimport { getFnByFnkey } from './utils/index'\nimport { MessageType, sendToMessage } from './utils/messageFn'\nimport { EMessageStatus } from './messageStatus'\nimport Factory3D from './factory/3d'\nimport Anov3D, { defaultCameraParams } from './index'\n\ntype ApplicationOptions = {\n el: HTMLElement\n}\n\nexport type InitOptions = {\n case?: string // 案例名称,用于兼容init直接加载项目\n camera?: {\n fov?: number\n near?: number\n far?: number\n position?: [\n number,\n number,\n number,\n ]\n target?: [\n number,\n number,\n number,\n ]\n }\n model?: string\n decoderPath?: string // DRACO压缩 资源文件路径\n size?: {\n width: number\n height: number\n }\n environment?: {\n weather?: string\n time?: number\n }\n envMaps: {\n use?: boolean\n imgBox?: Array<string> | string\n }\n controls: {\n // 相机缩放范围\n minDistance?: number\n maxDistance?: number\n // 上下旋转范围\n minPolarAngle?: number// 默认值0\n maxPolarAngle?: number\n // 左右旋转范围\n minAzimuthAngle?: number\n maxAzimuthAngle?: number\n }\n}\n\nclass Application {\n private container: HTMLElement\n iEngine: Anov3D | undefined\n\n constructor(opts: ApplicationOptions) {\n this.container = opts.el\n\n sendToMessage(MessageType.Api, 'engineReady', EMessageStatus.Success)\n }\n\n private init(params: InitOptions, id: string) {\n try {\n const { camera = {} } = params || {}\n\n const cameraParams = {\n fov: camera.fov ?? defaultCameraParams.fov,\n near: camera.near ?? defaultCameraParams.near,\n far: camera.far ?? defaultCameraParams.far,\n position: camera.position,\n target: camera.target,\n }\n\n const anov3D = new Anov3D({\n container: this.container,\n model: params.case ? '' : params?.model, // temporary solution by LM\n size: {\n width: params?.size?.width ?? this.container.clientWidth,\n height: params?.size?.height ?? this.container.clientHeight,\n },\n camera: {\n ...cameraParams,\n },\n environment: {\n weather: params?.environment?.weather,\n time: params?.environment?.time,\n },\n controls: params.controls,\n })\n\n this.iEngine = anov3D\n\n const caseInstance = this.loadCase(anov3D, params)\n\n // @ts-ignore\n this.iEngine.caseInstance = caseInstance\n\n sendToMessage(MessageType.Api, 'core.init', EMessageStatus.Success, id)\n }\n catch (error) {\n sendToMessage(MessageType.Api, 'core.init', EMessageStatus.EventHandleFailed)\n console.error(error)\n }\n }\n\n sendMessage(req: { name: string; id: string; params: any }) {\n if (req.name === 'Core.init' || req.name === 'core.init') {\n this.init(req.params, req.id)\n return\n }\n\n if (!this.iEngine)\n throw new Error('please init first!')\n\n const fn = getFnByFnkey(this.iEngine, req.name, req.id) as any\n\n try {\n const res = fn(req.params)\n\n Promise.resolve(res).then((res) => {\n sendToMessage(MessageType.Api, req.name, EMessageStatus.Success, req.id, res)\n })\n }\n catch (error: any) {\n sendToMessage(MessageType.Api, req.name, EMessageStatus.EventHandleFailed, req.id, {\n failMessage: error.message,\n })\n }\n }\n\n receiveMessage(eventName: string, cb: (params: any) => void) {\n utils.storeManagement.set(eventName, cb)\n }\n\n // 此方法 用于直接加载案例\n private loadCase(anov3D: Anov3D, option: InitOptions) {\n switch (option.case) {\n case 'factory':\n\n // eslint-disable-next-line no-case-declarations\n const factory = new Factory3D({ model: option.model, environment: option.envMaps.imgBox as string, decoderPath: option.decoderPath, controls: option.controls })\n factory.renderScene(anov3D.sceneControl)\n return factory\n }\n }\n}\n\n/**\n * createInstance\n * @returns\n */\nexport const createInstance = (opts: ApplicationOptions): Application => {\n return new Application(opts)\n}\n"],"mappings":"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"}
|
|
@@ -1,12 +1,30 @@
|
|
|
1
1
|
import type Anov3D from '../../sdkEntry';
|
|
2
|
-
|
|
2
|
+
import type { BaseModule } from '../../utils/abstract';
|
|
3
|
+
export declare const map: {
|
|
4
|
+
HF: number;
|
|
5
|
+
HPU: number;
|
|
6
|
+
LLCV: number;
|
|
7
|
+
CMP1: number;
|
|
8
|
+
CMP2: number;
|
|
9
|
+
};
|
|
10
|
+
export declare const invertMap: {
|
|
11
|
+
0.04: string;
|
|
12
|
+
0.15: string;
|
|
13
|
+
0.24: string;
|
|
14
|
+
0.4: string;
|
|
15
|
+
0.68: string;
|
|
16
|
+
};
|
|
17
|
+
declare class HandlerManage implements BaseModule {
|
|
3
18
|
app: Anov3D;
|
|
4
19
|
constructor(app: Anov3D);
|
|
5
20
|
clickPerson(params: any): void;
|
|
6
21
|
clickBar(params: any): void;
|
|
7
22
|
clickCamera(params: any): void;
|
|
8
23
|
click(name: any): void;
|
|
9
|
-
setInspectTarget(
|
|
24
|
+
setInspectTarget(params: {
|
|
25
|
+
target: string;
|
|
26
|
+
}): any;
|
|
27
|
+
stopInspect(): void;
|
|
10
28
|
continueInspect(): void;
|
|
11
29
|
}
|
|
12
30
|
export default HandlerManage;
|
|
@@ -5,6 +5,20 @@ 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
|
+
export var map = {
|
|
9
|
+
HF: 0.04,
|
|
10
|
+
HPU: 0.15,
|
|
11
|
+
LLCV: 0.24,
|
|
12
|
+
CMP1: 0.40,
|
|
13
|
+
CMP2: 0.68
|
|
14
|
+
};
|
|
15
|
+
export var invertMap = {
|
|
16
|
+
0.04: 'HF',
|
|
17
|
+
0.15: 'HPU',
|
|
18
|
+
0.24: 'LLCV',
|
|
19
|
+
0.40: 'CMP1',
|
|
20
|
+
0.68: 'CMP2'
|
|
21
|
+
};
|
|
8
22
|
var HandlerManage = /*#__PURE__*/function () {
|
|
9
23
|
function HandlerManage(app) {
|
|
10
24
|
_classCallCheck(this, HandlerManage);
|
|
@@ -45,12 +59,24 @@ var HandlerManage = /*#__PURE__*/function () {
|
|
|
45
59
|
}
|
|
46
60
|
}, {
|
|
47
61
|
key: "setInspectTarget",
|
|
48
|
-
value: function setInspectTarget() {
|
|
49
|
-
|
|
62
|
+
value: function setInspectTarget(params) {
|
|
63
|
+
var target = params.target;
|
|
64
|
+
|
|
65
|
+
// @ts-ignore
|
|
66
|
+
return this.app.caseInstance.inspection.goToInspectionTarget(map[target]);
|
|
67
|
+
}
|
|
68
|
+
}, {
|
|
69
|
+
key: "stopInspect",
|
|
70
|
+
value: function stopInspect() {
|
|
71
|
+
// @ts-ignore
|
|
72
|
+
this.app.caseInstance.inspection.inspectionObject.stop();
|
|
50
73
|
}
|
|
51
74
|
}, {
|
|
52
75
|
key: "continueInspect",
|
|
53
|
-
value: function continueInspect() {
|
|
76
|
+
value: function continueInspect() {
|
|
77
|
+
// @ts-ignore
|
|
78
|
+
this.app.caseInstance.inspection.inspectionObject.contineMove();
|
|
79
|
+
}
|
|
54
80
|
}]);
|
|
55
81
|
return HandlerManage;
|
|
56
82
|
}();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["HandlerManage","app","params","click","id","title","name","object","sceneControl","scene","getObjectByName","console","log","dispatchEvent","type"],"sources":["../../../src/factory/unit/handle.ts"],"sourcesContent":["import { regionMap } from '../regionData'\nimport type Anov3D from '../../sdkEntry'\n\nclass HandlerManage {\n app: Anov3D\n constructor(app: Anov3D) {\n this.app = app\n }\n\n clickPerson(params: any) {\n this.click(params.id)\n }\n\n clickBar(params: any) {\n this.click(params.title)\n }\n\n clickCamera(params: any) {\n this.click(params.name)\n }\n\n click(name) {\n // 根据名称动态获取Mesh对象\n const object = this.app.sceneControl.scene!.getObjectByName(name)\n\n // 触发事件\n if (object) {\n console.log('Mesh对象已找到!')\n // 手动调用Mesh对象上的点击事件处理函数\n object.dispatchEvent({ type: 'click' })\n }\n else {\n console.log('未找到Mesh对象!')\n }\n }\n\n setInspectTarget() {\n
|
|
1
|
+
{"version":3,"names":["map","HF","HPU","LLCV","CMP1","CMP2","invertMap","HandlerManage","app","params","click","id","title","name","object","sceneControl","scene","getObjectByName","console","log","dispatchEvent","type","target","caseInstance","inspection","goToInspectionTarget","inspectionObject","stop","contineMove"],"sources":["../../../src/factory/unit/handle.ts"],"sourcesContent":["import { regionMap } from '../regionData'\nimport type Anov3D from '../../sdkEntry'\nimport type { BaseModule } from '../../utils/abstract'\n\nexport const map = {\n HF: 0.04,\n HPU: 0.15,\n LLCV: 0.24,\n CMP1: 0.40,\n CMP2: 0.68,\n}\n\nexport const invertMap = {\n 0.04: 'HF',\n 0.15: 'HPU',\n 0.24: 'LLCV',\n 0.40: 'CMP1',\n 0.68: 'CMP2',\n}\n\nclass HandlerManage implements BaseModule {\n app: Anov3D\n constructor(app: Anov3D) {\n this.app = app\n }\n\n clickPerson(params: any) {\n this.click(params.id)\n }\n\n clickBar(params: any) {\n this.click(params.title)\n }\n\n clickCamera(params: any) {\n this.click(params.name)\n }\n\n click(name) {\n // 根据名称动态获取Mesh对象\n const object = this.app.sceneControl.scene!.getObjectByName(name)\n\n // 触发事件\n if (object) {\n console.log('Mesh对象已找到!')\n // 手动调用Mesh对象上的点击事件处理函数\n object.dispatchEvent({ type: 'click' })\n }\n else {\n console.log('未找到Mesh对象!')\n }\n }\n\n setInspectTarget(params: { target: string }) {\n const { target } = params\n\n // @ts-ignore\n return this.app.caseInstance.inspection.goToInspectionTarget(map[target])\n }\n\n stopInspect() {\n // @ts-ignore\n this.app.caseInstance.inspection.inspectionObject.stop()\n }\n\n continueInspect() {\n // @ts-ignore\n this.app.caseInstance.inspection.inspectionObject.contineMove()\n }\n}\n\nexport default HandlerManage\n"],"mappings":";;;;;;;AAIA,OAAO,IAAMA,GAAG,GAAG;EACjBC,EAAE,EAAE,IAAI;EACRC,GAAG,EAAE,IAAI;EACTC,IAAI,EAAE,IAAI;EACVC,IAAI,EAAE,IAAI;EACVC,IAAI,EAAE;AACR,CAAC;AAED,OAAO,IAAMC,SAAS,GAAG;EACvB,IAAI,EAAE,IAAI;EACV,IAAI,EAAE,KAAK;EACX,IAAI,EAAE,MAAM;EACZ,IAAI,EAAE,MAAM;EACZ,IAAI,EAAE;AACR,CAAC;AAAA,IAEKC,aAAa;EAEjB,uBAAYC,GAAW,EAAE;IAAA;IAAA;IACvB,IAAI,CAACA,GAAG,GAAGA,GAAG;EAChB;EAAC;IAAA;IAAA,OAED,qBAAYC,MAAW,EAAE;MACvB,IAAI,CAACC,KAAK,CAACD,MAAM,CAACE,EAAE,CAAC;IACvB;EAAC;IAAA;IAAA,OAED,kBAASF,MAAW,EAAE;MACpB,IAAI,CAACC,KAAK,CAACD,MAAM,CAACG,KAAK,CAAC;IAC1B;EAAC;IAAA;IAAA,OAED,qBAAYH,MAAW,EAAE;MACvB,IAAI,CAACC,KAAK,CAACD,MAAM,CAACI,IAAI,CAAC;IACzB;EAAC;IAAA;IAAA,OAED,eAAMA,IAAI,EAAE;MACV;MACA,IAAMC,MAAM,GAAG,IAAI,CAACN,GAAG,CAACO,YAAY,CAACC,KAAK,CAAEC,eAAe,CAACJ,IAAI,CAAC;;MAEjE;MACA,IAAIC,MAAM,EAAE;QACVI,OAAO,CAACC,GAAG,CAAC,YAAY,CAAC;QACzB;QACAL,MAAM,CAACM,aAAa,CAAC;UAAEC,IAAI,EAAE;QAAQ,CAAC,CAAC;MACzC,CAAC,MACI;QACHH,OAAO,CAACC,GAAG,CAAC,YAAY,CAAC;MAC3B;IACF;EAAC;IAAA;IAAA,OAED,0BAAiBV,MAA0B,EAAE;MAC3C,IAAQa,MAAM,GAAKb,MAAM,CAAjBa,MAAM;;MAEd;MACA,OAAO,IAAI,CAACd,GAAG,CAACe,YAAY,CAACC,UAAU,CAACC,oBAAoB,CAACzB,GAAG,CAACsB,MAAM,CAAC,CAAC;IAC3E;EAAC;IAAA;IAAA,OAED,uBAAc;MACZ;MACA,IAAI,CAACd,GAAG,CAACe,YAAY,CAACC,UAAU,CAACE,gBAAgB,CAACC,IAAI,EAAE;IAC1D;EAAC;IAAA;IAAA,OAED,2BAAkB;MAChB;MACA,IAAI,CAACnB,GAAG,CAACe,YAAY,CAACC,UAAU,CAACE,gBAAgB,CAACE,WAAW,EAAE;IACjE;EAAC;EAAA;AAAA;AAGH,eAAerB,aAAa"}
|
|
@@ -13,6 +13,9 @@ 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
|
+
import { MessageType, sendToMessage } from "../../../utils/messageFn";
|
|
17
|
+
import { EMessageStatus } from "../../../messageStatus";
|
|
18
|
+
import { invertMap } from "../handle";
|
|
16
19
|
import { isCheck, targetProgresspoints } from "./lineData";
|
|
17
20
|
var modelLoader = new ModelLoader();
|
|
18
21
|
var InspectionObject = /*#__PURE__*/function () {
|
|
@@ -132,6 +135,7 @@ var InspectionObject = /*#__PURE__*/function () {
|
|
|
132
135
|
key: "startMove",
|
|
133
136
|
value: function () {
|
|
134
137
|
var _startMove = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(curve) {
|
|
138
|
+
var _this2 = this;
|
|
135
139
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
136
140
|
while (1) switch (_context2.prev = _context2.next) {
|
|
137
141
|
case 0:
|
|
@@ -143,7 +147,12 @@ var InspectionObject = /*#__PURE__*/function () {
|
|
|
143
147
|
return this.loadModel();
|
|
144
148
|
case 3:
|
|
145
149
|
this.control = utils.moveWithLine(this.model, curve, 10);
|
|
146
|
-
|
|
150
|
+
use.useframe(function () {
|
|
151
|
+
sendToMessage(MessageType.Event, 'onInspectProgress', EMessageStatus.Success, undefined, {
|
|
152
|
+
percentage: _this2.getSportsProgress
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
case 5:
|
|
147
156
|
case "end":
|
|
148
157
|
return _context2.stop();
|
|
149
158
|
}
|
|
@@ -194,7 +203,7 @@ var InspectionObject = /*#__PURE__*/function () {
|
|
|
194
203
|
}, {
|
|
195
204
|
key: "checkAnimation",
|
|
196
205
|
value: function checkAnimation(progress) {
|
|
197
|
-
var
|
|
206
|
+
var _this3 = this;
|
|
198
207
|
this.isLock = true;
|
|
199
208
|
this.isAnimation = true;
|
|
200
209
|
var key = Object.keys(targetProgresspoints).find(function (p) {
|
|
@@ -208,35 +217,38 @@ var InspectionObject = /*#__PURE__*/function () {
|
|
|
208
217
|
this.contineMove();
|
|
209
218
|
this.isAnimation = false;
|
|
210
219
|
setTimeout(function () {
|
|
211
|
-
|
|
220
|
+
_this3.isLock = false;
|
|
212
221
|
}, 500);
|
|
213
222
|
return;
|
|
214
223
|
}
|
|
224
|
+
sendToMessage(MessageType.Event, 'onReachTarget', EMessageStatus.Success, undefined, {
|
|
225
|
+
target: invertMap[progress]
|
|
226
|
+
});
|
|
215
227
|
setTimeout(function () {
|
|
216
228
|
var rotationMatrix = new Matrix4();
|
|
217
229
|
var targetQuaternion = new Quaternion();
|
|
218
|
-
var startQuaternion =
|
|
219
|
-
rotationMatrix.lookAt(targetMesh.position,
|
|
230
|
+
var startQuaternion = _this3.model.quaternion.clone();
|
|
231
|
+
rotationMatrix.lookAt(targetMesh.position, _this3.model.position, _this3.model.up);
|
|
220
232
|
targetQuaternion.setFromRotationMatrix(rotationMatrix);
|
|
221
233
|
var forwardTween = new Tween({
|
|
222
234
|
t: 0
|
|
223
235
|
}).to({
|
|
224
236
|
t: 1
|
|
225
237
|
}, 2000).onUpdate(function (obj) {
|
|
226
|
-
|
|
238
|
+
_this3.model.quaternion.copy(startQuaternion).slerp(targetQuaternion, obj.t);
|
|
227
239
|
});
|
|
228
240
|
var backwardTween = new Tween({
|
|
229
241
|
t: 1
|
|
230
242
|
}).to({
|
|
231
243
|
t: 0
|
|
232
244
|
}, 2000).onUpdate(function (obj) {
|
|
233
|
-
|
|
245
|
+
_this3.model.quaternion.copy(startQuaternion).slerp(targetQuaternion, obj.t);
|
|
234
246
|
});
|
|
235
247
|
forwardTween.onComplete(function () {
|
|
236
248
|
var finirMesh = null;
|
|
237
|
-
if (Number(key) === 0.04 || Number(key) === 0.68)
|
|
249
|
+
if (Number(key) === 0.04 || Number(key) === 0.68) _this3.inspection.minCamera.layers.set(2);
|
|
238
250
|
if (Number(key) === 0.15 || Number(key) === 0.24 || Number(key) === 0.40) {
|
|
239
|
-
|
|
251
|
+
_this3.inspection.minCamera.layers.enable(3);
|
|
240
252
|
// @ts-ignore
|
|
241
253
|
if (!targetMesh.finirMesh) {
|
|
242
254
|
finirMesh = targetMesh.clone();
|
|
@@ -258,7 +270,7 @@ var InspectionObject = /*#__PURE__*/function () {
|
|
|
258
270
|
|
|
259
271
|
// @ts-ignore
|
|
260
272
|
targetMesh.finirMesh = finirMesh;
|
|
261
|
-
|
|
273
|
+
_this3.inspection.gobal.scene.add(finirMesh);
|
|
262
274
|
} else {
|
|
263
275
|
// @ts-ignore
|
|
264
276
|
finirMesh = targetMesh.finirMesh;
|
|
@@ -266,7 +278,7 @@ var InspectionObject = /*#__PURE__*/function () {
|
|
|
266
278
|
}
|
|
267
279
|
}
|
|
268
280
|
setTimeout(function () {
|
|
269
|
-
if (Number(key) === 0.04 || Number(key) === 0.68)
|
|
281
|
+
if (Number(key) === 0.04 || Number(key) === 0.68) _this3.inspection.minCamera.layers.set(0);
|
|
270
282
|
if (Number(key) === 0.15 || Number(key) === 0.24 || Number(key) === 0.40) finirMesh.visible = false;
|
|
271
283
|
backwardTween.start();
|
|
272
284
|
}, 5000);
|
|
@@ -275,10 +287,10 @@ var InspectionObject = /*#__PURE__*/function () {
|
|
|
275
287
|
forwardTween.start();
|
|
276
288
|
}, 1000);
|
|
277
289
|
backwardTween.onComplete(function () {
|
|
278
|
-
|
|
279
|
-
|
|
290
|
+
_this3.isAnimation = false;
|
|
291
|
+
_this3.contineMove();
|
|
280
292
|
setTimeout(function () {
|
|
281
|
-
|
|
293
|
+
_this3.isLock = false;
|
|
282
294
|
}, 500);
|
|
283
295
|
});
|
|
284
296
|
}, 1000);
|
|
@@ -291,7 +303,7 @@ var InspectionObject = /*#__PURE__*/function () {
|
|
|
291
303
|
}, {
|
|
292
304
|
key: "gotoTarget",
|
|
293
305
|
value: function gotoTarget(targetPosition, targetProgress) {
|
|
294
|
-
var
|
|
306
|
+
var _this4 = this;
|
|
295
307
|
if (this.isAnimation) return;
|
|
296
308
|
this.isAnimation = true;
|
|
297
309
|
this.control.stop();
|
|
@@ -300,36 +312,36 @@ var InspectionObject = /*#__PURE__*/function () {
|
|
|
300
312
|
rotationMatrix.lookAt(targetPosition, this.model.position, this.model.up);
|
|
301
313
|
targetQuaternion.setFromRotationMatrix(rotationMatrix);
|
|
302
314
|
this.startRotate(targetQuaternion, this.model, function () {
|
|
303
|
-
var currentPosition =
|
|
315
|
+
var currentPosition = _this4.model.position;
|
|
304
316
|
var upCurve = new LineCurve3(currentPosition, new Vector3(currentPosition.x, currentPosition.y + 100, currentPosition.z));
|
|
305
|
-
var upControl = utils.moveWithLine(
|
|
317
|
+
var upControl = utils.moveWithLine(_this4.model, upCurve, 10, {
|
|
306
318
|
loop: false,
|
|
307
319
|
lookat: targetPosition
|
|
308
320
|
});
|
|
309
321
|
upControl.addEventListener('end', function () {
|
|
310
|
-
var tempCurve =
|
|
311
|
-
var tempControl = utils.moveWithLine(
|
|
322
|
+
var tempCurve = _this4.generateTempPath(currentPosition, new Vector3(targetPosition.x, targetPosition.y + 100, targetPosition.z));
|
|
323
|
+
var tempControl = utils.moveWithLine(_this4.model, tempCurve, 50, {
|
|
312
324
|
loop: false,
|
|
313
325
|
lookat: false
|
|
314
326
|
});
|
|
315
327
|
tempControl.addEventListener('end', function () {
|
|
316
|
-
var lastPosition =
|
|
328
|
+
var lastPosition = _this4.model.position;
|
|
317
329
|
var downCurve = new LineCurve3(lastPosition, new Vector3(lastPosition.x, lastPosition.y - 100, lastPosition.z));
|
|
318
|
-
var downControl = utils.moveWithLine(
|
|
330
|
+
var downControl = utils.moveWithLine(_this4.model, downCurve, 10, {
|
|
319
331
|
loop: false,
|
|
320
332
|
lookat: false
|
|
321
333
|
});
|
|
322
334
|
downControl.addEventListener('end', function () {
|
|
323
335
|
var rotationMatrix2 = new Matrix4();
|
|
324
336
|
var targetQuaternion2 = new Quaternion();
|
|
325
|
-
var targetPosition2 =
|
|
326
|
-
rotationMatrix2.lookAt(targetPosition2,
|
|
337
|
+
var targetPosition2 = _this4.inspection.curve.getPointAt((targetProgress + 0.01) % 1);
|
|
338
|
+
rotationMatrix2.lookAt(targetPosition2, _this4.model.position, _this4.model.up);
|
|
327
339
|
targetQuaternion2.setFromRotationMatrix(rotationMatrix2);
|
|
328
|
-
|
|
340
|
+
_this4.startRotate(targetQuaternion2, _this4.model, function () {
|
|
329
341
|
setTimeout(function () {
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
342
|
+
_this4.isAnimation = false;
|
|
343
|
+
_this4.control.setProgress(targetProgress);
|
|
344
|
+
_this4.control.contine();
|
|
333
345
|
}, 500);
|
|
334
346
|
});
|
|
335
347
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Clock","EdgesGeometry","Group","LineBasicMaterial","LineCurve3","LineSegments","Matrix4","ModelLoader","Quaternion","Vector3","use","utils","Css2DPoi","SpritePoi","Tween","createFinirMaterial","usePath","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","getProgress","targetMesh","updateMatrixWorld","localForward","worldForward","applyQuaternion","normalize","target","direction","sub","setFromUnitVectors","dotProduct","dot","angleRadians","acos","angleDegrees","flipQuaternion","setFromAxisAngle","multiply","lastFromPositin","currentPositin","targetPosition","vTo","vFrom","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","Number","finirMaterialV2","type","material","lineSegments","geometry","start","currentPosition","targetProgress","startRotate","upCurve","x","upControl","loop","lookat","addEventListener","tempCurve","generateTempPath","tempControl","lastPosition","downCurve","downControl","rotationMatrix2","targetQuaternion2","targetPosition2","getPointAt","setProgress","contine","speed","setSpeed"],"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 { 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\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 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 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 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.15 || Number(key) === 0.24 || Number(key) === 0.40)\n\n finirMesh.visible = false\n\n backwardTween.start()\n }, 5000)\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\n dispose() { }\n}\n\nexport default InspectionObject"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Clock","EdgesGeometry","Group","LineBasicMaterial","LineCurve3","LineSegments","Matrix4","ModelLoader","Quaternion","Vector3","use","utils","Css2DPoi","SpritePoi","Tween","createFinirMaterial","usePath","MessageType","sendToMessage","EMessageStatus","invertMap","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","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","Number","finirMaterialV2","type","material","lineSegments","geometry","start","currentPosition","targetProgress","startRotate","upCurve","x","upControl","loop","lookat","addEventListener","tempCurve","generateTempPath","tempControl","lastPosition","downCurve","downControl","rotationMatrix2","targetQuaternion2","targetPosition2","getPointAt","setProgress","contine","speed","setSpeed"],"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 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 sendToMessage(MessageType.Event, 'onReachTarget', EMessageStatus.Success, undefined, {\n target: invertMap[progress],\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 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 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.15 || Number(key) === 0.24 || Number(key) === 0.40)\n\n finirMesh.visible = false\n\n backwardTween.start()\n }, 5000)\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\n dispose() { }\n}\n\nexport default InspectionObject"],"mappings":"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"}
|
|
@@ -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
|
|
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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"}
|
package/dist/utils/abstract.js
CHANGED
|
@@ -10,6 +10,7 @@ export var provide = function provide(modules) {
|
|
|
10
10
|
return function (targetClass) {
|
|
11
11
|
utils.emitter.on('instantiation-completed', function (app) {
|
|
12
12
|
modules.forEach(function (module) {
|
|
13
|
+
// eslint-disable-next-line new-cap
|
|
13
14
|
targetClass.prototype[module.name] = new module.module(app);
|
|
14
15
|
});
|
|
15
16
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["utils","provide","modules","targetClass","emitter","on","app","forEach","module","prototype","name","BaseModule"],"sources":["../../src/utils/abstract.ts"],"sourcesContent":["import { utils } from '@anov/3d-core'\nimport type Anov3D from '../sdkEntry'\n\nexport const provide = (modules: any): any => {\n return (targetClass: any) => {\n utils.emitter.on('instantiation-completed', (app) => {\n modules.forEach((module: any) => {\n targetClass.prototype[module.name] = new module.module(app)\n })\n })\n }\n}\n\nexport class BaseModule {\n app: Anov3D\n constructor(app: Anov3D) {\n this.app = app\n }\n}\n"],"mappings":";;;;;;;AAAA,SAASA,KAAK,QAAQ,eAAe;AAGrC,OAAO,IAAMC,OAAO,GAAG,SAAVA,OAAO,CAAIC,OAAY,EAAU;EAC5C,OAAO,UAACC,WAAgB,EAAK;IAC3BH,KAAK,CAACI,OAAO,CAACC,EAAE,CAAC,yBAAyB,EAAE,UAACC,GAAG,EAAK;MACnDJ,OAAO,CAACK,OAAO,CAAC,UAACC,MAAW,EAAK;QAC/
|
|
1
|
+
{"version":3,"names":["utils","provide","modules","targetClass","emitter","on","app","forEach","module","prototype","name","BaseModule"],"sources":["../../src/utils/abstract.ts"],"sourcesContent":["import { utils } from '@anov/3d-core'\nimport type Anov3D from '../sdkEntry'\n\nexport const provide = (modules: any): any => {\n return (targetClass: any) => {\n utils.emitter.on('instantiation-completed', (app) => {\n modules.forEach((module: any) => {\n // eslint-disable-next-line new-cap\n targetClass.prototype[module.name] = new module.module(app)\n })\n })\n }\n}\n\nexport class BaseModule {\n app: Anov3D\n constructor(app: Anov3D) {\n this.app = app\n }\n}\n"],"mappings":";;;;;;;AAAA,SAASA,KAAK,QAAQ,eAAe;AAGrC,OAAO,IAAMC,OAAO,GAAG,SAAVA,OAAO,CAAIC,OAAY,EAAU;EAC5C,OAAO,UAACC,WAAgB,EAAK;IAC3BH,KAAK,CAACI,OAAO,CAACC,EAAE,CAAC,yBAAyB,EAAE,UAACC,GAAG,EAAK;MACnDJ,OAAO,CAACK,OAAO,CAAC,UAACC,MAAW,EAAK;QAC/B;QACAL,WAAW,CAACM,SAAS,CAACD,MAAM,CAACE,IAAI,CAAC,GAAG,IAAIF,MAAM,CAACA,MAAM,CAACF,GAAG,CAAC;MAC7D,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC;AACH,CAAC;AAED,WAAaK,UAAU,6BAErB,oBAAYL,GAAW,EAAE;EAAA;EAAA;EACvB,IAAI,CAACA,GAAG,GAAGA,GAAG;AAChB,CAAC"}
|