@anov/3d 0.0.81 → 0.0.83
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.js +1 -156
- package/dist/factory/unit/CameraPoi.js.map +1 -1
- package/dist/factory/unit/circle.d.ts +1 -0
- package/dist/factory/unit/circle.js +11 -3
- package/dist/factory/unit/circle.js.map +1 -1
- package/dist/factory/unit/poi.js +16 -13
- package/dist/factory/unit/poi.js.map +1 -1
- package/package.json +3 -3
|
@@ -91,162 +91,7 @@ var data = {
|
|
|
91
91
|
id: '1',
|
|
92
92
|
name: '异常监测点1',
|
|
93
93
|
warn: true,
|
|
94
|
-
position: [56, 21, 86]
|
|
95
|
-
heat_map: {
|
|
96
|
-
diameter: 10,
|
|
97
|
-
intensity: 1,
|
|
98
|
-
data: [{
|
|
99
|
-
value: 1257.21,
|
|
100
|
-
position: [-31.4, 0, 112.58]
|
|
101
|
-
}, {
|
|
102
|
-
value: 5188.86,
|
|
103
|
-
position: [59.81, 0, 108.16]
|
|
104
|
-
}, {
|
|
105
|
-
value: 8233.59,
|
|
106
|
-
position: [127.01, 0, 93.51]
|
|
107
|
-
}, {
|
|
108
|
-
value: 6160.32,
|
|
109
|
-
position: [-23.39, 0, 109.85]
|
|
110
|
-
}, {
|
|
111
|
-
value: 2089.44,
|
|
112
|
-
position: [86.24, 0, 98.25]
|
|
113
|
-
}, {
|
|
114
|
-
value: 7964.25,
|
|
115
|
-
position: [142.08, 0, 91.55]
|
|
116
|
-
}, {
|
|
117
|
-
value: 2891.54,
|
|
118
|
-
position: [-18.76, 0, 105.96]
|
|
119
|
-
}, {
|
|
120
|
-
value: 4016.91,
|
|
121
|
-
position: [129.83, 0, 58.93]
|
|
122
|
-
}, {
|
|
123
|
-
value: 1658.48,
|
|
124
|
-
position: [114.01, 0, 73.39]
|
|
125
|
-
}, {
|
|
126
|
-
value: 6015.75,
|
|
127
|
-
position: [95.08, 0, 81.71]
|
|
128
|
-
}, {
|
|
129
|
-
value: 2645.72,
|
|
130
|
-
position: [71.33, 0, 111.15]
|
|
131
|
-
}, {
|
|
132
|
-
value: 5328.71,
|
|
133
|
-
position: [53.08, 0, 100.99]
|
|
134
|
-
}, {
|
|
135
|
-
value: 7860.39,
|
|
136
|
-
position: [45.44, 0, 62.02]
|
|
137
|
-
}, {
|
|
138
|
-
value: 629.26,
|
|
139
|
-
position: [66.18, 0, 68.98]
|
|
140
|
-
}, {
|
|
141
|
-
value: 7998.3,
|
|
142
|
-
position: [66.91, 0, 61.18]
|
|
143
|
-
}, {
|
|
144
|
-
value: 1793.47,
|
|
145
|
-
position: [96.94, 0, 82.64]
|
|
146
|
-
}, {
|
|
147
|
-
value: 8761.08,
|
|
148
|
-
position: [79.27, 0, 98.97]
|
|
149
|
-
}, {
|
|
150
|
-
value: 171.17,
|
|
151
|
-
position: [-8.36, 0, 106.03]
|
|
152
|
-
}, {
|
|
153
|
-
value: 7927.78,
|
|
154
|
-
position: [19.1, 0, 68.98]
|
|
155
|
-
}, {
|
|
156
|
-
value: 1245.33,
|
|
157
|
-
position: [-12.97, 0, 100.53]
|
|
158
|
-
}, {
|
|
159
|
-
value: 5776.97,
|
|
160
|
-
position: [58.42, 0, 63.39]
|
|
161
|
-
}, {
|
|
162
|
-
value: 7995.19,
|
|
163
|
-
position: [27.95, 0, 71.28]
|
|
164
|
-
}, {
|
|
165
|
-
value: 5594.95,
|
|
166
|
-
position: [-40.68, 0, 113.13]
|
|
167
|
-
}, {
|
|
168
|
-
value: 1100.63,
|
|
169
|
-
position: [-25.66, 0, 112.21]
|
|
170
|
-
}, {
|
|
171
|
-
value: 4414.18,
|
|
172
|
-
position: [21.2, 0, 85.83]
|
|
173
|
-
}, {
|
|
174
|
-
value: 6992.41,
|
|
175
|
-
position: [46.74, 0, 99.35]
|
|
176
|
-
}, {
|
|
177
|
-
value: 9635.05,
|
|
178
|
-
position: [75.22, 0, 85.63]
|
|
179
|
-
}, {
|
|
180
|
-
value: 2605.65,
|
|
181
|
-
position: [-8.83, 0, 98.76]
|
|
182
|
-
}, {
|
|
183
|
-
value: 4383.19,
|
|
184
|
-
position: [71.33, 0, 99.15]
|
|
185
|
-
}, {
|
|
186
|
-
value: 8279.62,
|
|
187
|
-
position: [11.94, 0, 106.16]
|
|
188
|
-
}, {
|
|
189
|
-
value: 1684.68,
|
|
190
|
-
position: [92.12, 0, 88.78]
|
|
191
|
-
}, {
|
|
192
|
-
value: 9923.54,
|
|
193
|
-
position: [80.71, 0, 62.07]
|
|
194
|
-
}, {
|
|
195
|
-
value: 7653.27,
|
|
196
|
-
position: [148.54, 0, 60.52]
|
|
197
|
-
}, {
|
|
198
|
-
value: 5039.09,
|
|
199
|
-
position: [62.98, 0, 59.55]
|
|
200
|
-
}, {
|
|
201
|
-
value: 551.79,
|
|
202
|
-
position: [135.28, 0, 103.93]
|
|
203
|
-
}, {
|
|
204
|
-
value: 4524.42,
|
|
205
|
-
position: [-4.12, 0, 67.67]
|
|
206
|
-
}, {
|
|
207
|
-
value: 2241.86,
|
|
208
|
-
position: [101.14, 0, 101.28]
|
|
209
|
-
}, {
|
|
210
|
-
value: 3456.36,
|
|
211
|
-
position: [116.45, 0, 93.74]
|
|
212
|
-
}, {
|
|
213
|
-
value: 4585.21,
|
|
214
|
-
position: [43.88, 0, 86.63]
|
|
215
|
-
}, {
|
|
216
|
-
value: 4457.15,
|
|
217
|
-
position: [124.61, 0, 70.21]
|
|
218
|
-
}, {
|
|
219
|
-
value: 2494.11,
|
|
220
|
-
position: [29.21, 0, 104.71]
|
|
221
|
-
}, {
|
|
222
|
-
value: 1231.78,
|
|
223
|
-
position: [97.08, 0, 69.05]
|
|
224
|
-
}, {
|
|
225
|
-
value: 6806.42,
|
|
226
|
-
position: [4.42, 0, 102.62]
|
|
227
|
-
}, {
|
|
228
|
-
value: 603.51,
|
|
229
|
-
position: [108.36, 0, 94.25]
|
|
230
|
-
}, {
|
|
231
|
-
value: 3680.9,
|
|
232
|
-
position: [-35.15, 0, 99.69]
|
|
233
|
-
}, {
|
|
234
|
-
value: 6376.6,
|
|
235
|
-
position: [61.69, 0, 102.39]
|
|
236
|
-
}, {
|
|
237
|
-
value: 4364.56,
|
|
238
|
-
position: [43.58, 0, 112.51]
|
|
239
|
-
}, {
|
|
240
|
-
value: 7729.71,
|
|
241
|
-
position: [-5.25, 0, 113.76]
|
|
242
|
-
}, {
|
|
243
|
-
value: 9914.23,
|
|
244
|
-
position: [-13.56, 0, 84.21]
|
|
245
|
-
}, {
|
|
246
|
-
value: 5854.25,
|
|
247
|
-
position: [50, 0, 83.54]
|
|
248
|
-
}]
|
|
249
|
-
}
|
|
94
|
+
position: [56, 21, 86]
|
|
250
95
|
}, {
|
|
251
96
|
id: '2',
|
|
252
97
|
name: '甲烷监测点2',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AdditiveBlending","Box3","CircleGeometry","Clock","Color","DoubleSide","Group","MathUtils","Matrix4","Mesh","MeshBasicMaterial","ModelLoader","PerspectiveCamera","PlaneGeometry","ShaderMaterial","Sprite","SpriteMaterial","Texture","TextureLoader","Vector3","gsap","use","Css2DPoi","SpritePoi","heatMap","MessageType","sendToMessage","EMessageStatus","loadingManager","usePath","data","camera","id","name","position","fovDefault","fovRange","dialogCamera","rotation","probePoint","warn","heat_map","diameter","intensity","value","load","CameraPoi","gobal","Map","Set","dialogManage","Dialog","addStyle","loadGLTF","gltf","model","forEach","region","group","sprite","scale","y","Math","PI","fromArray","copy","add","scan","scene","clone","addScalar","x","cameraMesh","set","interactionManager","cameraEvent","point","MethanePoint","item","mesh","probeEvent","to","duration","ease","yoyo","repeat","create","warnMesh","rotatingRight","unFrame","useframe","children","z","abs","eventListener","fn","currentDialogMesh","isClose","close","headMap","isShow","closeHotmap","useScene","startPosition","cameraLookAt","getWorldDirection","Event","Success","undefined","targetPosition","toArray","camaraPosition","cameraUtil","target","setMeshVisible","getMesh","addEventListener","visible","removeEventListener","HeadMap","unClick","togglePoi","then","distanceTo","orbitControls","enabled","remove","removeFromParent","clear","geometry","texture","circle","map","side","transparent","rotateX","material","vertexShader","fragmentShader","blending","depthTest","color","numPoints","i","random","cameraManage","manage","careraParams","window","innerWidth","innerHeight","setCustomPerspective","cuteSprite","depthWrite","center","renderOrder","updateScale","Promise","reslove","setTimeout","borderMesh","getBorderMesh","cuteSprites","push","cameraPosition","angleX","degToRad","angleY","angleZ","rotationMatrix","makeRotationX","multiply","makeRotationY","makeRotationZ","cameraDirection","targetDirection","applyMatrix4","devicePixelRatio","bbox","setFromObject","min","project","max","w","h","dom","document","querySelector","clientWidth","clientHeight","ratio","fov","width","height","scaleFactor","minDistance","maxDistance","objectPosition","distance","clampedDistance","eventName","eventList","has","getBoxSize","dialogDiv","createElement","Object","assign","style","maskingDiv","className","appendChild","closeSpan","hLine","vLine","op","opList","key","btnSpan","handleClick","clock","longPress","time","getDelta","clearTimeout","sliderDiv","sliderBar","type","updateProjectionMatrix","css","styleElement","createTextNode","head","length","get","heatmap","container","createDom","gradient","TemperatureColorStops","len","points","val","floor","setData","greymap","heatMapMaterial","uniforms","greyMap","Zscale","u_color","u_opacity","_renderer","canvas","needsUpdate","greyTexture","tan","aspect","heatMapGeometry","heatMapPlane","backEle","innerHTML","body","zIndex","canvasList"],"sources":["../../../src/factory/unit/CameraPoi.ts"],"sourcesContent":["import type { Object3D } from '@anov/3d-core'\nimport { AdditiveBlending, Box3, CircleGeometry, Clock, Color, DoubleSide, Euler, Group, MathUtils, Matrix4, Mesh, MeshBasicMaterial, ModelLoader, PerspectiveCamera, PlaneGeometry, ShaderMaterial, Sprite, SpriteMaterial, Texture, TextureLoader, Vector3, WebGLRenderTarget, gsap, 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'\nimport { loadingManager, usePath } from '../3d'\n\n// @ts-ignore\nimport type Factory3D from '../3d'\n\nconst data = {\n camera: [\n {\n id: '1',\n name: '摄像头1',\n position: [-315, 30, -150],\n fovDefault: 60,\n fovRange: [30, 120],\n dialogCamera: {\n position: [-315, 30, -150],\n rotation: [30, 180, 0],\n },\n },\n {\n id: '2',\n name: '摄像头2',\n position: [30, 30, -150],\n fovDefault: 60,\n fovRange: [30, 120],\n dialogCamera: {\n position: [30, 30, -150],\n rotation: [30, 180, 0],\n },\n },\n {\n id: '3',\n name: '摄像头3',\n position: [360, 30, -150],\n fovDefault: 60,\n fovRange: [30, 120],\n dialogCamera: {\n position: [360, 30, -150],\n rotation: [30, 180, 0],\n },\n },\n {\n id: '4',\n name: '摄像头4',\n position: [-320, 30, 32],\n dialogCamera: {\n position: [-320, 30, 32],\n rotation: [30, 180, 0],\n },\n },\n {\n id: '5',\n name: '摄像头5',\n position: [-307, 30, 170],\n fovDefault: 60,\n fovRange: [30, 120],\n dialogCamera: {\n position: [-307, 30, 170],\n rotation: [30, 180, 0],\n },\n },\n {\n id: '6',\n name: '摄像头6',\n position: [77, 30, 96],\n fovDefault: 60,\n fovRange: [30, 120],\n dialogCamera: {\n position: [77, 30, 96],\n rotation: [30, 180, 0],\n },\n },\n {\n id: '7',\n name: '摄像头7',\n position: [404, 30, 85],\n fovDefault: 60,\n fovRange: [30, 120],\n dialogCamera: {\n position: [404, 30, 85],\n rotation: [30, 180, 0],\n },\n },\n ],\n probePoint: [\n {\n id: '1',\n name: '异常监测点1',\n warn: true,\n position: [56, 21, 86],\n heat_map: { diameter: 10, intensity: 1, data: [{ value: 1257.21, position: [-31.4, 0, 112.58] }, { value: 5188.86, position: [59.81, 0, 108.16] }, { value: 8233.59, position: [127.01, 0, 93.51] }, { value: 6160.32, position: [-23.39, 0, 109.85] }, { value: 2089.44, position: [86.24, 0, 98.25] }, { value: 7964.25, position: [142.08, 0, 91.55] }, { value: 2891.54, position: [-18.76, 0, 105.96] }, { value: 4016.91, position: [129.83, 0, 58.93] }, { value: 1658.48, position: [114.01, 0, 73.39] }, { value: 6015.75, position: [95.08, 0, 81.71] }, { value: 2645.72, position: [71.33, 0, 111.15] }, { value: 5328.71, position: [53.08, 0, 100.99] }, { value: 7860.39, position: [45.44, 0, 62.02] }, { value: 629.26, position: [66.18, 0, 68.98] }, { value: 7998.3, position: [66.91, 0, 61.18] }, { value: 1793.47, position: [96.94, 0, 82.64] }, { value: 8761.08, position: [79.27, 0, 98.97] }, { value: 171.17, position: [-8.36, 0, 106.03] }, { value: 7927.78, position: [19.1, 0, 68.98] }, { value: 1245.33, position: [-12.97, 0, 100.53] }, { value: 5776.97, position: [58.42, 0, 63.39] }, { value: 7995.19, position: [27.95, 0, 71.28] }, { value: 5594.95, position: [-40.68, 0, 113.13] }, { value: 1100.63, position: [-25.66, 0, 112.21] }, { value: 4414.18, position: [21.2, 0, 85.83] }, { value: 6992.41, position: [46.74, 0, 99.35] }, { value: 9635.05, position: [75.22, 0, 85.63] }, { value: 2605.65, position: [-8.83, 0, 98.76] }, { value: 4383.19, position: [71.33, 0, 99.15] }, { value: 8279.62, position: [11.94, 0, 106.16] }, { value: 1684.68, position: [92.12, 0, 88.78] }, { value: 9923.54, position: [80.71, 0, 62.07] }, { value: 7653.27, position: [148.54, 0, 60.52] }, { value: 5039.09, position: [62.98, 0, 59.55] }, { value: 551.79, position: [135.28, 0, 103.93] }, { value: 4524.42, position: [-4.12, 0, 67.67] }, { value: 2241.86, position: [101.14, 0, 101.28] }, { value: 3456.36, position: [116.45, 0, 93.74] }, { value: 4585.21, position: [43.88, 0, 86.63] }, { value: 4457.15, position: [124.61, 0, 70.21] }, { value: 2494.11, position: [29.21, 0, 104.71] }, { value: 1231.78, position: [97.08, 0, 69.05] }, { value: 6806.42, position: [4.42, 0, 102.62] }, { value: 603.51, position: [108.36, 0, 94.25] }, { value: 3680.9, position: [-35.15, 0, 99.69] }, { value: 6376.6, position: [61.69, 0, 102.39] }, { value: 4364.56, position: [43.58, 0, 112.51] }, { value: 7729.71, position: [-5.25, 0, 113.76] }, { value: 9914.23, position: [-13.56, 0, 84.21] }, { value: 5854.25, position: [50, 0, 83.54] }] },\n },\n {\n id: '2',\n name: '甲烷监测点2',\n warn: false,\n position: [384, 21, 75],\n },\n {\n id: '3',\n name: '甲烷监测点3',\n warn: false,\n position: [9, 21, -134],\n },\n ],\n}\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 currentDialogMesh: Group\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 data.camera.forEach((region) => {\n const group = new Group()\n group.name = region.id\n const sprite = new SpritePoi(`${usePath}camera.png`, { scale: [14, 14, 1] })\n sprite.rotation.y = Math.PI\n const position = new Vector3().fromArray(region.position)\n sprite.position.copy(position)\n group.add(sprite)\n\n const scan = model.scene.clone()\n scan.scale.addScalar(8)\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.name, group)\n this.gobal.interactionManager.add(group)\n this.cameraEvent(group, region)\n this.gobal.scene.add(group)\n })\n\n // 甲烷检测点\n const point = new MethanePoint()\n data.probePoint?.forEach((item) => {\n let mesh\n if (item.warn) {\n mesh = new SpritePoi(`${usePath}p4/warn.png`, { scale: [16, 16, 1] })\n this.gobal.interactionManager.add(mesh)\n this.probeEvent(mesh, item)\n // 使用GSAP创建跳动动画\n gsap.to(mesh.position, {\n y: '+=3', // 上跳10个单位\n duration: 0.2, // 动画持续时间\n ease: 'power1.inOut', // 缓动函数\n yoyo: true, // 循环\n repeat: -1, // 无限重复\n })\n }\n else {\n mesh = point.create()\n }\n mesh.position.copy(new Vector3().fromArray(item.position))\n this.warnMesh.set(item.name, mesh)\n\n this.gobal.scene.add(mesh)\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 fn = async () => {\n if (this.currentDialogMesh) {\n const isClose = this.currentDialogMesh.name === region.name\n this.dialogManage.close()\n if (isClose)\n return\n }\n else {\n if (this.headMap && this.headMap.isShow) {\n this.closeHotmap()\n }\n else {\n const { camera } = use.useScene()\n this.startPosition = camera.position.clone()\n // 获取相机朝向\n this.cameraLookAt = new Vector3() // 创建一个向量来存储相机朝向\n camera.getWorldDirection(this.cameraLookAt) // 获取相机朝向并存储在向量中\n }\n }\n\n sendToMessage(MessageType.Event, 'onCameraStatus', EMessageStatus.Success, undefined, { id: region.id })\n\n const position = new Vector3().fromArray(region.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 this.gobal.cameraUtil.set({\n position: camaraPosition,\n target: targetPosition,\n })\n this.setMeshVisible(false)\n\n this.currentDialogMesh = await this.dialogManage.getMesh(position, region) as Group\n this.dialogManage.addEventListener('close', () => {\n // 初始相机到原始位置\n this.gobal.cameraUtil.set({\n position: this.startPosition.toArray(),\n target: this.cameraLookAt.toArray(),\n })\n this.setMeshVisible(true)\n this.currentDialogMesh = null\n this.cameraMesh.forEach((mesh) => {\n mesh.visible = true\n })\n sendToMessage(MessageType.Event, 'onCancelCameraStatus', EMessageStatus.Success, undefined, { id: region.id })\n })\n this.currentDialogMesh.name = region.name\n this.gobal.scene.add(this.currentDialogMesh)\n }\n\n sprite.addEventListener('click', fn)\n this.eventListener.add(() => sprite.removeEventListener('click', fn))\n }\n\n probeEvent(sprite: SpritePoi, region) {\n const { camera } = use.useScene()\n this.headMap = new HeadMap()\n const unClick = sprite.addEventListener('click', async () => {\n if (!sprite.visible)\n return\n sprite.visible = false\n sendToMessage(MessageType.Event, 'onGasMonitorStatus', EMessageStatus.Success, undefined, { id: region.id })\n this.togglePoi(false)\n const position = new Vector3().fromArray(region.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 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 const { orbitControls } = use.useScene()\n orbitControls.enabled = false\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 this.eventListener.add(unClick)\n }\n\n setMeshVisible(visible) {\n this.cameraMesh.forEach(mesh => mesh.visible = visible)\n this.warnMesh.forEach(mesh => mesh.visible = visible)\n }\n\n closeHotmap() {\n if (!this.headMap)\n return\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 const { orbitControls } = use.useScene()\n orbitControls.enabled = true\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 this.dialogManage.close()\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 const { orbitControls } = use.useScene()\n orbitControls.enabled = true\n }\n this.eventListener.clear()\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(loadingManager).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 cuteSprites: Array<Object3D> = []\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, careraParams) {\n this.close()\n this.camera = new PerspectiveCamera(\n careraParams.fovDefault || 60, window.innerWidth / window.innerHeight, 0.1, 10000,\n )\n this.camera.position.copy(new Vector3().fromArray(careraParams.position))\n this.camera.rotation.set(Math.PI / 6, Math.PI, 0)\n\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(this.camera)\n\n const cuteSprite = new Sprite(new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false }))\n cuteSprite.center.set(0.5, 0.5)\n cuteSprite.renderOrder = 5\n cuteSprite.position.copy(position)\n\n const unFrame = use.useframe(() => {\n this.updateScale(cuteSprite)\n })\n this.eventListener.add(unFrame)\n\n return new Promise((reslove) => {\n setTimeout(() => {\n const borderMesh = this.getBorderMesh(this.camera, cuteSprite)\n const group = new Group()\n group.add(borderMesh)\n group.add(cuteSprite)\n this.cuteSprites.push(borderMesh)\n this.cuteSprites.push(cuteSprite)\n close()\n reslove(group)\n }, 1000)\n })\n }\n\n getTarget(cameraPosition, rotation = [0, 30, 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 let [w, h] = [window.innerWidth, window.innerHeight]\n const dom = document.querySelector('#app')\n if (dom) {\n w = dom.clientWidth\n h = dom.clientHeight\n }\n let ratio = 0\n if (camera.fov >= 60)\n ratio = -0.05 * (camera.fov - 60) / 30\n else\n ratio = 0.02 * (60 - camera.fov) / 30\n\n // 计算精灵在屏幕中的宽度和高度像素值\n let width = (max.x - min.x) * w / devicePixelRatio * (0.97 + ratio)\n let height = (max.y - min.y) * h / devicePixelRatio * (1.089 + ratio)\n\n const scaleFactor = devicePixelRatio * 0.5\n // 应用缩放系数\n width *= scaleFactor\n height *= scaleFactor\n\n return { width, height }\n }\n\n updateScale(sprite: Sprite) {\n const { camera } = use.useScene()\n const ratio = 60 / camera.fov\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.3281 / ratio), (0.8316 / ratio) * 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 += 10\n height += 10\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.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\n const handleClick = () => {\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\n let clock\n let longPress\n let time\n\n btnSpan.addEventListener('mousedown', () => {\n clock = new Clock()\n clock.getDelta()\n\n time = setTimeout(() => {\n longPress = use.useframe(handleClick)\n }, 500)\n })\n\n btnSpan.addEventListener('mouseup', () => {\n if (clock.getDelta() < 0.5)\n handleClick()\n\n clearTimeout(time)\n longPress && longPress()\n })\n\n // btnSpan.addEventListener('click', handleClick)\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 = '60'\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 const borderMesh = new Css2DPoi(dialogDiv)\n borderMesh.position.copy(sprite.position)\n return 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: 36px;\n height: 36px;\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: 28px;\n top: 28px;\n pointer-events: auto;\n }\n\n .dialog-close:hover{\n background-color:#c8a158;\n }\n\n .dialog-close-line{\n width: 20px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n top: 17px;\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: 152px;\n height: 152px;\n background-image: url(${usePath}p4/operate.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n position: absolute;\n right: 20px;\n bottom: 20px;\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: 10px solid transparent; /* 左边透明 */\n border-right: 10px solid transparent; /* 右边透明 */\n border-bottom: 10px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 13px);\n top: 25px;\n }\n .dialog-operate-top:hover{\n border-bottom-color:#fff2dd;\n }\n\n .dialog-operate-bottom{\n border-left: 10px solid transparent; /* 左边透明 */\n border-right: 10px solid transparent; /* 右边透明 */\n border-top: 10px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 13px);\n bottom: 25px;\n }\n\n .dialog-operate-bottom:hover{\n border-top-color:#fff2dd;\n }\n\n .dialog-operate-left{\n border-top: 10px solid transparent; /* 左边透明 */\n border-bottom: 10px solid transparent; /* 右边透明 */\n border-right: 10px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 13px);\n left: 25px;\n }\n .dialog-operate-left:hover{\n border-right-color:#fff2dd;\n }\n\n .dialog-operate-right{\n border-top: 10px solid transparent; /* 左边透明 */\n border-bottom: 10px solid transparent; /* 右边透明 */\n border-left: 10px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 13px);\n right: 25px;\n }\n\n .dialog-operate-right:hover{\n border-left-color:#fff2dd;\n }\n \n .dialog-slider-container {\n width: 17px;\n height: 420px;\n background: url(${usePath}p4/slider.png);\n background-size: 100% 100%;\n position:absolute;\n right:36px;\n top:120px;\n }\n\n .dialog-slider {\n -webkit-appearance: none;\n width: 420px;\n height: 17px;\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: -202px;\n margin-top: 200px;\n pointer-events: auto;\n }\n\n .dialog-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 9px;\n height: 36px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n\n .dialog-slider::-moz-range-thumb {\n width: 9px;\n height: 36px;\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 if (this.cuteSprites) {\n this.cuteSprites.forEach((mesh) => {\n mesh.remove()\n mesh.removeFromParent()\n })\n this.cuteSprites.length = 0\n }\n this.eventList.has('close') && this.eventList.get('close')()\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 isShow = false\n\n constructor() {\n\n }\n\n // 热力图\n create(distance) {\n this.isShow = true\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.eventList.has('close') && this.eventList.get('close')()\n this.canvasList.length = 0\n this.backEle && this.backEle.remove()\n this.heatMapPlane.removeFromParent()\n this.heatMapPlane.remove()\n this.isShow = false\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["AdditiveBlending","Box3","CircleGeometry","Clock","Color","DoubleSide","Group","MathUtils","Matrix4","Mesh","MeshBasicMaterial","ModelLoader","PerspectiveCamera","PlaneGeometry","ShaderMaterial","Sprite","SpriteMaterial","Texture","TextureLoader","Vector3","gsap","use","Css2DPoi","SpritePoi","heatMap","MessageType","sendToMessage","EMessageStatus","loadingManager","usePath","data","camera","id","name","position","fovDefault","fovRange","dialogCamera","rotation","probePoint","warn","load","CameraPoi","gobal","Map","Set","dialogManage","Dialog","addStyle","loadGLTF","gltf","model","forEach","region","group","sprite","scale","y","Math","PI","fromArray","copy","add","scan","scene","clone","addScalar","x","cameraMesh","set","interactionManager","cameraEvent","point","MethanePoint","item","mesh","probeEvent","to","duration","ease","yoyo","repeat","create","warnMesh","rotatingRight","unFrame","useframe","children","z","abs","eventListener","fn","currentDialogMesh","isClose","close","headMap","isShow","closeHotmap","useScene","startPosition","cameraLookAt","getWorldDirection","Event","Success","undefined","targetPosition","toArray","camaraPosition","cameraUtil","target","setMeshVisible","getMesh","addEventListener","visible","removeEventListener","HeadMap","unClick","togglePoi","then","distanceTo","orbitControls","enabled","remove","removeFromParent","clear","geometry","texture","circle","map","side","transparent","rotateX","material","vertexShader","fragmentShader","blending","depthTest","color","numPoints","i","random","cameraManage","manage","careraParams","window","innerWidth","innerHeight","setCustomPerspective","cuteSprite","depthWrite","center","renderOrder","updateScale","Promise","reslove","setTimeout","borderMesh","getBorderMesh","cuteSprites","push","cameraPosition","angleX","degToRad","angleY","angleZ","rotationMatrix","makeRotationX","multiply","makeRotationY","makeRotationZ","cameraDirection","targetDirection","applyMatrix4","devicePixelRatio","bbox","setFromObject","min","project","max","w","h","dom","document","querySelector","clientWidth","clientHeight","ratio","fov","width","height","scaleFactor","minDistance","maxDistance","objectPosition","distance","clampedDistance","eventName","eventList","has","getBoxSize","dialogDiv","createElement","Object","assign","style","maskingDiv","className","appendChild","closeSpan","hLine","vLine","op","opList","key","btnSpan","handleClick","clock","longPress","time","getDelta","clearTimeout","sliderDiv","sliderBar","type","value","updateProjectionMatrix","css","styleElement","createTextNode","head","length","get","heatmap","container","createDom","gradient","TemperatureColorStops","len","points","val","floor","setData","greymap","heatMapMaterial","uniforms","greyMap","Zscale","u_color","u_opacity","_renderer","canvas","needsUpdate","greyTexture","tan","aspect","heatMapGeometry","heatMapPlane","backEle","innerHTML","body","zIndex","canvasList"],"sources":["../../../src/factory/unit/CameraPoi.ts"],"sourcesContent":["import type { Object3D } from '@anov/3d-core'\nimport { AdditiveBlending, Box3, CircleGeometry, Clock, Color, DoubleSide, Euler, Group, MathUtils, Matrix4, Mesh, MeshBasicMaterial, ModelLoader, PerspectiveCamera, PlaneGeometry, ShaderMaterial, Sprite, SpriteMaterial, Texture, TextureLoader, Vector3, WebGLRenderTarget, gsap, 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'\nimport { loadingManager, usePath } from '../3d'\n\n// @ts-ignore\nimport type Factory3D from '../3d'\n\nconst data = {\n camera: [\n {\n id: '1',\n name: '摄像头1',\n position: [-315, 30, -150],\n fovDefault: 60,\n fovRange: [30, 120],\n dialogCamera: {\n position: [-315, 30, -150],\n rotation: [30, 180, 0],\n },\n },\n {\n id: '2',\n name: '摄像头2',\n position: [30, 30, -150],\n fovDefault: 60,\n fovRange: [30, 120],\n dialogCamera: {\n position: [30, 30, -150],\n rotation: [30, 180, 0],\n },\n },\n {\n id: '3',\n name: '摄像头3',\n position: [360, 30, -150],\n fovDefault: 60,\n fovRange: [30, 120],\n dialogCamera: {\n position: [360, 30, -150],\n rotation: [30, 180, 0],\n },\n },\n {\n id: '4',\n name: '摄像头4',\n position: [-320, 30, 32],\n dialogCamera: {\n position: [-320, 30, 32],\n rotation: [30, 180, 0],\n },\n },\n {\n id: '5',\n name: '摄像头5',\n position: [-307, 30, 170],\n fovDefault: 60,\n fovRange: [30, 120],\n dialogCamera: {\n position: [-307, 30, 170],\n rotation: [30, 180, 0],\n },\n },\n {\n id: '6',\n name: '摄像头6',\n position: [77, 30, 96],\n fovDefault: 60,\n fovRange: [30, 120],\n dialogCamera: {\n position: [77, 30, 96],\n rotation: [30, 180, 0],\n },\n },\n {\n id: '7',\n name: '摄像头7',\n position: [404, 30, 85],\n fovDefault: 60,\n fovRange: [30, 120],\n dialogCamera: {\n position: [404, 30, 85],\n rotation: [30, 180, 0],\n },\n },\n ],\n probePoint: [\n {\n id: '1',\n name: '异常监测点1',\n warn: true,\n position: [56, 21, 86],\n },\n {\n id: '2',\n name: '甲烷监测点2',\n warn: false,\n position: [384, 21, 75],\n },\n {\n id: '3',\n name: '甲烷监测点3',\n warn: false,\n position: [9, 21, -134],\n },\n ],\n}\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 currentDialogMesh: Group\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 data.camera.forEach((region) => {\n const group = new Group()\n group.name = region.id\n const sprite = new SpritePoi(`${usePath}camera.png`, { scale: [14, 14, 1] })\n sprite.rotation.y = Math.PI\n const position = new Vector3().fromArray(region.position)\n sprite.position.copy(position)\n group.add(sprite)\n\n const scan = model.scene.clone()\n scan.scale.addScalar(8)\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.name, group)\n this.gobal.interactionManager.add(group)\n this.cameraEvent(group, region)\n this.gobal.scene.add(group)\n })\n\n // 甲烷检测点\n const point = new MethanePoint()\n data.probePoint?.forEach((item) => {\n let mesh\n if (item.warn) {\n mesh = new SpritePoi(`${usePath}p4/warn.png`, { scale: [16, 16, 1] })\n this.gobal.interactionManager.add(mesh)\n this.probeEvent(mesh, item)\n // 使用GSAP创建跳动动画\n gsap.to(mesh.position, {\n y: '+=3', // 上跳10个单位\n duration: 0.2, // 动画持续时间\n ease: 'power1.inOut', // 缓动函数\n yoyo: true, // 循环\n repeat: -1, // 无限重复\n })\n }\n else {\n mesh = point.create()\n }\n mesh.position.copy(new Vector3().fromArray(item.position))\n this.warnMesh.set(item.name, mesh)\n\n this.gobal.scene.add(mesh)\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 fn = async () => {\n if (this.currentDialogMesh) {\n const isClose = this.currentDialogMesh.name === region.name\n this.dialogManage.close()\n if (isClose)\n return\n }\n else {\n if (this.headMap && this.headMap.isShow) {\n this.closeHotmap()\n }\n else {\n const { camera } = use.useScene()\n this.startPosition = camera.position.clone()\n // 获取相机朝向\n this.cameraLookAt = new Vector3() // 创建一个向量来存储相机朝向\n camera.getWorldDirection(this.cameraLookAt) // 获取相机朝向并存储在向量中\n }\n }\n\n sendToMessage(MessageType.Event, 'onCameraStatus', EMessageStatus.Success, undefined, { id: region.id })\n\n const position = new Vector3().fromArray(region.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 this.gobal.cameraUtil.set({\n position: camaraPosition,\n target: targetPosition,\n })\n this.setMeshVisible(false)\n\n this.currentDialogMesh = await this.dialogManage.getMesh(position, region) as Group\n this.dialogManage.addEventListener('close', () => {\n // 初始相机到原始位置\n this.gobal.cameraUtil.set({\n position: this.startPosition.toArray(),\n target: this.cameraLookAt.toArray(),\n })\n this.setMeshVisible(true)\n this.currentDialogMesh = null\n this.cameraMesh.forEach((mesh) => {\n mesh.visible = true\n })\n sendToMessage(MessageType.Event, 'onCancelCameraStatus', EMessageStatus.Success, undefined, { id: region.id })\n })\n this.currentDialogMesh.name = region.name\n this.gobal.scene.add(this.currentDialogMesh)\n }\n\n sprite.addEventListener('click', fn)\n this.eventListener.add(() => sprite.removeEventListener('click', fn))\n }\n\n probeEvent(sprite: SpritePoi, region) {\n const { camera } = use.useScene()\n this.headMap = new HeadMap()\n const unClick = sprite.addEventListener('click', async () => {\n if (!sprite.visible)\n return\n sprite.visible = false\n sendToMessage(MessageType.Event, 'onGasMonitorStatus', EMessageStatus.Success, undefined, { id: region.id })\n this.togglePoi(false)\n const position = new Vector3().fromArray(region.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 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 const { orbitControls } = use.useScene()\n orbitControls.enabled = false\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 this.eventListener.add(unClick)\n }\n\n setMeshVisible(visible) {\n this.cameraMesh.forEach(mesh => mesh.visible = visible)\n this.warnMesh.forEach(mesh => mesh.visible = visible)\n }\n\n closeHotmap() {\n if (!this.headMap)\n return\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 const { orbitControls } = use.useScene()\n orbitControls.enabled = true\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 this.dialogManage.close()\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 const { orbitControls } = use.useScene()\n orbitControls.enabled = true\n }\n this.eventListener.clear()\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(loadingManager).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 cuteSprites: Array<Object3D> = []\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, careraParams) {\n this.close()\n this.camera = new PerspectiveCamera(\n careraParams.fovDefault || 60, window.innerWidth / window.innerHeight, 0.1, 10000,\n )\n this.camera.position.copy(new Vector3().fromArray(careraParams.position))\n this.camera.rotation.set(Math.PI / 6, Math.PI, 0)\n\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(this.camera)\n\n const cuteSprite = new Sprite(new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false }))\n cuteSprite.center.set(0.5, 0.5)\n cuteSprite.renderOrder = 5\n cuteSprite.position.copy(position)\n\n const unFrame = use.useframe(() => {\n this.updateScale(cuteSprite)\n })\n this.eventListener.add(unFrame)\n\n return new Promise((reslove) => {\n setTimeout(() => {\n const borderMesh = this.getBorderMesh(this.camera, cuteSprite)\n const group = new Group()\n group.add(borderMesh)\n group.add(cuteSprite)\n this.cuteSprites.push(borderMesh)\n this.cuteSprites.push(cuteSprite)\n close()\n reslove(group)\n }, 1000)\n })\n }\n\n getTarget(cameraPosition, rotation = [0, 30, 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 let [w, h] = [window.innerWidth, window.innerHeight]\n const dom = document.querySelector('#app')\n if (dom) {\n w = dom.clientWidth\n h = dom.clientHeight\n }\n let ratio = 0\n if (camera.fov >= 60)\n ratio = -0.05 * (camera.fov - 60) / 30\n else\n ratio = 0.02 * (60 - camera.fov) / 30\n\n // 计算精灵在屏幕中的宽度和高度像素值\n let width = (max.x - min.x) * w / devicePixelRatio * (0.97 + ratio)\n let height = (max.y - min.y) * h / devicePixelRatio * (1.089 + ratio)\n\n const scaleFactor = devicePixelRatio * 0.5\n // 应用缩放系数\n width *= scaleFactor\n height *= scaleFactor\n\n return { width, height }\n }\n\n updateScale(sprite: Sprite) {\n const { camera } = use.useScene()\n const ratio = 60 / camera.fov\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.3281 / ratio), (0.8316 / ratio) * 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 += 10\n height += 10\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.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\n const handleClick = () => {\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\n let clock\n let longPress\n let time\n\n btnSpan.addEventListener('mousedown', () => {\n clock = new Clock()\n clock.getDelta()\n\n time = setTimeout(() => {\n longPress = use.useframe(handleClick)\n }, 500)\n })\n\n btnSpan.addEventListener('mouseup', () => {\n if (clock.getDelta() < 0.5)\n handleClick()\n\n clearTimeout(time)\n longPress && longPress()\n })\n\n // btnSpan.addEventListener('click', handleClick)\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 = '60'\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 const borderMesh = new Css2DPoi(dialogDiv)\n borderMesh.position.copy(sprite.position)\n return 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: 36px;\n height: 36px;\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: 28px;\n top: 28px;\n pointer-events: auto;\n }\n\n .dialog-close:hover{\n background-color:#c8a158;\n }\n\n .dialog-close-line{\n width: 20px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n top: 17px;\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: 152px;\n height: 152px;\n background-image: url(${usePath}p4/operate.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n position: absolute;\n right: 20px;\n bottom: 20px;\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: 10px solid transparent; /* 左边透明 */\n border-right: 10px solid transparent; /* 右边透明 */\n border-bottom: 10px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 13px);\n top: 25px;\n }\n .dialog-operate-top:hover{\n border-bottom-color:#fff2dd;\n }\n\n .dialog-operate-bottom{\n border-left: 10px solid transparent; /* 左边透明 */\n border-right: 10px solid transparent; /* 右边透明 */\n border-top: 10px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 13px);\n bottom: 25px;\n }\n\n .dialog-operate-bottom:hover{\n border-top-color:#fff2dd;\n }\n\n .dialog-operate-left{\n border-top: 10px solid transparent; /* 左边透明 */\n border-bottom: 10px solid transparent; /* 右边透明 */\n border-right: 10px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 13px);\n left: 25px;\n }\n .dialog-operate-left:hover{\n border-right-color:#fff2dd;\n }\n\n .dialog-operate-right{\n border-top: 10px solid transparent; /* 左边透明 */\n border-bottom: 10px solid transparent; /* 右边透明 */\n border-left: 10px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 13px);\n right: 25px;\n }\n\n .dialog-operate-right:hover{\n border-left-color:#fff2dd;\n }\n \n .dialog-slider-container {\n width: 17px;\n height: 420px;\n background: url(${usePath}p4/slider.png);\n background-size: 100% 100%;\n position:absolute;\n right:36px;\n top:120px;\n }\n\n .dialog-slider {\n -webkit-appearance: none;\n width: 420px;\n height: 17px;\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: -202px;\n margin-top: 200px;\n pointer-events: auto;\n }\n\n .dialog-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 9px;\n height: 36px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n\n .dialog-slider::-moz-range-thumb {\n width: 9px;\n height: 36px;\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 if (this.cuteSprites) {\n this.cuteSprites.forEach((mesh) => {\n mesh.remove()\n mesh.removeFromParent()\n })\n this.cuteSprites.length = 0\n }\n this.eventList.has('close') && this.eventList.get('close')()\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 isShow = false\n\n constructor() {\n\n }\n\n // 热力图\n create(distance) {\n this.isShow = true\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.eventList.has('close') && this.eventList.get('close')()\n this.canvasList.length = 0\n this.backEle && this.backEle.remove()\n this.heatMapPlane.removeFromParent()\n this.heatMapPlane.remove()\n this.isShow = false\n }\n}\n"],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ var CircleManage = /*#__PURE__*/function () {
|
|
|
19
19
|
_defineProperty(this, "interactionManager", void 0);
|
|
20
20
|
_defineProperty(this, "peoplePoi", void 0);
|
|
21
21
|
_defineProperty(this, "clickPoi", void 0);
|
|
22
|
+
_defineProperty(this, "eventListener", new Set());
|
|
22
23
|
_defineProperty(this, "poiRemoveEventListener", void 0);
|
|
23
24
|
this.gobal = gobal;
|
|
24
25
|
this.scene = gobal.scene.scene;
|
|
@@ -56,11 +57,15 @@ var CircleManage = /*#__PURE__*/function () {
|
|
|
56
57
|
value: function remove() {
|
|
57
58
|
this.circleMesh.forEach(function (mesh) {
|
|
58
59
|
mesh.removeFromParent();
|
|
60
|
+
mesh.remove();
|
|
59
61
|
});
|
|
60
62
|
this.circleMesh.clear();
|
|
61
63
|
this.peoplePoi && this.peoplePoi.removeFromParent();
|
|
62
64
|
this.peoplePoi = this.clickPoi = null;
|
|
63
65
|
if (this.poiRemoveEventListener) this.poiRemoveEventListener();
|
|
66
|
+
this.eventListener && this.eventListener.forEach(function (fn) {
|
|
67
|
+
fn();
|
|
68
|
+
});
|
|
64
69
|
}
|
|
65
70
|
}, {
|
|
66
71
|
key: "setVisible",
|
|
@@ -124,7 +129,7 @@ var CircleManage = /*#__PURE__*/function () {
|
|
|
124
129
|
return orbitControls === null || orbitControls === void 0 ? void 0 : orbitControls.removeEventListener('change', fn);
|
|
125
130
|
};
|
|
126
131
|
};
|
|
127
|
-
mesh.addEventListener('click', function () {
|
|
132
|
+
var unClick = mesh.addEventListener('click', function () {
|
|
128
133
|
var position = _this2.getCameraPosition(new Vector3().fromArray(data.position).add(new Vector3(0, 10, 0)), 43.5);
|
|
129
134
|
_this2.gobal.cameraUtil.set({
|
|
130
135
|
position: position.toArray(),
|
|
@@ -133,16 +138,19 @@ var CircleManage = /*#__PURE__*/function () {
|
|
|
133
138
|
emitter.emit('peoplemanagement-person-click', data);
|
|
134
139
|
showPeoplePoi(data, 'click');
|
|
135
140
|
});
|
|
136
|
-
|
|
141
|
+
this.eventListener.add(unClick);
|
|
142
|
+
var unMouseover = mesh.addEventListener('mouseover', function () {
|
|
137
143
|
showPeoplePoi(data);
|
|
138
144
|
});
|
|
139
|
-
|
|
145
|
+
this.eventListener.add(unMouseover);
|
|
146
|
+
var unMouseout = mesh.addEventListener('mouseout', function () {
|
|
140
147
|
var _this2$clickPoi;
|
|
141
148
|
if (_this2.peoplePoi && _this2.peoplePoi.name !== ((_this2$clickPoi = _this2.clickPoi) === null || _this2$clickPoi === void 0 ? void 0 : _this2$clickPoi.name)) {
|
|
142
149
|
_this2.peoplePoi.removeFromParent();
|
|
143
150
|
_this2.peoplePoi = null;
|
|
144
151
|
}
|
|
145
152
|
});
|
|
153
|
+
this.eventListener.add(unMouseout);
|
|
146
154
|
}
|
|
147
155
|
|
|
148
156
|
/// <summary>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Vector3","use","utils","EAnimationType","SpritePoi","regionMap","usePath","emitter","CircleManage","gobal","Map","scene","interactionManager","storeManagement","get","belongTo","remove","dom","document","createElement","style","width","height","imgs","img","data","getData","forEach","people","cloneNode","src","Math","floor","random","mesh","scale","name","id","position","fromArray","add","bindEvent","circleMesh","set","removeFromParent","clear","peoplePoi","clickPoi","poiRemoveEventListener","visible","poi","showPeoplePoi","eventName","Object","assign","fontSize","backgroundImage","backgroundSize","backgroundRepeat","display","justifyContent","alignItems","color","pointerEvents","padding","innerText","animation","type","fadeIn","duration","copy","clone","updateScale","useScene","orbitControls","fn","addEventListener","removeEventListener","getCameraPosition","cameraUtil","toArray","target","then","emit","ratio","minDistance","maxDistance","camera","distance","distanceTo","clampedDistance","max","min","scaleValue","x","y","targetPosition","cameraPosition","direction","subVectors","normalize","multiplyScalar","regionKey","keys","find","key"],"sources":["../../../src/factory/unit/circle.ts"],"sourcesContent":["import { MeshPhysicalMaterial, SphereGeometry, Vector3, use, utils } from '@anov/3d-core'\nimport type { InteractionManager, Mesh, Object3D, Scene } from '@anov/3d-core'\nimport { Css2DPoi, EAnimationType, SpritePoi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { regionMap } from '../regionData'\n\nimport { usePath } from '../3d'\n\nconst { emitter } = utils\n\nclass CircleManage {\n private gobal: Factory3D\n private scene: Scene\n readonly circleMesh: Map<string, Object3D> = new Map()\n private interactionManager\n private peoplePoi!: SpritePoi | null\n private clickPoi: Object3D | null\n poiRemoveEventListener: Function\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n generateCircle(belongTo: string) {\n this.remove()\n // const geometry = new SphereGeometry(2, 32, 16)\n // const material = new MeshPhysicalMaterial({ color: 0xFED602, metalness: 0.1, roughness: 0.5 })\n // const circle = new Mesh(geometry, material)\n const dom = document.createElement('img')\n dom.style.width = '50px'\n dom.style.height = '87px'\n const imgs = ['左', '中', '右']\n let img\n const data = this.getData(belongTo)\n data.forEach((people) => {\n img = dom.cloneNode() as HTMLImageElement\n img.src = `${usePath}p2/${imgs[Math.floor(Math.random() * 3)]}.png`\n const mesh = new SpritePoi(img, {\n scale: [10, 16, 1],\n })\n mesh.name = people.id\n mesh.position.fromArray(people.position)\n this.scene.add(mesh)\n this.bindEvent(mesh, people)\n this.circleMesh.set(people.id, mesh)\n })\n }\n\n remove() {\n this.circleMesh.forEach((mesh) => {\n mesh.removeFromParent()\n })\n this.circleMesh.clear()\n this.peoplePoi && this.peoplePoi.removeFromParent()\n this.peoplePoi = this.clickPoi = null\n if (this.poiRemoveEventListener)\n this.poiRemoveEventListener()\n }\n\n setVisible(visible = true) {\n // 控制CYCLE的隐藏、显示\n this.circleMesh.forEach((poi) => {\n poi.visible = visible\n })\n }\n\n private bindEvent(mesh: Object3D, data) {\n this.interactionManager.add(mesh)\n\n const showPeoplePoi = (data: any, eventName = 'hover') => {\n if (this.peoplePoi) {\n if (this.peoplePoi.name !== data.id) {\n this.peoplePoi.removeFromParent()\n }\n else {\n if (eventName === 'click')\n this.clickPoi = this.peoplePoi\n return\n }\n }\n this.clickPoi = null\n\n const dom = document.createElement('div')\n Object.assign(dom.style, {\n fontSize: '24px',\n backgroundImage: `url(${usePath}person.png)`,\n backgroundSize: '100% 100%',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '#fff',\n pointerEvents: 'auto',\n height: '67px',\n width: '214px',\n padding: '0 0 12px 15px',\n })\n dom.innerText = data.name\n\n this.peoplePoi = new SpritePoi(dom, {\n animation: {\n type: EAnimationType.fadeIn,\n duration: 0.2,\n },\n })\n this.peoplePoi.name = data.id\n this.peoplePoi.position.copy(mesh.position.clone().add(new Vector3(0, 16, 0)))\n this.updateScale(this.peoplePoi, 3.2)\n this.scene.add(this.peoplePoi)\n\n const { orbitControls } = use.useScene()\n if (this.poiRemoveEventListener)\n this.poiRemoveEventListener()\n const fn = () => this.updateScale(this.peoplePoi)\n orbitControls?.addEventListener('change', fn)\n this.poiRemoveEventListener = () => orbitControls?.removeEventListener('change', fn)\n }\n\n mesh.addEventListener('click', () => {\n const position = this.getCameraPosition(new Vector3().fromArray(data.position).add(new Vector3(0, 10, 0)), 43.5)\n this.gobal.cameraUtil.set({\n position: position.toArray(),\n target: [data.position[0], data.position[1] + 10, data.position[2]],\n }).then(() => {})\n emitter.emit('peoplemanagement-person-click', data)\n showPeoplePoi(data, 'click')\n })\n mesh.addEventListener('mouseover', () => {\n showPeoplePoi(data)\n })\n mesh.addEventListener('mouseout', () => {\n if (this.peoplePoi && this.peoplePoi.name !== this.clickPoi?.name) {\n this.peoplePoi.removeFromParent()\n this.peoplePoi = null\n }\n })\n }\n\n /// <summary>\n /// 按照距离缩放,距离越远,缩放越大\n /// </summary>\n updateScale(poi: SpritePoi, ratio = 0) {\n if (!poi)\n return\n // 距离限制范围的值,用于计算缩放比例\n const minDistance = 0.1\n const maxDistance = 1000000\n const { camera } = use.useScene()\n\n // 计算相机和物体之间的距离\n const distance = camera.position?.distanceTo(poi.position) || 0.1\n\n const clampedDistance = Math.max(minDistance, Math.min(maxDistance, distance))\n\n const scaleValue = clampedDistance * 0.03\n if (!ratio && poi.scale)\n ratio = poi.scale.x / poi.scale.y\n\n // 按照缩放系数和距离进行缩放,缩放系数应该约定好一个固定值\n poi.scale.copy(new Vector3(scaleValue * ratio, scaleValue, 1))\n }\n\n private getCameraPosition(targetPosition, distance) {\n // 计算相机的位置\n const cameraPosition = new Vector3()\n const direction = new Vector3() // 目标对象指向相机的方向\n\n const { camera } = use.useScene()\n // 计算相机朝向目标对象的方向\n direction.subVectors(camera.position, targetPosition).normalize()\n\n // 将相机沿着目标对象方向移动以保持距离\n cameraPosition.copy(targetPosition).add(direction.multiplyScalar(distance))\n return cameraPosition\n }\n\n private getData(belongTo) {\n const regionKey = Object.keys(regionMap).find((key: any) => {\n return regionMap[key].id === belongTo\n })\n\n return regionMap[regionKey] && regionMap[regionKey].people\n }\n}\n\nexport default CircleManage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Vector3","use","utils","EAnimationType","SpritePoi","regionMap","usePath","emitter","CircleManage","gobal","Map","Set","scene","interactionManager","storeManagement","get","belongTo","remove","dom","document","createElement","style","width","height","imgs","img","data","getData","forEach","people","cloneNode","src","Math","floor","random","mesh","scale","name","id","position","fromArray","add","bindEvent","circleMesh","set","removeFromParent","clear","peoplePoi","clickPoi","poiRemoveEventListener","eventListener","fn","visible","poi","showPeoplePoi","eventName","Object","assign","fontSize","backgroundImage","backgroundSize","backgroundRepeat","display","justifyContent","alignItems","color","pointerEvents","padding","innerText","animation","type","fadeIn","duration","copy","clone","updateScale","useScene","orbitControls","addEventListener","removeEventListener","unClick","getCameraPosition","cameraUtil","toArray","target","then","emit","unMouseover","unMouseout","ratio","minDistance","maxDistance","camera","distance","distanceTo","clampedDistance","max","min","scaleValue","x","y","targetPosition","cameraPosition","direction","subVectors","normalize","multiplyScalar","regionKey","keys","find","key"],"sources":["../../../src/factory/unit/circle.ts"],"sourcesContent":["import { Vector3, use, utils } from '@anov/3d-core'\nimport type { InteractionManager, Mesh, Object3D, Scene } from '@anov/3d-core'\nimport { EAnimationType, SpritePoi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { regionMap } from '../regionData'\n\nimport { usePath } from '../3d'\n\nconst { emitter } = utils\n\nclass CircleManage {\n private gobal: Factory3D\n private scene: Scene\n readonly circleMesh: Map<string, Object3D> = new Map()\n private interactionManager\n private peoplePoi!: SpritePoi | null\n private clickPoi: Object3D | null\n eventListener: Set<Function> = new Set()\n poiRemoveEventListener: Function\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n generateCircle(belongTo: string) {\n this.remove()\n // const geometry = new SphereGeometry(2, 32, 16)\n // const material = new MeshPhysicalMaterial({ color: 0xFED602, metalness: 0.1, roughness: 0.5 })\n // const circle = new Mesh(geometry, material)\n const dom = document.createElement('img')\n dom.style.width = '50px'\n dom.style.height = '87px'\n const imgs = ['左', '中', '右']\n let img\n const data = this.getData(belongTo)\n data.forEach((people) => {\n img = dom.cloneNode() as HTMLImageElement\n img.src = `${usePath}p2/${imgs[Math.floor(Math.random() * 3)]}.png`\n const mesh = new SpritePoi(img, {\n scale: [10, 16, 1],\n })\n mesh.name = people.id\n mesh.position.fromArray(people.position)\n this.scene.add(mesh)\n this.bindEvent(mesh, people)\n this.circleMesh.set(people.id, mesh)\n })\n }\n\n remove() {\n this.circleMesh.forEach((mesh) => {\n mesh.removeFromParent()\n mesh.remove()\n })\n this.circleMesh.clear()\n this.peoplePoi && this.peoplePoi.removeFromParent()\n this.peoplePoi = this.clickPoi = null\n if (this.poiRemoveEventListener)\n this.poiRemoveEventListener()\n\n this.eventListener && this.eventListener.forEach((fn) => {\n fn()\n })\n }\n\n setVisible(visible = true) {\n // 控制CYCLE的隐藏、显示\n this.circleMesh.forEach((poi) => {\n poi.visible = visible\n })\n }\n\n private bindEvent(mesh: SpritePoi, data) {\n this.interactionManager.add(mesh)\n\n const showPeoplePoi = (data: any, eventName = 'hover') => {\n if (this.peoplePoi) {\n if (this.peoplePoi.name !== data.id) {\n this.peoplePoi.removeFromParent()\n }\n else {\n if (eventName === 'click')\n this.clickPoi = this.peoplePoi\n return\n }\n }\n this.clickPoi = null\n\n const dom = document.createElement('div')\n Object.assign(dom.style, {\n fontSize: '24px',\n backgroundImage: `url(${usePath}person.png)`,\n backgroundSize: '100% 100%',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '#fff',\n pointerEvents: 'auto',\n height: '67px',\n width: '214px',\n padding: '0 0 12px 15px',\n })\n dom.innerText = data.name\n\n this.peoplePoi = new SpritePoi(dom, {\n animation: {\n type: EAnimationType.fadeIn,\n duration: 0.2,\n },\n })\n this.peoplePoi.name = data.id\n this.peoplePoi.position.copy(mesh.position.clone().add(new Vector3(0, 16, 0)))\n this.updateScale(this.peoplePoi, 3.2)\n this.scene.add(this.peoplePoi)\n\n const { orbitControls } = use.useScene()\n if (this.poiRemoveEventListener)\n this.poiRemoveEventListener()\n const fn = () => this.updateScale(this.peoplePoi)\n orbitControls?.addEventListener('change', fn)\n this.poiRemoveEventListener = () => orbitControls?.removeEventListener('change', fn)\n }\n\n const unClick = mesh.addEventListener('click', () => {\n const position = this.getCameraPosition(new Vector3().fromArray(data.position).add(new Vector3(0, 10, 0)), 43.5)\n this.gobal.cameraUtil.set({\n position: position.toArray(),\n target: [data.position[0], data.position[1] + 10, data.position[2]],\n }).then(() => {})\n emitter.emit('peoplemanagement-person-click', data)\n showPeoplePoi(data, 'click')\n })\n this.eventListener.add(unClick)\n const unMouseover = mesh.addEventListener('mouseover', () => {\n showPeoplePoi(data)\n })\n this.eventListener.add(unMouseover)\n const unMouseout = mesh.addEventListener('mouseout', () => {\n if (this.peoplePoi && this.peoplePoi.name !== this.clickPoi?.name) {\n this.peoplePoi.removeFromParent()\n this.peoplePoi = null\n }\n })\n this.eventListener.add(unMouseout)\n }\n\n /// <summary>\n /// 按照距离缩放,距离越远,缩放越大\n /// </summary>\n updateScale(poi: SpritePoi, ratio = 0) {\n if (!poi)\n return\n // 距离限制范围的值,用于计算缩放比例\n const minDistance = 0.1\n const maxDistance = 1000000\n const { camera } = use.useScene()\n\n // 计算相机和物体之间的距离\n const distance = camera.position?.distanceTo(poi.position) || 0.1\n\n const clampedDistance = Math.max(minDistance, Math.min(maxDistance, distance))\n\n const scaleValue = clampedDistance * 0.03\n if (!ratio && poi.scale)\n ratio = poi.scale.x / poi.scale.y\n\n // 按照缩放系数和距离进行缩放,缩放系数应该约定好一个固定值\n poi.scale.copy(new Vector3(scaleValue * ratio, scaleValue, 1))\n }\n\n private getCameraPosition(targetPosition, distance) {\n // 计算相机的位置\n const cameraPosition = new Vector3()\n const direction = new Vector3() // 目标对象指向相机的方向\n\n const { camera } = use.useScene()\n // 计算相机朝向目标对象的方向\n direction.subVectors(camera.position, targetPosition).normalize()\n\n // 将相机沿着目标对象方向移动以保持距离\n cameraPosition.copy(targetPosition).add(direction.multiplyScalar(distance))\n return cameraPosition\n }\n\n private getData(belongTo) {\n const regionKey = Object.keys(regionMap).find((key: any) => {\n return regionMap[key].id === belongTo\n })\n\n return regionMap[regionKey] && regionMap[regionKey].people\n }\n}\n\nexport default CircleManage"],"mappings":"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"}
|
package/dist/factory/unit/poi.js
CHANGED
|
@@ -35,7 +35,7 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
35
35
|
value: function () {
|
|
36
36
|
var _generatePoi = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
37
37
|
var _this = this;
|
|
38
|
-
var wordLength, ratio,
|
|
38
|
+
var wordLength, ratio, unFrame;
|
|
39
39
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
40
40
|
while (1) switch (_context2.prev = _context2.next) {
|
|
41
41
|
case 0:
|
|
@@ -130,17 +130,17 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
130
130
|
return _ref.apply(this, arguments);
|
|
131
131
|
};
|
|
132
132
|
}());
|
|
133
|
-
|
|
133
|
+
unFrame = use.useframe(function () {
|
|
134
134
|
_this.poiMesh.forEach(function (poi) {
|
|
135
135
|
_this.updateScale(poi);
|
|
136
136
|
});
|
|
137
|
-
}; // 控制POI始终是一个大小
|
|
138
|
-
orbitControls = use.useScene().orbitControls;
|
|
139
|
-
orbitControls === null || orbitControls === void 0 ? void 0 : orbitControls.addEventListener('change', fn);
|
|
140
|
-
this.poiEventListener.add(function () {
|
|
141
|
-
return orbitControls === null || orbitControls === void 0 ? void 0 : orbitControls.removeEventListener('change', fn);
|
|
142
137
|
});
|
|
143
|
-
|
|
138
|
+
this.poiEventListener.add(unFrame);
|
|
139
|
+
// // 控制POI始终是一个大小
|
|
140
|
+
// const orbitControls = use.useScene().orbitControls
|
|
141
|
+
// orbitControls?.addEventListener('change', fn)
|
|
142
|
+
// this.poiEventListener.add(() => orbitControls?.removeEventListener('change', fn))
|
|
143
|
+
case 3:
|
|
144
144
|
case "end":
|
|
145
145
|
return _context2.stop();
|
|
146
146
|
}
|
|
@@ -222,10 +222,10 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
222
222
|
this.poiEventListener.forEach(function (f) {
|
|
223
223
|
f();
|
|
224
224
|
});
|
|
225
|
+
this.poiEventListener.clear();
|
|
225
226
|
// 移除面板
|
|
226
227
|
if (this.dialogPoi) this.dialogPoi.removeFromParent();
|
|
227
228
|
this.poiMesh.clear();
|
|
228
|
-
this.poiEventListener.clear();
|
|
229
229
|
}
|
|
230
230
|
}, {
|
|
231
231
|
key: "reset",
|
|
@@ -248,6 +248,10 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
248
248
|
value: function addDialogPanel(data, position) {
|
|
249
249
|
var _this3 = this;
|
|
250
250
|
// 添加面板
|
|
251
|
+
// , {
|
|
252
|
+
// type: EAnimationType.fadeIn,
|
|
253
|
+
// duration: 0.3,
|
|
254
|
+
// }
|
|
251
255
|
this.dialogPoi = new Css2DPoi({
|
|
252
256
|
title: data.title,
|
|
253
257
|
content: data.poi.content
|
|
@@ -255,16 +259,15 @@ var PoiManage = /*#__PURE__*/function () {
|
|
|
255
259
|
animation: [{
|
|
256
260
|
type: EAnimationType.grow,
|
|
257
261
|
duration: 1
|
|
258
|
-
}, {
|
|
259
|
-
type: EAnimationType.fadeIn,
|
|
260
|
-
duration: 0.3
|
|
261
262
|
}, {
|
|
262
263
|
type: EAnimationType.print,
|
|
263
264
|
duration: 0.02
|
|
264
265
|
}]
|
|
265
266
|
});
|
|
266
267
|
this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)));
|
|
267
|
-
|
|
268
|
+
setTimeout(function () {
|
|
269
|
+
return _this3.scene.add(_this3.dialogPoi);
|
|
270
|
+
});
|
|
268
271
|
this.interactionManager.add(this.dialogPoi);
|
|
269
272
|
this.dialogPoi.addEventListener('click', function () {
|
|
270
273
|
_this3.dialogPoi.remove();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Vector3","use","utils","Css2DPoi","EAnimationType","SpritePoi","usePath","regionMap","walllMaterial","PoiManage","gobal","Map","Set","scene","wallManage","wall","interactionManager","storeManagement","get","Object","keys","forEach","key","region","wordLength","title","length","ratio","Math","max","poiHeight","option","animation","type","grow","duration","fadeIn","sprite","getDom","position","copy","fromArray","poi","add","updateScale","poiMesh","set","id","target","regionPlane","planeMesh","changeWallState","show","dialogPoi","visible","wallMesh","uniforms","value","wallGrowFrame","useframe","addEventListener","unClick","event","reset","addDialogPanel","point","poiEventListener","fn","orbitControls","useScene","removeEventListener","minDistance","maxDistance","camera","distance","distanceTo","clampedDistance","min","scaleValue","scale","x","y","data","dom","document","createElement","assign","style","fontSize","backgroundImage","backgroundSize","backgroundRepeat","display","justifyContent","alignItems","textAlign","color","pointerEvents","cursor","height","minWidth","width","padding","img","src","left","top","appendChild","label","innerText","fontWeight","remove","removeFromParent","f","clear","content","print","clone"],"sources":["../../../src/factory/unit/poi.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { Mesh, Vector3, use, utils } from '@anov/3d-core'\nimport { Css2DPoi, EAnimationType, SpritePoi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { usePath } from '../3d'\nimport { regionMap } from '../regionData'\nimport type WallManage from './wall'\nimport { walllMaterial } from './wall'\n\nclass PoiManage {\n private gobal: Factory3D\n private scene: Scene\n private dialogPoi: Object3D\n readonly poiMesh: Map<string, Object3D> = new Map()\n readonly poiEventListener: Set<Function> = new Set()\n private wallManage: WallManage\n private interactionManager\n private poiWidth: number\n private poiHeight = 262\n\n constructor(gobal) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.wallManage = gobal.wall\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n async generatePoi() {\n let wordLength, ratio\n Object.keys(regionMap).forEach(async (key: string) => {\n const region = regionMap[key]\n wordLength = region.title.length\n ratio = Math.max(wordLength * (wordLength > 6 ? 34 : 40), 180) / this.poiHeight\n const option = {\n animation: [{\n type: EAnimationType.grow,\n duration: 1,\n }, {\n type: EAnimationType.fadeIn,\n duration: 0.2,\n }],\n }\n const sprite = new SpritePoi(this.getDom(region), option)\n sprite.position.copy(new Vector3().fromArray(region.poi.position))\n this.scene.add(sprite)\n this.updateScale(sprite, ratio)\n this.poiMesh.set(region.poi.id, sprite)\n\n // @ts-ignore\n const target = this.gobal.regionPlane.planeMesh.get(region.id)\n\n // 绑定事件\n this.interactionManager.add(sprite)\n const changeWallState = (show) => {\n if (this.dialogPoi?.visible)\n return\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = show\n walllMaterial.uniforms.grow.value = 0\n\n if (show) {\n let wallGrowFrame\n\n if (wallGrowFrame)\n wallGrowFrame()\n\n wallGrowFrame = use.useframe(() => {\n walllMaterial.uniforms.grow.value += 3\n\n if (walllMaterial.uniforms.grow.value > 50)\n wallGrowFrame()\n })\n }\n }\n\n target.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n\n sprite.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n\n target.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n\n sprite.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n\n const unClick = sprite.addEventListener('click', (event) => {\n if (!sprite.visible)\n return\n this.reset()\n\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = true\n // 隐藏当前POI点\n sprite.visible = false\n\n // let wallGrowFrame\n\n // if (wallGrowFrame)\n // wallGrowFrame()\n\n // walllMaterial.uniforms.grow.value = 0\n\n // wallGrowFrame = use.useframe(() => {\n // walllMaterial.uniforms.grow.value += 3\n // })\n\n this.addDialogPanel(region, event.point)\n }) as Function\n this.poiEventListener.add(unClick)\n })\n\n const fn = () => {\n this.poiMesh.forEach((poi: SpritePoi) => {\n this.updateScale(poi)\n })\n }\n // 控制POI始终是一个大小\n const orbitControls = use.useScene().orbitControls\n orbitControls?.addEventListener('change', fn)\n this.poiEventListener.add(() => orbitControls?.removeEventListener('change', fn))\n }\n\n /// <summary>\n /// 按照距离缩放,距离越远,缩放越大\n /// </summary>\n updateScale(poi: SpritePoi, ratio = 0) {\n // 距离限制范围的值,用于计算缩放比例\n const minDistance = 0.1\n const maxDistance = 1000000\n const { camera } = use.useScene()\n\n // 计算相机和物体之间的距离\n const distance = camera.position?.distanceTo(poi.position) || 0.1\n\n const clampedDistance = Math.max(minDistance, Math.min(maxDistance, distance))\n\n const scaleValue = clampedDistance * 0.12\n if (!ratio && poi.scale)\n ratio = poi.scale.x / poi.scale.y\n\n // 按照缩放系数和距离进行缩放,缩放系数应该约定好一个固定值\n poi.scale.copy(new Vector3(scaleValue * ratio, scaleValue, 1))\n }\n\n getDom(data) {\n const dom = document.createElement('div')\n const wordLength = data.title.length\n Object.assign(dom.style, {\n fontSize: '18px',\n backgroundImage: `url(${usePath}poi.png)`,\n backgroundSize: '100% 100%',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-start',\n textAlign: 'center',\n color: '#fff',\n pointerEvents: 'auto',\n cursor: 'pointer',\n height: `${this.poiHeight}px`,\n minWidth: '180px',\n width: `${wordLength * (wordLength > 6 ? 34 : 40)}px`,\n padding: '12px 0 0 25px',\n position: 'relative',\n })\n const img = document.createElement('img')\n img.src = `${usePath}icon.png`\n img.style.position = 'absolute'\n img.style.left = '25px'\n img.style.top = '5px'\n dom.appendChild(img)\n const label = document.createElement('label')\n label.innerText = data.title\n label.style.fontWeight = 'bold'\n dom.appendChild(label)\n return dom\n }\n\n remove() {\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n this.interactionManager.remove(poi)\n poi.removeFromParent()\n poi.remove()\n })\n // 取消事件监听\n this.poiEventListener.forEach((f) => {\n f()\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n this.poiMesh.clear()\n this.poiEventListener.clear()\n }\n\n reset() {\n // 控制POI点的隐藏、显示\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n poi.visible = true\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n // 控制光墙的隐藏、显示\n this.wallManage?.wallMesh.forEach((wall) => {\n wall.visible = false\n })\n }\n\n private addDialogPanel(data, position) {\n // 添加面板\n this.dialogPoi = new Css2DPoi({ title: data.title, content: data.poi.content }, {\n animation: [{\n type: EAnimationType.grow,\n duration: 1,\n }, {\n type: EAnimationType.fadeIn,\n duration: 0.3,\n }, {\n type: EAnimationType.print,\n duration: 0.02,\n }],\n })\n this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)))\n this.scene.add(this.dialogPoi)\n\n this.interactionManager.add(this.dialogPoi)\n this.dialogPoi.addEventListener('click', () => {\n this.dialogPoi.remove()\n this.dialogPoi.removeFromParent()\n this.dialogPoi = null\n this.reset()\n })\n }\n}\n\nexport default PoiManage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Vector3","use","utils","Css2DPoi","EAnimationType","SpritePoi","usePath","regionMap","walllMaterial","PoiManage","gobal","Map","Set","scene","wallManage","wall","interactionManager","storeManagement","get","Object","keys","forEach","key","region","wordLength","title","length","ratio","Math","max","poiHeight","option","animation","type","grow","duration","fadeIn","sprite","getDom","position","copy","fromArray","poi","add","updateScale","poiMesh","set","id","target","regionPlane","planeMesh","changeWallState","show","dialogPoi","visible","wallMesh","uniforms","value","wallGrowFrame","useframe","addEventListener","unClick","event","reset","addDialogPanel","point","poiEventListener","unFrame","minDistance","maxDistance","useScene","camera","distance","distanceTo","clampedDistance","min","scaleValue","scale","x","y","data","dom","document","createElement","assign","style","fontSize","backgroundImage","backgroundSize","backgroundRepeat","display","justifyContent","alignItems","textAlign","color","pointerEvents","cursor","height","minWidth","width","padding","img","src","left","top","appendChild","label","innerText","fontWeight","remove","removeFromParent","f","clear","content","print","clone","setTimeout"],"sources":["../../../src/factory/unit/poi.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { Mesh, Vector3, use, utils } from '@anov/3d-core'\nimport { Css2DPoi, EAnimationType, SpritePoi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { usePath } from '../3d'\nimport { regionMap } from '../regionData'\nimport type WallManage from './wall'\nimport { walllMaterial } from './wall'\n\nclass PoiManage {\n private gobal: Factory3D\n private scene: Scene\n private dialogPoi: Object3D\n readonly poiMesh: Map<string, Object3D> = new Map()\n readonly poiEventListener: Set<Function> = new Set()\n private wallManage: WallManage\n private interactionManager\n private poiWidth: number\n private poiHeight = 262\n\n constructor(gobal) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.wallManage = gobal.wall\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n async generatePoi() {\n let wordLength, ratio\n Object.keys(regionMap).forEach(async (key: string) => {\n const region = regionMap[key]\n wordLength = region.title.length\n ratio = Math.max(wordLength * (wordLength > 6 ? 34 : 40), 180) / this.poiHeight\n const option = {\n animation: [{\n type: EAnimationType.grow,\n duration: 1,\n }, {\n type: EAnimationType.fadeIn,\n duration: 0.2,\n }],\n }\n const sprite = new SpritePoi(this.getDom(region), option)\n sprite.position.copy(new Vector3().fromArray(region.poi.position))\n this.scene.add(sprite)\n this.updateScale(sprite, ratio)\n this.poiMesh.set(region.poi.id, sprite)\n\n // @ts-ignore\n const target = this.gobal.regionPlane.planeMesh.get(region.id)\n\n // 绑定事件\n this.interactionManager.add(sprite)\n const changeWallState = (show) => {\n if (this.dialogPoi?.visible)\n return\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = show\n walllMaterial.uniforms.grow.value = 0\n\n if (show) {\n let wallGrowFrame\n\n if (wallGrowFrame)\n wallGrowFrame()\n\n wallGrowFrame = use.useframe(() => {\n walllMaterial.uniforms.grow.value += 3\n\n if (walllMaterial.uniforms.grow.value > 50)\n wallGrowFrame()\n })\n }\n }\n\n target.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n\n sprite.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n\n target.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n\n sprite.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n\n const unClick = sprite.addEventListener('click', (event) => {\n if (!sprite.visible)\n return\n this.reset()\n\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = true\n // 隐藏当前POI点\n sprite.visible = false\n\n // let wallGrowFrame\n\n // if (wallGrowFrame)\n // wallGrowFrame()\n\n // walllMaterial.uniforms.grow.value = 0\n\n // wallGrowFrame = use.useframe(() => {\n // walllMaterial.uniforms.grow.value += 3\n // })\n\n this.addDialogPanel(region, event.point)\n }) as Function\n this.poiEventListener.add(unClick)\n })\n\n const unFrame = use.useframe(() => {\n this.poiMesh.forEach((poi: SpritePoi) => {\n this.updateScale(poi)\n })\n })\n this.poiEventListener.add(unFrame)\n // // 控制POI始终是一个大小\n // const orbitControls = use.useScene().orbitControls\n // orbitControls?.addEventListener('change', fn)\n // this.poiEventListener.add(() => orbitControls?.removeEventListener('change', fn))\n }\n\n /// <summary>\n /// 按照距离缩放,距离越远,缩放越大\n /// </summary>\n updateScale(poi: SpritePoi, ratio = 0) {\n // 距离限制范围的值,用于计算缩放比例\n const minDistance = 0.1\n const maxDistance = 1000000\n const { camera } = use.useScene()\n\n // 计算相机和物体之间的距离\n const distance = camera.position?.distanceTo(poi.position) || 0.1\n\n const clampedDistance = Math.max(minDistance, Math.min(maxDistance, distance))\n\n const scaleValue = clampedDistance * 0.12\n if (!ratio && poi.scale)\n ratio = poi.scale.x / poi.scale.y\n\n // 按照缩放系数和距离进行缩放,缩放系数应该约定好一个固定值\n poi.scale.copy(new Vector3(scaleValue * ratio, scaleValue, 1))\n }\n\n getDom(data) {\n const dom = document.createElement('div')\n const wordLength = data.title.length\n Object.assign(dom.style, {\n fontSize: '18px',\n backgroundImage: `url(${usePath}poi.png)`,\n backgroundSize: '100% 100%',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-start',\n textAlign: 'center',\n color: '#fff',\n pointerEvents: 'auto',\n cursor: 'pointer',\n height: `${this.poiHeight}px`,\n minWidth: '180px',\n width: `${wordLength * (wordLength > 6 ? 34 : 40)}px`,\n padding: '12px 0 0 25px',\n position: 'relative',\n })\n const img = document.createElement('img')\n img.src = `${usePath}icon.png`\n img.style.position = 'absolute'\n img.style.left = '25px'\n img.style.top = '5px'\n dom.appendChild(img)\n const label = document.createElement('label')\n label.innerText = data.title\n label.style.fontWeight = 'bold'\n dom.appendChild(label)\n return dom\n }\n\n remove() {\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n this.interactionManager.remove(poi)\n poi.removeFromParent()\n poi.remove()\n })\n // 取消事件监听\n this.poiEventListener.forEach((f) => {\n f()\n })\n this.poiEventListener.clear()\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n this.poiMesh.clear()\n }\n\n reset() {\n // 控制POI点的隐藏、显示\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n poi.visible = true\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n // 控制光墙的隐藏、显示\n this.wallManage?.wallMesh.forEach((wall) => {\n wall.visible = false\n })\n }\n\n private addDialogPanel(data, position) {\n // 添加面板\n // , {\n // type: EAnimationType.fadeIn,\n // duration: 0.3,\n // }\n this.dialogPoi = new Css2DPoi({ title: data.title, content: data.poi.content }, {\n animation: [{\n type: EAnimationType.grow,\n duration: 1,\n }, {\n type: EAnimationType.print,\n duration: 0.02,\n }],\n })\n this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)))\n setTimeout(() => this.scene.add(this.dialogPoi))\n\n this.interactionManager.add(this.dialogPoi)\n this.dialogPoi.addEventListener('click', () => {\n this.dialogPoi.remove()\n this.dialogPoi.removeFromParent()\n this.dialogPoi = null\n this.reset()\n })\n }\n}\n\nexport default PoiManage"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anov/3d",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.83",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"localforage": "^1.10.0",
|
|
23
23
|
"resize-observer-polyfill": "^1.5.1",
|
|
24
24
|
"uuid": "^9.0.1",
|
|
25
|
-
"@anov/3d-
|
|
26
|
-
"@anov/3d-
|
|
25
|
+
"@anov/3d-core": "^0.0.13",
|
|
26
|
+
"@anov/3d-ability": "^0.0.13"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/uuid": "^9.0.7"
|