@anov/3d 0.0.111 → 0.0.112

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.
@@ -84,7 +84,6 @@ var Factory3D = /*#__PURE__*/function () {
84
84
  var link = document.createElement('link');
85
85
  link.rel = 'stylesheet';
86
86
  link.href = blobURL;
87
- link.crossOrigin = 'anonymous';
88
87
  document.head.appendChild(link);
89
88
  if (typeof callback === 'function') callback();
90
89
  console.log("CSS \u52A0\u8F7D\u6210\u529F: ".concat(url));
@@ -99,7 +98,7 @@ var Factory3D = /*#__PURE__*/function () {
99
98
  xhr.send();
100
99
  };
101
100
  return new Promise(function (resolve) {
102
- loadCSS("".concat(resourcePath2, "result.css"), function () {
101
+ loadCSS('./demo/result.css', function () {
103
102
  _this.scene = scene;
104
103
  _this.cameraUtil = new Camera(scene.camera, scene.controls, scene);
105
104
  _this.control = scene.controls;
@@ -1 +1 @@
1
- {"version":3,"names":["AdditiveBlending","Color","InteractionManager","LoadingManager","Mesh","MeshBasicMaterial","MeshLambertMaterial","ModelLoader","PlaneGeometry","RepeatWrapping","ShaderMaterial","TextureLoader","Vector2","Vector3","lib","use","utils","Camera","SpritePoi","MessageType","sendToMessage","EMessageStatus","finirMaterialV1","handleUnit","toggleTag","globalEvents","SceneStyle","SceneTag","factoryGlobalObject","createRiseLayer","targetProgresspoints","material","uniforms","frag","vert","loadingManager","load","rgbeLoader","RGBELoader","emitter","resourcePath","resourcePath2","usePath","Factory3D","option","overview","real","Map","globalEventsAgent","setFactory","scene","loadCSS","url","callback","xhr","XMLHttpRequest","open","onreadystatechange","readyState","status","blob","Blob","responseText","type","blobURL","URL","createObjectURL","link","document","createElement","rel","href","crossOrigin","head","appendChild","console","log","error","statusText","onerror","err","send","Promise","resolve","cameraUtil","camera","controls","control","layers","set","loadGLTF","gltf","realGroundModel","mesh","traverse","child","enable","castShadow","receiveShadow","name","treesMesh","push","grasslandMesh","massifMesh","add","realTreeModel","interactionManager","renderer","domElement","storeManagement","useframe","update","loadModel","onLoad","toneMappingExposure","visible","style","realModl","call","group","_Time","value","geometry","plane","rotation","x","Math","PI","position","renderOrder","scale","text","wrapS","wrapT","repeat","blending","transparent","opacity","depthTest","map","offset","tech","techModel","color","white","whiteModel","targerMeshName","Object","values","v","lookAt","vertexShader","fragmentShader","texture1","texture2","uvScale","includes","window","app","envServer","scaleRatio","div","img","src","span","innerText","top","left","transform","fontSize","fontWeight","span2","poi01","width","height","div2","img2","span3","span4","poi02","thermaLimaging","pipeline","params","background","tag","apply","forEach","eventKey","on","args","eventHandleFn","get","fn","viewType","cutoutCamera","inspection","minCamera","mapCamera","mainCamera","emit","Event","Success","undefined","fov","updateProjectionMatrix","eventName","handleFn"],"sources":["../../src/factory/3d.ts"],"sourcesContent":["import type { DataTexture, Group, Material, Object3D, OrbitControls, SceneControl } from '@anov/3d-core'\nimport { AdditiveBlending, BoxGeometry, Color, EquirectangularReflectionMapping, InteractionManager, LoadingManager, Mesh, MeshBasicMaterial, MeshLambertMaterial, ModelLoader, PlaneGeometry, RepeatWrapping, SRGBColorSpace, ShaderChunk, ShaderMaterial, Sprite, SpriteMaterial, TextureLoader, Vector2, Vector3, Vector4, lib, sRGBEncoding, use, utils } from '@anov/3d-core'\nimport { Camera, SpritePoi, createBloomSelectedTool, initPostEffects } from '@anov/3d-ability'\nimport { MessageType, sendToMessage } from '../utils/messageFn'\nimport { EMessageStatus } from '../messageStatus'\nimport { finirMaterialV1 } from './utils/finirMaterial'\nimport handleUnit, { toggleTag } from './unit'\nimport type WallManage from './unit/wall'\nimport type LineManage from './unit/line'\nimport type CylinderManage from './unit/cylinder'\nimport type PoiManage from './unit/poi'\nimport type CircleManage from './unit/circle'\nimport type DistrictLineManage from './unit/districtLine'\nimport type AreaBoundingBoxManage from './unit/areaBoundingBox'\nimport type Inspection from './unit/inspection'\nimport { globalEvents } from './globalData'\nimport { SceneStyle, SceneTag } from './utils/constant'\nimport switchMaterial from './utils/switchMaterial'\nimport factoryGlobalObject from './globalControl'\nimport { debounce } from './utils'\nimport createRiseLayer from './unit/layer/rise'\nimport { targetProgresspoints } from './unit/inspection/lineData'\nimport { material, uniforms } from './utils/ground'\n\nimport frag from './unit/glsl/heat/frag'\nimport vert from './unit/glsl/heat/ver'\n\ntype factory3dOption = {\n model: string\n environment: string\n decoderPath?: string\n controls?: any\n}\n\nexport const loadingManager = new LoadingManager()\nconst load = new ModelLoader(loadingManager)\nconst rgbeLoader = new lib.RGBELoader(loadingManager)\nconst { emitter } = utils\n\nconst resourcePath = './'\nconst resourcePath2 = 'http://172.16.223.163:9000/anov-prod/anov-3d/factory/example/'\n\nexport const usePath = process.env.ENV === 'dev' ? resourcePath : resourcePath2\n\nclass Factory3D {\n position: Vector3 = new Vector3(0, 0, 0)\n scene: SceneControl\n control: OrbitControls\n cameraUtil: Camera\n\n public loadingManager = loadingManager\n public tag = SceneTag.overview\n public style: SceneStyle = SceneStyle.real\n private option: factory3dOption\n wall: WallManage\n line: LineManage\n cylinder: CylinderManage\n poi: PoiManage\n circle: CircleManage\n areaBoundingBox: AreaBoundingBoxManage\n inspection: Inspection\n districtLine: DistrictLineManage\n\n usePath = usePath\n\n private pipeline: Group\n private realModl: Group\n private techModel: Group\n private whiteModel: Group\n private realGroundModel: Group\n private thermaLimaging: Group\n private eventHandleFn: Map<string, ((args?: any) => void)[]> = new Map()\n private boxSkeyTexture: DataTexture\n private treesMesh: Array<Mesh> = []\n private grasslandMesh: Array<Mesh> = []\n private massifMesh: Array<Mesh> = []\n\n mainCamera: any\n\n interactionManager: InteractionManager\n\n constructor(option: factory3dOption) {\n this.option = option\n this.globalEventsAgent()\n factoryGlobalObject.setFactory(this)\n }\n\n /**\n * render factory 3d scene\n */\n renderScene(scene: SceneControl) {\n const loadCSS = (url, callback) => {\n const xhr = new XMLHttpRequest()\n xhr.open('GET', url, true)\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n const blob = new Blob([xhr.responseText], { type: 'text/css' })\n const blobURL = URL.createObjectURL(blob)\n\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = blobURL\n link.crossOrigin = 'anonymous'\n document.head.appendChild(link)\n\n if (typeof callback === 'function')\n callback()\n\n console.log(`CSS 加载成功: ${url}`)\n }\n else {\n console.error(`Failed to load CSS: ${url}`, xhr.statusText)\n }\n }\n }\n xhr.onerror = function (err) {\n console.error(`Failed to load CSS: ${url}`, err)\n }\n xhr.send()\n }\n\n return new Promise((resolve) => {\n loadCSS(`${resourcePath2}result.css`, () => {\n this.scene = scene\n\n this.cameraUtil = new Camera(scene.camera!, scene.controls!, scene)\n this.control = scene.controls!\n scene.camera.layers.set(0)\n\n load.loadGLTF(`${this.usePath}landScap2.glb`, false, true, './draco/', (gltf) => {\n this.realGroundModel = (gltf.scene) as Group\n\n // this.interactionManager.add(gltf.scene)\n\n // gltf.scene.addEventListener('click', (value) => {\n // console.log(value.point)\n // this.position = value.point\n // })\n\n let mesh, material\n gltf.scene.traverse((child) => {\n child.layers.enable(5)\n\n if (child.type === 'Mesh') {\n child.castShadow = true\n child.receiveShadow = true\n\n mesh = child as Mesh\n material = mesh.material as Material\n // 记录树、草地、山体的Mesh对象,用于四季效果\n if (material.name === 'sss-1-2.001' || material.name === 'sss-1')\n this.treesMesh.push(mesh)\n else if (material.name === 'Material #32')\n this.grasslandMesh.push(mesh)\n else if (material.name === 'Material #33')\n this.massifMesh.push(mesh)\n }\n })\n scene.add(this.realGroundModel)\n\n return gltf\n })\n\n load.loadGLTF(`${this.usePath}landScap3.glb`, false, true, './draco/', (gltf) => {\n // @ts-ignore\n this.realTreeModel = (gltf.scene) as Group\n\n // this.interactionManager.add(gltf.scene)\n\n // gltf.scene.addEventListener('click', (value) => {\n // console.log(value.point)\n // this.position = value.point\n // })\n\n gltf.scene.traverse((child) => {\n child.layers.enable(5)\n\n if (child.type === 'Mesh') {\n child.castShadow = true\n child.receiveShadow = true\n }\n })\n\n // scene.add(this.realTreeModel)\n\n return gltf\n })\n\n const interactionManager = new InteractionManager(\n this.scene.renderer,\n this.scene.camera,\n this.scene.renderer.domElement, // Modified By LM this.scene.cssRenderer.cssRenderer.domElement,\n )\n\n this.interactionManager = interactionManager\n\n utils.storeManagement.set('interactionManager', interactionManager)\n\n use.useframe(() => {\n interactionManager.update()\n })\n\n this.loadModel()\n\n loadingManager.onLoad = () => {\n resolve('success')\n }\n\n // initPostEffects(scene.scene, scene.renderer, scene.camera, { type: 'main' })\n\n scene.renderer.toneMappingExposure = 0.4\n })\n })\n }\n\n private loadModel() {\n // real model\n load.loadGLTF(`${this.usePath}222.glb`, false, true, './draco/', (gltf) => {\n this.scene.add(gltf.scene)\n\n gltf.scene.visible = SceneStyle.real === this.style\n\n this.realModl = gltf.scene as Group\n\n // this.interactionManager.add(gltf.scene)\n\n // gltf.scene.addEventListener('click', (value) => {\n // console.log(value.point)\n // this.position = value.point\n // })\n\n gltf.scene.traverse((child) => {\n child.layers.enable(5)\n\n if (child.type === 'Mesh') {\n child.castShadow = true\n child.receiveShadow = true\n }\n })\n\n handleUnit.call(this)\n\n return gltf\n })\n\n // tech model\n load.loadGLTF(`${this.usePath}2222.glb`, false, true, './draco/', (gltf) => {\n const group = gltf.scene\n\n use.useframe(() => {\n if (uniforms._Time.value > 0.5)\n uniforms._Time.value = 0\n\n uniforms._Time.value += 0.0008\n })\n\n group.traverse((child) => {\n // @ts-ignore\n if (child.type === 'Mesh') {\n if (child.name === '柱体') {\n // @ts-ignore\n child.visible = false\n const geometry = new PlaneGeometry(3000, 2000)\n const plane = new Mesh(geometry, material)\n plane.rotation.x = -Math.PI / 2\n\n plane.position.set(0, -1.5, 0)\n plane.renderOrder = -1\n\n group.add(plane)\n }\n\n else {\n // @ts-ignore\n child.material = finirMaterialV1\n }\n }\n })\n\n load.loadGLTF(`${this.usePath}plane.glb`, false, true, './draco/', (gltf) => {\n gltf.scene.scale.set(0.5, 0.5, 0.5)\n\n const text = new TextureLoader().load(`${this.usePath}roll.png`)\n\n text.wrapS = RepeatWrapping\n text.wrapT = RepeatWrapping\n\n text.repeat.set(1, 1)\n\n gltf.scene.traverse((child) => {\n if (child.type === 'Mesh') {\n // @ts-ignore\n child.material.blending = AdditiveBlending\n // @ts-ignore\n child.material.transparent = true\n // @ts-ignore\n child.material.opacity = 1\n // @ts-ignore\n child.material.depthTest = true\n\n // @ts-ignore\n child.material.map = text\n }\n })\n\n use.useframe(() => {\n text.offset.x += 0.01\n })\n\n group.add(gltf.scene)\n\n return gltf\n })\n\n createRiseLayer()\n\n this.scene.add(group)\n\n group.visible = SceneStyle.tech === this.style\n this.techModel = group as Group\n\n return gltf\n })\n\n // white model\n load.loadGLTF(`${this.usePath}2222.glb`, false, true, './draco/', (gltf) => {\n gltf.scene.traverse((child) => {\n if (child.name === '柱体')\n (child as Mesh).material = new MeshBasicMaterial({ color: new Color('#fff') })\n else if (child.type === 'Mesh')\n (child as Mesh).material = new MeshLambertMaterial({ color: new Color('#aaa') })\n })\n\n this.scene.add(gltf.scene)\n\n gltf.scene.visible = SceneStyle.white === this.style\n this.whiteModel = gltf.scene as Group\n return gltf\n })\n\n const targerMeshName = Object.values(targetProgresspoints).map(v => v.lookAt)\n\n // thermaLimaging model\n load.loadGLTF(`${this.usePath}2222.glb`, false, true, './draco/', (gltf) => {\n const group = gltf.scene\n group.traverse((child) => {\n if (child.type === 'Mesh') {\n // @ts-ignore\n child.material = new ShaderMaterial({\n vertexShader: vert,\n fragmentShader: frag,\n uniforms: {\n texture1: { value: new TextureLoader(this.loadingManager).load(`${this.usePath}test01.jpg`) },\n texture2: { value: new TextureLoader(this.loadingManager).load(`${this.usePath}test02.jpg`) },\n uvScale: { value: new Vector2(1, 1) },\n },\n })\n\n child.layers.set(2)\n\n if (targerMeshName.includes(child.name))\n // @ts-ignore\n child.material.depthTest = false\n }\n })\n\n const scale = (window as any)?.app?.envServer?.scaleRatio ?? 1\n\n const div = document.createElement('div')\n div.style.position = 'relative'\n\n const img = document.createElement('img')\n img.src = `${usePath}poi01.png`\n\n const span = document.createElement('span')\n span.innerText = '125.7°C'\n span.style.position = 'absolute'\n span.style.top = `${19.5 * scale}px`\n span.style.left = '40%'\n span.style.transform = 'translateX(-30%)'\n\n span.style.color = '#e47762'\n span.style.fontSize = '12px'\n span.style.fontWeight = 'bold'\n\n const span2 = document.createElement('span')\n span2.innerText = '点位2'\n span2.style.position = 'absolute'\n span2.style.top = `${19.5 * scale}px`\n span2.style.left = '10%'\n span2.style.transform = 'translateX(-30%)'\n\n span2.style.color = '#e47762'\n span2.style.fontSize = `${12 * scale}px`\n span2.style.fontWeight = 'bold'\n\n div.appendChild(img)\n div.appendChild(span)\n div.appendChild(span2)\n\n const poi01 = new SpritePoi(div, {\n width: 100 * 2,\n height: 40 * 2,\n })\n\n poi01.scale.set(40, 18, 1)\n\n poi01.layers.set(2)\n poi01.position.set(-312.869, -5, -127.770)\n\n const div2 = document.createElement('div')\n div2.style.position = 'relative'\n\n const img2 = document.createElement('img')\n img2.src = `${usePath}poi02.png`\n\n const span3 = document.createElement('span')\n span3.innerText = '125.7°C'\n span3.style.position = 'absolute'\n span3.style.top = `${5 * scale}px`\n span3.style.left = '60%'\n span3.style.transform = 'translateX(30%)'\n\n span3.style.color = '#fdd85e'\n span3.style.fontSize = `${12 * scale}px`\n span3.style.fontWeight = 'bold'\n\n const span4 = document.createElement('span')\n span4.innerText = '点位1'\n span4.style.position = 'absolute'\n span4.style.top = `${5 * scale}px`\n span4.style.left = '34%'\n span4.style.transform = 'translateX(30%)'\n\n span4.style.color = '#fdd85e'\n span4.style.fontSize = `${12 * scale}px`\n span4.style.fontWeight = 'bold'\n\n div2.appendChild(img2)\n div2.appendChild(span3)\n div2.appendChild(span4)\n\n const poi02 = new SpritePoi(div2, {\n width: 100 * 2,\n height: 40 * 2,\n })\n\n poi02.scale.set(50, 22, 1)\n\n poi02.layers.set(2)\n poi02.position.set(-240.869, 15, -127.770)\n\n // group.add(poi01)\n // group.add(poi02)\n\n this.scene.add(group)\n\n this.thermaLimaging = group as Group\n\n return gltf\n })\n\n load.loadGLTF(`${this.usePath}guandao.glb`, false, true, './draco/', (gltf) => {\n this.scene.add(gltf.scene)\n\n this.pipeline = gltf.scene as Group\n return gltf\n })\n }\n\n /**\n * toggle SceneStyle\n * @param params\n */\n toggleSceneStyle(params: SceneStyle) {\n if (this.style === params)\n return\n this.style = params\n\n if (this.style === SceneStyle.tech) {\n this.pipeline.visible = false\n this.techModel.visible = true\n this.realModl.visible = false\n this.whiteModel.visible = false\n this.scene.scene.background = null\n this.realGroundModel && (this.realGroundModel.visible = false)\n\n this.scene.renderer.toneMappingExposure = 0.6\n }\n\n if (params === SceneStyle.real) {\n this.pipeline.visible = true\n this.techModel.visible = false\n this.whiteModel.visible = false\n this.realModl.visible = true\n this.realGroundModel && (this.realGroundModel.visible = true)\n this.scene.scene.background = new Color('#ccc')\n this.scene.renderer.toneMappingExposure = 0.4\n }\n\n if (params === SceneStyle.white) {\n this.pipeline.visible = false\n this.techModel.visible = false\n this.realModl.visible = false\n this.whiteModel.visible = true\n this.scene.scene.background = null\n this.realGroundModel && (this.realGroundModel.visible = false)\n\n this.scene.renderer.toneMappingExposure = 0.4\n }\n }\n\n public toggleTag(tag: SceneTag) {\n if (this.tag === tag)\n return\n toggleTag[tag].apply(this, [this])\n }\n\n private globalEventsAgent() {\n globalEvents.forEach((eventKey) => {\n emitter.on(eventKey, (args) => {\n this.eventHandleFn.get(eventKey)?.forEach((fn) => {\n fn(args)\n })\n })\n })\n }\n\n /**\n * toggle view\n */\n toggleView(viewType?: string) {\n if (this.tag !== SceneTag['smart-inspection'])\n return\n\n if (viewType) {\n if (viewType === 'Drone') {\n if (this.scene.cutoutCamera === this.inspection.minCamera) {\n const cutoutCamera = this.inspection.minCamera\n\n this.scene.cutoutCamera = this.inspection.mapCamera\n this.mainCamera = this.scene.camera\n this.scene.camera = cutoutCamera\n\n utils.emitter.emit('play')\n utils.emitter.emit('toggleView', 'Drone')\n\n sendToMessage(MessageType.Event, 'onViewTypeChange', EMessageStatus.Success, undefined, {\n viewType: 'Drone',\n })\n }\n }\n\n if (viewType === 'Global') {\n if (this.scene.cutoutCamera !== this.inspection.minCamera) {\n const mainCamera = this.mainCamera\n const cutoutCamera = this.inspection.minCamera\n\n this.scene.camera = mainCamera\n this.scene.cutoutCamera = cutoutCamera\n\n utils.emitter.emit('stop')\n utils.emitter.emit('toggleView', 'Global')\n\n this.inspection.minCamera.fov = 60\n this.inspection.minCamera.updateProjectionMatrix()\n\n sendToMessage(MessageType.Event, 'onViewTypeChange', EMessageStatus.Success, undefined, {\n viewType: 'Global',\n })\n }\n }\n }\n else {\n // toggle to min camera\n if (this.scene.cutoutCamera === this.inspection.minCamera) {\n const cutoutCamera = this.inspection.minCamera\n\n this.scene.cutoutCamera = this.inspection.mapCamera\n\n this.mainCamera = this.scene.camera\n this.scene.camera = cutoutCamera\n\n utils.emitter.emit('play')\n utils.emitter.emit('toggleView', 'Drone')\n\n sendToMessage(MessageType.Event, 'onViewTypeChange', EMessageStatus.Success, undefined, {\n viewType: 'Drone',\n })\n }\n else {\n // toggle to main camera\n const mainCamera = this.mainCamera\n const cutoutCamera = this.inspection.minCamera\n\n this.scene.camera = mainCamera\n this.scene.cutoutCamera = cutoutCamera\n\n utils.emitter.emit('stop')\n utils.emitter.emit('toggleView', 'Global')\n\n this.inspection.minCamera.fov = 60\n this.inspection.minCamera.updateProjectionMatrix()\n\n sendToMessage(MessageType.Event, 'onViewTypeChange', EMessageStatus.Success, undefined, {\n viewType: 'Global',\n })\n }\n }\n }\n\n addEventListener(eventName: string, handleFn: (args?: any) => void) {\n if (this.eventHandleFn.get(eventName))\n this.eventHandleFn.get(eventName).push(handleFn)\n\n else\n this.eventHandleFn.set(eventName, [handleFn])\n }\n}\n\nexport default Factory3D"],"mappings":"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"}
1
+ {"version":3,"names":["AdditiveBlending","Color","InteractionManager","LoadingManager","Mesh","MeshBasicMaterial","MeshLambertMaterial","ModelLoader","PlaneGeometry","RepeatWrapping","ShaderMaterial","TextureLoader","Vector2","Vector3","lib","use","utils","Camera","SpritePoi","MessageType","sendToMessage","EMessageStatus","finirMaterialV1","handleUnit","toggleTag","globalEvents","SceneStyle","SceneTag","factoryGlobalObject","createRiseLayer","targetProgresspoints","material","uniforms","frag","vert","loadingManager","load","rgbeLoader","RGBELoader","emitter","resourcePath","resourcePath2","usePath","Factory3D","option","overview","real","Map","globalEventsAgent","setFactory","scene","loadCSS","url","callback","xhr","XMLHttpRequest","open","onreadystatechange","readyState","status","blob","Blob","responseText","type","blobURL","URL","createObjectURL","link","document","createElement","rel","href","head","appendChild","console","log","error","statusText","onerror","err","send","Promise","resolve","cameraUtil","camera","controls","control","layers","set","loadGLTF","gltf","realGroundModel","mesh","traverse","child","enable","castShadow","receiveShadow","name","treesMesh","push","grasslandMesh","massifMesh","add","realTreeModel","interactionManager","renderer","domElement","storeManagement","useframe","update","loadModel","onLoad","toneMappingExposure","visible","style","realModl","call","group","_Time","value","geometry","plane","rotation","x","Math","PI","position","renderOrder","scale","text","wrapS","wrapT","repeat","blending","transparent","opacity","depthTest","map","offset","tech","techModel","color","white","whiteModel","targerMeshName","Object","values","v","lookAt","vertexShader","fragmentShader","texture1","texture2","uvScale","includes","window","app","envServer","scaleRatio","div","img","src","span","innerText","top","left","transform","fontSize","fontWeight","span2","poi01","width","height","div2","img2","span3","span4","poi02","thermaLimaging","pipeline","params","background","tag","apply","forEach","eventKey","on","args","eventHandleFn","get","fn","viewType","cutoutCamera","inspection","minCamera","mapCamera","mainCamera","emit","Event","Success","undefined","fov","updateProjectionMatrix","eventName","handleFn"],"sources":["../../src/factory/3d.ts"],"sourcesContent":["import type { DataTexture, Group, Material, Object3D, OrbitControls, SceneControl } from '@anov/3d-core'\nimport { AdditiveBlending, BoxGeometry, Color, EquirectangularReflectionMapping, InteractionManager, LoadingManager, Mesh, MeshBasicMaterial, MeshLambertMaterial, ModelLoader, PlaneGeometry, RepeatWrapping, SRGBColorSpace, ShaderChunk, ShaderMaterial, Sprite, SpriteMaterial, TextureLoader, Vector2, Vector3, Vector4, lib, sRGBEncoding, use, utils } from '@anov/3d-core'\nimport { Camera, SpritePoi, createBloomSelectedTool, initPostEffects } from '@anov/3d-ability'\nimport { MessageType, sendToMessage } from '../utils/messageFn'\nimport { EMessageStatus } from '../messageStatus'\nimport { finirMaterialV1 } from './utils/finirMaterial'\nimport handleUnit, { toggleTag } from './unit'\nimport type WallManage from './unit/wall'\nimport type LineManage from './unit/line'\nimport type CylinderManage from './unit/cylinder'\nimport type PoiManage from './unit/poi'\nimport type CircleManage from './unit/circle'\nimport type DistrictLineManage from './unit/districtLine'\nimport type AreaBoundingBoxManage from './unit/areaBoundingBox'\nimport type Inspection from './unit/inspection'\nimport { globalEvents } from './globalData'\nimport { SceneStyle, SceneTag } from './utils/constant'\nimport switchMaterial from './utils/switchMaterial'\nimport factoryGlobalObject from './globalControl'\nimport { debounce } from './utils'\nimport createRiseLayer from './unit/layer/rise'\nimport { targetProgresspoints } from './unit/inspection/lineData'\nimport { material, uniforms } from './utils/ground'\n\nimport frag from './unit/glsl/heat/frag'\nimport vert from './unit/glsl/heat/ver'\n\ntype factory3dOption = {\n model: string\n environment: string\n decoderPath?: string\n controls?: any\n}\n\nexport const loadingManager = new LoadingManager()\nconst load = new ModelLoader(loadingManager)\nconst rgbeLoader = new lib.RGBELoader(loadingManager)\nconst { emitter } = utils\n\nconst resourcePath = './'\nconst resourcePath2 = 'http://172.16.223.163:9000/anov-prod/anov-3d/factory/example/'\n\nexport const usePath = process.env.ENV === 'dev' ? resourcePath : resourcePath2\n\nclass Factory3D {\n position: Vector3 = new Vector3(0, 0, 0)\n scene: SceneControl\n control: OrbitControls\n cameraUtil: Camera\n\n public loadingManager = loadingManager\n public tag = SceneTag.overview\n public style: SceneStyle = SceneStyle.real\n private option: factory3dOption\n wall: WallManage\n line: LineManage\n cylinder: CylinderManage\n poi: PoiManage\n circle: CircleManage\n areaBoundingBox: AreaBoundingBoxManage\n inspection: Inspection\n districtLine: DistrictLineManage\n\n usePath = usePath\n\n private pipeline: Group\n private realModl: Group\n private techModel: Group\n private whiteModel: Group\n private realGroundModel: Group\n private thermaLimaging: Group\n private eventHandleFn: Map<string, ((args?: any) => void)[]> = new Map()\n private boxSkeyTexture: DataTexture\n private treesMesh: Array<Mesh> = []\n private grasslandMesh: Array<Mesh> = []\n private massifMesh: Array<Mesh> = []\n\n mainCamera: any\n\n interactionManager: InteractionManager\n\n constructor(option: factory3dOption) {\n this.option = option\n this.globalEventsAgent()\n factoryGlobalObject.setFactory(this)\n }\n\n /**\n * render factory 3d scene\n */\n renderScene(scene: SceneControl) {\n const loadCSS = (url, callback) => {\n const xhr = new XMLHttpRequest()\n xhr.open('GET', url, true)\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n const blob = new Blob([xhr.responseText], { type: 'text/css' })\n const blobURL = URL.createObjectURL(blob)\n\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = blobURL\n document.head.appendChild(link)\n\n if (typeof callback === 'function')\n callback()\n\n console.log(`CSS 加载成功: ${url}`)\n }\n else {\n console.error(`Failed to load CSS: ${url}`, xhr.statusText)\n }\n }\n }\n xhr.onerror = function (err) {\n console.error(`Failed to load CSS: ${url}`, err)\n }\n xhr.send()\n }\n\n return new Promise((resolve) => {\n loadCSS('./demo/result.css', () => {\n this.scene = scene\n\n this.cameraUtil = new Camera(scene.camera!, scene.controls!, scene)\n this.control = scene.controls!\n scene.camera.layers.set(0)\n\n load.loadGLTF(`${this.usePath}landScap2.glb`, false, true, './draco/', (gltf) => {\n this.realGroundModel = (gltf.scene) as Group\n\n // this.interactionManager.add(gltf.scene)\n\n // gltf.scene.addEventListener('click', (value) => {\n // console.log(value.point)\n // this.position = value.point\n // })\n\n let mesh, material\n gltf.scene.traverse((child) => {\n child.layers.enable(5)\n\n if (child.type === 'Mesh') {\n child.castShadow = true\n child.receiveShadow = true\n\n mesh = child as Mesh\n material = mesh.material as Material\n // 记录树、草地、山体的Mesh对象,用于四季效果\n if (material.name === 'sss-1-2.001' || material.name === 'sss-1')\n this.treesMesh.push(mesh)\n else if (material.name === 'Material #32')\n this.grasslandMesh.push(mesh)\n else if (material.name === 'Material #33')\n this.massifMesh.push(mesh)\n }\n })\n scene.add(this.realGroundModel)\n\n return gltf\n })\n\n load.loadGLTF(`${this.usePath}landScap3.glb`, false, true, './draco/', (gltf) => {\n // @ts-ignore\n this.realTreeModel = (gltf.scene) as Group\n\n // this.interactionManager.add(gltf.scene)\n\n // gltf.scene.addEventListener('click', (value) => {\n // console.log(value.point)\n // this.position = value.point\n // })\n\n gltf.scene.traverse((child) => {\n child.layers.enable(5)\n\n if (child.type === 'Mesh') {\n child.castShadow = true\n child.receiveShadow = true\n }\n })\n\n // scene.add(this.realTreeModel)\n\n return gltf\n })\n\n const interactionManager = new InteractionManager(\n this.scene.renderer,\n this.scene.camera,\n this.scene.renderer.domElement, // Modified By LM this.scene.cssRenderer.cssRenderer.domElement,\n )\n\n this.interactionManager = interactionManager\n\n utils.storeManagement.set('interactionManager', interactionManager)\n\n use.useframe(() => {\n interactionManager.update()\n })\n\n this.loadModel()\n\n loadingManager.onLoad = () => {\n resolve('success')\n }\n\n // initPostEffects(scene.scene, scene.renderer, scene.camera, { type: 'main' })\n\n scene.renderer.toneMappingExposure = 0.4\n })\n })\n }\n\n private loadModel() {\n // real model\n load.loadGLTF(`${this.usePath}222.glb`, false, true, './draco/', (gltf) => {\n this.scene.add(gltf.scene)\n\n gltf.scene.visible = SceneStyle.real === this.style\n\n this.realModl = gltf.scene as Group\n\n // this.interactionManager.add(gltf.scene)\n\n // gltf.scene.addEventListener('click', (value) => {\n // console.log(value.point)\n // this.position = value.point\n // })\n\n gltf.scene.traverse((child) => {\n child.layers.enable(5)\n\n if (child.type === 'Mesh') {\n child.castShadow = true\n child.receiveShadow = true\n }\n })\n\n handleUnit.call(this)\n\n return gltf\n })\n\n // tech model\n load.loadGLTF(`${this.usePath}2222.glb`, false, true, './draco/', (gltf) => {\n const group = gltf.scene\n\n use.useframe(() => {\n if (uniforms._Time.value > 0.5)\n uniforms._Time.value = 0\n\n uniforms._Time.value += 0.0008\n })\n\n group.traverse((child) => {\n // @ts-ignore\n if (child.type === 'Mesh') {\n if (child.name === '柱体') {\n // @ts-ignore\n child.visible = false\n const geometry = new PlaneGeometry(3000, 2000)\n const plane = new Mesh(geometry, material)\n plane.rotation.x = -Math.PI / 2\n\n plane.position.set(0, -1.5, 0)\n plane.renderOrder = -1\n\n group.add(plane)\n }\n\n else {\n // @ts-ignore\n child.material = finirMaterialV1\n }\n }\n })\n\n load.loadGLTF(`${this.usePath}plane.glb`, false, true, './draco/', (gltf) => {\n gltf.scene.scale.set(0.5, 0.5, 0.5)\n\n const text = new TextureLoader().load(`${this.usePath}roll.png`)\n\n text.wrapS = RepeatWrapping\n text.wrapT = RepeatWrapping\n\n text.repeat.set(1, 1)\n\n gltf.scene.traverse((child) => {\n if (child.type === 'Mesh') {\n // @ts-ignore\n child.material.blending = AdditiveBlending\n // @ts-ignore\n child.material.transparent = true\n // @ts-ignore\n child.material.opacity = 1\n // @ts-ignore\n child.material.depthTest = true\n\n // @ts-ignore\n child.material.map = text\n }\n })\n\n use.useframe(() => {\n text.offset.x += 0.01\n })\n\n group.add(gltf.scene)\n\n return gltf\n })\n\n createRiseLayer()\n\n this.scene.add(group)\n\n group.visible = SceneStyle.tech === this.style\n this.techModel = group as Group\n\n return gltf\n })\n\n // white model\n load.loadGLTF(`${this.usePath}2222.glb`, false, true, './draco/', (gltf) => {\n gltf.scene.traverse((child) => {\n if (child.name === '柱体')\n (child as Mesh).material = new MeshBasicMaterial({ color: new Color('#fff') })\n else if (child.type === 'Mesh')\n (child as Mesh).material = new MeshLambertMaterial({ color: new Color('#aaa') })\n })\n\n this.scene.add(gltf.scene)\n\n gltf.scene.visible = SceneStyle.white === this.style\n this.whiteModel = gltf.scene as Group\n return gltf\n })\n\n const targerMeshName = Object.values(targetProgresspoints).map(v => v.lookAt)\n\n // thermaLimaging model\n load.loadGLTF(`${this.usePath}2222.glb`, false, true, './draco/', (gltf) => {\n const group = gltf.scene\n group.traverse((child) => {\n if (child.type === 'Mesh') {\n // @ts-ignore\n child.material = new ShaderMaterial({\n vertexShader: vert,\n fragmentShader: frag,\n uniforms: {\n texture1: { value: new TextureLoader(this.loadingManager).load(`${this.usePath}test01.jpg`) },\n texture2: { value: new TextureLoader(this.loadingManager).load(`${this.usePath}test02.jpg`) },\n uvScale: { value: new Vector2(1, 1) },\n },\n })\n\n child.layers.set(2)\n\n if (targerMeshName.includes(child.name))\n // @ts-ignore\n child.material.depthTest = false\n }\n })\n\n const scale = (window as any)?.app?.envServer?.scaleRatio ?? 1\n\n const div = document.createElement('div')\n div.style.position = 'relative'\n\n const img = document.createElement('img')\n img.src = `${usePath}poi01.png`\n\n const span = document.createElement('span')\n span.innerText = '125.7°C'\n span.style.position = 'absolute'\n span.style.top = `${19.5 * scale}px`\n span.style.left = '40%'\n span.style.transform = 'translateX(-30%)'\n\n span.style.color = '#e47762'\n span.style.fontSize = '12px'\n span.style.fontWeight = 'bold'\n\n const span2 = document.createElement('span')\n span2.innerText = '点位2'\n span2.style.position = 'absolute'\n span2.style.top = `${19.5 * scale}px`\n span2.style.left = '10%'\n span2.style.transform = 'translateX(-30%)'\n\n span2.style.color = '#e47762'\n span2.style.fontSize = `${12 * scale}px`\n span2.style.fontWeight = 'bold'\n\n div.appendChild(img)\n div.appendChild(span)\n div.appendChild(span2)\n\n const poi01 = new SpritePoi(div, {\n width: 100 * 2,\n height: 40 * 2,\n })\n\n poi01.scale.set(40, 18, 1)\n\n poi01.layers.set(2)\n poi01.position.set(-312.869, -5, -127.770)\n\n const div2 = document.createElement('div')\n div2.style.position = 'relative'\n\n const img2 = document.createElement('img')\n img2.src = `${usePath}poi02.png`\n\n const span3 = document.createElement('span')\n span3.innerText = '125.7°C'\n span3.style.position = 'absolute'\n span3.style.top = `${5 * scale}px`\n span3.style.left = '60%'\n span3.style.transform = 'translateX(30%)'\n\n span3.style.color = '#fdd85e'\n span3.style.fontSize = `${12 * scale}px`\n span3.style.fontWeight = 'bold'\n\n const span4 = document.createElement('span')\n span4.innerText = '点位1'\n span4.style.position = 'absolute'\n span4.style.top = `${5 * scale}px`\n span4.style.left = '34%'\n span4.style.transform = 'translateX(30%)'\n\n span4.style.color = '#fdd85e'\n span4.style.fontSize = `${12 * scale}px`\n span4.style.fontWeight = 'bold'\n\n div2.appendChild(img2)\n div2.appendChild(span3)\n div2.appendChild(span4)\n\n const poi02 = new SpritePoi(div2, {\n width: 100 * 2,\n height: 40 * 2,\n })\n\n poi02.scale.set(50, 22, 1)\n\n poi02.layers.set(2)\n poi02.position.set(-240.869, 15, -127.770)\n\n // group.add(poi01)\n // group.add(poi02)\n\n this.scene.add(group)\n\n this.thermaLimaging = group as Group\n\n return gltf\n })\n\n load.loadGLTF(`${this.usePath}guandao.glb`, false, true, './draco/', (gltf) => {\n this.scene.add(gltf.scene)\n\n this.pipeline = gltf.scene as Group\n return gltf\n })\n }\n\n /**\n * toggle SceneStyle\n * @param params\n */\n toggleSceneStyle(params: SceneStyle) {\n if (this.style === params)\n return\n this.style = params\n\n if (this.style === SceneStyle.tech) {\n this.pipeline.visible = false\n this.techModel.visible = true\n this.realModl.visible = false\n this.whiteModel.visible = false\n this.scene.scene.background = null\n this.realGroundModel && (this.realGroundModel.visible = false)\n\n this.scene.renderer.toneMappingExposure = 0.6\n }\n\n if (params === SceneStyle.real) {\n this.pipeline.visible = true\n this.techModel.visible = false\n this.whiteModel.visible = false\n this.realModl.visible = true\n this.realGroundModel && (this.realGroundModel.visible = true)\n this.scene.scene.background = new Color('#ccc')\n this.scene.renderer.toneMappingExposure = 0.4\n }\n\n if (params === SceneStyle.white) {\n this.pipeline.visible = false\n this.techModel.visible = false\n this.realModl.visible = false\n this.whiteModel.visible = true\n this.scene.scene.background = null\n this.realGroundModel && (this.realGroundModel.visible = false)\n\n this.scene.renderer.toneMappingExposure = 0.4\n }\n }\n\n public toggleTag(tag: SceneTag) {\n if (this.tag === tag)\n return\n toggleTag[tag].apply(this, [this])\n }\n\n private globalEventsAgent() {\n globalEvents.forEach((eventKey) => {\n emitter.on(eventKey, (args) => {\n this.eventHandleFn.get(eventKey)?.forEach((fn) => {\n fn(args)\n })\n })\n })\n }\n\n /**\n * toggle view\n */\n toggleView(viewType?: string) {\n if (this.tag !== SceneTag['smart-inspection'])\n return\n\n if (viewType) {\n if (viewType === 'Drone') {\n if (this.scene.cutoutCamera === this.inspection.minCamera) {\n const cutoutCamera = this.inspection.minCamera\n\n this.scene.cutoutCamera = this.inspection.mapCamera\n this.mainCamera = this.scene.camera\n this.scene.camera = cutoutCamera\n\n utils.emitter.emit('play')\n utils.emitter.emit('toggleView', 'Drone')\n\n sendToMessage(MessageType.Event, 'onViewTypeChange', EMessageStatus.Success, undefined, {\n viewType: 'Drone',\n })\n }\n }\n\n if (viewType === 'Global') {\n if (this.scene.cutoutCamera !== this.inspection.minCamera) {\n const mainCamera = this.mainCamera\n const cutoutCamera = this.inspection.minCamera\n\n this.scene.camera = mainCamera\n this.scene.cutoutCamera = cutoutCamera\n\n utils.emitter.emit('stop')\n utils.emitter.emit('toggleView', 'Global')\n\n this.inspection.minCamera.fov = 60\n this.inspection.minCamera.updateProjectionMatrix()\n\n sendToMessage(MessageType.Event, 'onViewTypeChange', EMessageStatus.Success, undefined, {\n viewType: 'Global',\n })\n }\n }\n }\n else {\n // toggle to min camera\n if (this.scene.cutoutCamera === this.inspection.minCamera) {\n const cutoutCamera = this.inspection.minCamera\n\n this.scene.cutoutCamera = this.inspection.mapCamera\n\n this.mainCamera = this.scene.camera\n this.scene.camera = cutoutCamera\n\n utils.emitter.emit('play')\n utils.emitter.emit('toggleView', 'Drone')\n\n sendToMessage(MessageType.Event, 'onViewTypeChange', EMessageStatus.Success, undefined, {\n viewType: 'Drone',\n })\n }\n else {\n // toggle to main camera\n const mainCamera = this.mainCamera\n const cutoutCamera = this.inspection.minCamera\n\n this.scene.camera = mainCamera\n this.scene.cutoutCamera = cutoutCamera\n\n utils.emitter.emit('stop')\n utils.emitter.emit('toggleView', 'Global')\n\n this.inspection.minCamera.fov = 60\n this.inspection.minCamera.updateProjectionMatrix()\n\n sendToMessage(MessageType.Event, 'onViewTypeChange', EMessageStatus.Success, undefined, {\n viewType: 'Global',\n })\n }\n }\n }\n\n addEventListener(eventName: string, handleFn: (args?: any) => void) {\n if (this.eventHandleFn.get(eventName))\n this.eventHandleFn.get(eventName).push(handleFn)\n\n else\n this.eventHandleFn.set(eventName, [handleFn])\n }\n}\n\nexport default Factory3D"],"mappings":"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"}
@@ -40,6 +40,7 @@ declare class Dialog {
40
40
  updateScale(sprite: Sprite): void;
41
41
  addEventListener(eventName: any, fn: any): void;
42
42
  getBorderMesh(camera: any, sprite: Sprite): Css2DPoi;
43
+ getFovView(cb: any): HTMLDivElement;
43
44
  addStyle(): void;
44
45
  close(): void;
45
46
  }
@@ -140,8 +140,8 @@ var CameraPoi = /*#__PURE__*/function () {
140
140
  data.camera.forEach(function (region) {
141
141
  var group = new Group();
142
142
  group.name = region.id;
143
- var sprite = new SpritePoi("".concat(usePath, "camera.png"), {
144
- scale: [14, 14, 1]
143
+ var sprite = new SpritePoi("".concat(usePath, "p4/camera.png"), {
144
+ scale: [16, 16, 1]
145
145
  });
146
146
  sprite.rotation.y = Math.PI;
147
147
  var position = new Vector3().fromArray(region.position);
@@ -581,6 +581,8 @@ var Dialog = /*#__PURE__*/function () {
581
581
  // 将边界框的最小和最大顶点转换为屏幕坐标
582
582
  var min = bbox.min.project(camera);
583
583
  var max = bbox.max.project(camera);
584
+ console.log('min:', min);
585
+ console.log('max:', max);
584
586
  var _ref3 = [window.innerWidth, window.innerHeight],
585
587
  w = _ref3[0],
586
588
  h = _ref3[1];
@@ -663,16 +665,10 @@ var Dialog = /*#__PURE__*/function () {
663
665
  // 关闭按钮
664
666
  var closeSpan = document.createElement('span');
665
667
  closeSpan.className = 'dialog-close';
668
+ dialogDiv.appendChild(closeSpan);
666
669
  closeSpan.addEventListener('click', function () {
667
670
  _this5.close();
668
671
  });
669
- var hLine = document.createElement('span');
670
- hLine.className = 'dialog-close-line dialog-close-h-line';
671
- closeSpan.appendChild(hLine);
672
- var vLine = document.createElement('span');
673
- vLine.className = 'dialog-close-line dialog-close-v-line';
674
- closeSpan.appendChild(vLine);
675
- dialogDiv.appendChild(closeSpan);
676
672
 
677
673
  // 操作按钮
678
674
  var op = document.createElement('div');
@@ -728,18 +724,9 @@ var Dialog = /*#__PURE__*/function () {
728
724
  // btnSpan.addEventListener('click', handleClick)
729
725
  op.appendChild(btnSpan);
730
726
  });
731
-
732
- // 滑动条
733
- var sliderDiv = document.createElement('div');
734
- sliderDiv.className = 'dialog-slider-container';
735
- var sliderBar = document.createElement('input');
736
- sliderBar.type = 'range';
737
- sliderBar.min = '30';
738
- sliderBar.max = '120';
739
- sliderBar.value = '60';
740
- sliderBar.className = 'dialog-slider';
741
- sliderBar.addEventListener('input', function () {
742
- camera.fov = sliderBar.value;
727
+ var cb = function cb(fov) {
728
+ if (!fov) return;
729
+ camera.fov = fov;
743
730
  camera.updateProjectionMatrix();
744
731
  var _this5$manage$gobal$s2 = _this5.manage.gobal.scene.setCustomPerspective(camera),
745
732
  texture = _this5$manage$gobal$s2.texture,
@@ -752,18 +739,143 @@ var Dialog = /*#__PURE__*/function () {
752
739
  setTimeout(function () {
753
740
  return close();
754
741
  }, 800);
755
- });
756
- sliderDiv.appendChild(sliderBar);
757
- dialogDiv.appendChild(sliderDiv);
742
+ };
743
+ var slider = this.getFovView(cb);
744
+ dialogDiv.appendChild(slider);
745
+
746
+ // // 滑动条
747
+ // const sliderDiv = document.createElement('div')
748
+ // sliderDiv.className = 'dialog-slider-container'
749
+ // const sliderBar = document.createElement('input')
750
+ // sliderBar.type = 'range'
751
+ // sliderBar.min = '30'
752
+ // sliderBar.max = '120'
753
+ // sliderBar.value = '60'
754
+ // sliderBar.className = 'dialog-slider'
755
+ // sliderBar.addEventListener('input', () => {
756
+ // camera.fov = sliderBar.value
757
+ // camera.updateProjectionMatrix()
758
+ // const { texture, close } = this.manage.gobal.scene.setCustomPerspective(camera)
759
+ // sprite.material = new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false })
760
+ // setTimeout(() => close(), 800)
761
+ // })
762
+ // sliderDiv.appendChild(sliderBar)
763
+ // dialogDiv.appendChild(sliderDiv)
764
+
758
765
  var borderMesh = new Css2DPoi(dialogDiv);
759
766
  borderMesh.position.copy(sprite.position);
760
767
  return borderMesh;
761
768
  }
769
+ }, {
770
+ key: "getFovView",
771
+ value: function getFovView(cb) {
772
+ var data = [{
773
+ text: '0.5',
774
+ fov: '40'
775
+ }, {
776
+ text: '1',
777
+ fov: '60'
778
+ }, {
779
+ text: '1.5',
780
+ fov: '68'
781
+ }, {
782
+ text: '2.0',
783
+ fov: '76'
784
+ }, {
785
+ text: '2.5',
786
+ fov: '84'
787
+ }, {
788
+ text: '3.0',
789
+ fov: '92'
790
+ }, {
791
+ text: '3.5',
792
+ fov: '100'
793
+ }];
794
+ var container = document.createElement('div');
795
+ container.className = 'dialog-slider-container';
796
+ var itemsContainer = document.createElement('div');
797
+ itemsContainer.className = 'dialog-slider-items';
798
+ container.appendChild(itemsContainer);
799
+ data.forEach(function (item) {
800
+ var div = document.createElement('div');
801
+ div.className = 'dialog-slider-item';
802
+ div.innerHTML = "".concat(item.text, " X&nbsp;&nbsp;-");
803
+ div.setAttribute('fov', item.fov);
804
+ itemsContainer.appendChild(div);
805
+ });
806
+ var items = itemsContainer.children;
807
+ var itemHeight = 58;
808
+ var totalHeight = items.length * itemHeight;
809
+ var cloneItems = function cloneItems() {
810
+ Array.from(items).forEach(function (item) {
811
+ itemsContainer.appendChild(item.cloneNode(true));
812
+ });
813
+ };
814
+ cloneItems();
815
+ cloneItems();
816
+ var highlightMiddleItem = function highlightMiddleItem() {
817
+ var middlePosition = container.scrollTop + container.clientHeight / 2;
818
+ var middleIndex = Math.floor(middlePosition / itemHeight) % items.length;
819
+ Array.from(items).forEach(function (item, index) {
820
+ if (index === middleIndex) {
821
+ item.classList.add('highlight');
822
+ cb(item.getAttribute('fov'));
823
+ } else {
824
+ item.classList.remove('highlight');
825
+ }
826
+ });
827
+ };
828
+ container.addEventListener('scroll', function () {
829
+ if (container.scrollTop <= 0) {
830
+ container.scrollTop += totalHeight;
831
+ } else if (container.scrollTop >= totalHeight * 2) {
832
+ container.scrollTop -= totalHeight;
833
+ }
834
+ highlightMiddleItem();
835
+ });
836
+ var smoothScrollTo = function smoothScrollTo(targetPosition) {
837
+ var startPosition = container.scrollTop;
838
+ var distance = targetPosition - startPosition;
839
+ var duration = 200;
840
+ var start = null;
841
+ var step = function step(timestamp) {
842
+ if (!start) start = timestamp;
843
+ var progress = timestamp - start;
844
+ var progressRatio = Math.min(progress / duration, 1);
845
+ container.scrollTop = startPosition + distance * progressRatio;
846
+ if (progress < duration) {
847
+ window.requestAnimationFrame(step);
848
+ } else {
849
+ highlightMiddleItem();
850
+ }
851
+ };
852
+ window.requestAnimationFrame(step);
853
+ };
854
+ var scrollToItem = function scrollToItem(item) {
855
+ var index = Array.from(items).indexOf(item);
856
+ var targetPosition = index * itemHeight - container.clientHeight / 2 + itemHeight / 2;
857
+ smoothScrollTo(targetPosition);
858
+ };
859
+ Array.from(items).forEach(function (item) {
860
+ item.addEventListener('click', function () {
861
+ scrollToItem(item);
862
+ });
863
+ });
864
+ setTimeout(function () {
865
+ //items && (items[3] as HTMLDivElement).click()
866
+ container.scrollTop = totalHeight;
867
+ highlightMiddleItem();
868
+ });
869
+ var conSlider = document.createElement('div');
870
+ conSlider.className = 'dialog-slider-bg';
871
+ conSlider.appendChild(container);
872
+ return conSlider;
873
+ }
762
874
  }, {
763
875
  key: "addStyle",
764
876
  value: function addStyle() {
765
877
  // 设置 CSS 规则
766
- var css = "\n .page-mask{\n position: fixed;\n top: 0;\n left: 0;\n bottom:0;\n right:0;\n //width: 100%;\n //height: 100%;\n background-color: rgba(0, 0, 0, 0.5); /* \u534A\u900F\u660E\u80CC\u666F */\n //filter: blur(10px); /* \u6A21\u7CCA\u6548\u679C */\n z-index: 1 !important; /* \u786E\u4FDD\u8499\u7248\u4F4D\u4E8E\u5176\u4ED6\u5143\u7D20\u4E4B\u4E0A */\n }\n .dialog-mask{\n position: absolute;\n top: 8px;\n left: 6px;\n width: calc(100% - 12px);\n height: calc(100% - 16px);\n background: linear-gradient(90deg, rgba(0, 0, 0,.4) 0%,rgba(0, 0, 0,.2) 10%, rgba(0, 0, 0,0) 20%, rgba(0,0,0, 0) 50%, rgba(0, 0, 0,0) 80%, rgba(0, 0, 0,0.2) 90%, rgba(0, 0, 0,.4) 100%);\n pointer-events: auto;\n opacity: 1;\n transform: perspective(100px) rotateX(0deg) rotateY(0deg) rotateZ(0deg);\n transform-origin: center center;\n }\n .hot-back{\n width: 70px;\n height: 25px;\n border-radius: 2px;\n color: #fff;\n font-weight: bold;\n font-size: 14px;\n border:1px solid #d1ae6d;\n background-color: #c8ab75;\n cursor: pointer; /* \u9F20\u6807\u6307\u9488\u6837\u5F0F */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n left: 30px;\n top: 30px;\n pointer-events: auto;\n }\n .hot-back:hover{\n background-color:#c8a158;\n }\n .dialog-close{\n width: 36px;\n height: 36px;\n border-radius: 2px;\n color: #fff;\n background-color: #c8ab75;\n cursor: pointer; /* \u9F20\u6807\u6307\u9488\u6837\u5F0F */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n right: 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(".concat(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; /* \u5DE6\u8FB9\u900F\u660E */\n border-right: 10px solid transparent; /* \u53F3\u8FB9\u900F\u660E */\n border-bottom: 10px solid #f2c67d; /* \u5E95\u8FB9\u5B9E\u5FC3 */\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; /* \u5DE6\u8FB9\u900F\u660E */\n border-right: 10px solid transparent; /* \u53F3\u8FB9\u900F\u660E */\n border-top: 10px solid #f2c67d; /* \u5E95\u8FB9\u5B9E\u5FC3 */\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; /* \u5DE6\u8FB9\u900F\u660E */\n border-bottom: 10px solid transparent; /* \u53F3\u8FB9\u900F\u660E */\n border-right: 10px solid #f2c67d; /* \u5E95\u8FB9\u5B9E\u5FC3 */\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; /* \u5DE6\u8FB9\u900F\u660E */\n border-bottom: 10px solid transparent; /* \u53F3\u8FB9\u900F\u660E */\n border-left: 10px solid #f2c67d; /* \u5E95\u8FB9\u5B9E\u5FC3 */\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(").concat(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");
878
+ var css = "\n .page-mask{\n position: fixed;\n top: 0;\n left: 0;\n bottom:0;\n right:0;\n //width: 100%;\n //height: 100%;\n background-color: rgba(0, 0, 0, 0.5); /* \u534A\u900F\u660E\u80CC\u666F */\n //filter: blur(10px); /* \u6A21\u7CCA\u6548\u679C */\n z-index: 1 !important; /* \u786E\u4FDD\u8499\u7248\u4F4D\u4E8E\u5176\u4ED6\u5143\u7D20\u4E4B\u4E0A */\n }\n .dialog-mask{\n position: absolute;\n top: 8px;\n left: 6px;\n width: calc(100% - 12px);\n height: calc(100% - 16px);\n background: linear-gradient(90deg, rgba(0, 0, 0,.4) 0%,rgba(0, 0, 0,.2) 10%, rgba(0, 0, 0,0) 20%, rgba(0,0,0, 0) 50%, rgba(0, 0, 0,0) 80%, rgba(0, 0, 0,0.2) 90%, rgba(0, 0, 0,.4) 100%);\n pointer-events: auto;\n opacity: 1;\n transform: perspective(100px) rotateX(0deg) rotateY(0deg) rotateZ(0deg);\n transform-origin: center center;\n }\n .hot-back{\n width: 70px;\n height: 25px;\n border-radius: 2px;\n color: #fff;\n font-weight: bold;\n font-size: 14px;\n border:1px solid #d1ae6d;\n background-color: #c8ab75;\n cursor: pointer; /* \u9F20\u6807\u6307\u9488\u6837\u5F0F */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n left: 30px;\n top: 30px;\n pointer-events: auto;\n }\n .hot-back:hover{\n background-color:#c8a158;\n }\n .dialog-close{\n width: 26px;\n height: 26px;\n background-image: url(".concat(usePath, "p4/close.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n color: #fff;\n cursor: pointer; /* \u9F20\u6807\u6307\u9488\u6837\u5F0F */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n right: 28px;\n top: 20px;\n pointer-events: auto;\n }\n .dialog-operate{\n width: 199px;\n height: 182px;\n background-image: url(").concat(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: 20px;\n height: 34px;\n position: absolute;\n cursor: pointer;\n pointer-events: auto;\n background-image: url(").concat(usePath, "p4/arrow1.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n transition: all .2s;\n }\n .dialog-operate-btn:hover{\n background-image: url(").concat(usePath, "p4/arrow2.png);\n }\n\n .dialog-operate-top{\n transform: rotateZ(90deg);\n left: calc(50% - 9px);\n top: 40px;\n }\n .dialog-operate-top:hover{\n border-bottom-color:#fff2dd;\n }\n\n .dialog-operate-bottom{\n transform: rotateZ(270deg);\n left: calc(50% - 9px);\n bottom: 40px;\n }\n\n .dialog-operate-bottom:hover{\n border-top-color:#fff2dd;\n }\n\n .dialog-operate-left{\n top: calc(50% - 18px);\n left: 58px;\n }\n .dialog-operate-left:hover{\n border-right-color:#fff2dd;\n }\n\n .dialog-operate-right{\n transform: rotateZ(180deg);\n top: calc(50% - 18px);\n right: 57px;\n }\n\n .dialog-operate-right:hover{\n border-left-color:#fff2dd;\n }\n .dialog-slider-bg {\n width: 166px;\n height: 493px;\n position:absolute;\n right:36px;\n top:100px;\n background: url(").concat(usePath, "p4/fov-bg.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n pointer-events: auto;\n }\n\n .dialog-slider-container {\n height: 406px;\n margin: 44px 21px;\n overflow: auto;\n position: relative;\n text-align: center;\n scrollbar-width: none;\n -ms-overflow-style: none;\n pointer-events: auto;\n }\n\n .dialog-slider-container::-webkit-scrollbar {\n display: none;\n /* Safari and Chrome */\n }\n\n .dialog-slider-items {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n .dialog-slider-item {\n width: 100%;\n height: 58px;\n display: flex;\n justify-content: center;\n align-items: center;\n box-sizing: border-box;\n font-size: 20px;\n color: #fff;\n transition: all .2s;\n cursor: pointer;\n pointer-events: auto;\n }\n\n .dialog-slider-item.highlight {\n background-image: url(").concat(usePath, "p4/fov-border.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n font-size: 28px;\n color: #ffda77;\n }\n");
767
879
  // 创建一个 <style> 元素
768
880
  var styleElement = document.createElement('style');
769
881
  styleElement.appendChild(document.createTextNode(css));
@@ -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","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 if (this.heatMapPlane) {\n this.heatMapPlane.removeFromParent()\n this.heatMapPlane.remove()\n }\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","console","log","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","op","opList","key","btnSpan","handleClick","clock","longPress","time","getDelta","clearTimeout","cb","updateProjectionMatrix","slider","getFovView","text","container","itemsContainer","div","innerHTML","setAttribute","items","itemHeight","totalHeight","length","cloneItems","Array","from","cloneNode","highlightMiddleItem","middlePosition","scrollTop","middleIndex","floor","index","classList","getAttribute","smoothScrollTo","start","step","timestamp","progress","progressRatio","requestAnimationFrame","scrollToItem","indexOf","conSlider","css","styleElement","createTextNode","head","get","heatmap","createDom","gradient","TemperatureColorStops","len","points","val","value","setData","greymap","heatMapMaterial","uniforms","greyMap","Zscale","u_color","u_opacity","_renderer","canvas","needsUpdate","greyTexture","tan","aspect","heatMapGeometry","heatMapPlane","backEle","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}p4/camera.png`, { scale: [16, 16, 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 console.log('min:', min)\n console.log('max:', max)\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 dialogDiv.appendChild(closeSpan)\n closeSpan.addEventListener('click', () => {\n this.close()\n })\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 const cb = (fov) => {\n if (!fov) return\n camera.fov = fov\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 const slider = this.getFovView(cb)\n dialogDiv.appendChild(slider)\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\n const borderMesh = new Css2DPoi(dialogDiv)\n borderMesh.position.copy(sprite.position)\n return borderMesh\n }\n\n getFovView(cb) {\n let data = [{ text: '0.5', fov: '40' }, { text: '1', fov: '60' }, { text: '1.5', fov: '68' }, { text: '2.0', fov: '76' }, { text: '2.5', fov: '84' }, { text: '3.0', fov: '92' }, { text: '3.5', fov: '100' },]\n\n const container = document.createElement('div');\n container.className = 'dialog-slider-container'\n\n const itemsContainer = document.createElement('div');\n itemsContainer.className = 'dialog-slider-items'\n container.appendChild(itemsContainer)\n data.forEach(item => {\n const div = document.createElement('div')\n div.className = 'dialog-slider-item'\n div.innerHTML = `${item.text} X&nbsp;&nbsp;-`\n div.setAttribute('fov', item.fov)\n itemsContainer.appendChild(div)\n })\n\n const items = itemsContainer.children;\n const itemHeight = 58;\n let totalHeight = items.length * itemHeight;\n\n const cloneItems = () => {\n Array.from(items).forEach(item => {\n itemsContainer.appendChild(item.cloneNode(true));\n });\n };\n\n cloneItems();\n cloneItems();\n\n const highlightMiddleItem = () => {\n const middlePosition = container.scrollTop + container.clientHeight / 2;\n const middleIndex = Math.floor(middlePosition / itemHeight) % items.length;\n Array.from(items).forEach((item, index) => {\n if (index === middleIndex) {\n item.classList.add('highlight');\n cb(item.getAttribute('fov'))\n } else {\n item.classList.remove('highlight');\n }\n });\n };\n container.addEventListener('scroll', () => {\n if (container.scrollTop <= 0) {\n container.scrollTop += totalHeight;\n } else if (container.scrollTop >= totalHeight * 2) {\n container.scrollTop -= totalHeight;\n }\n highlightMiddleItem();\n });\n const smoothScrollTo = (targetPosition) => {\n const startPosition = container.scrollTop;\n const distance = targetPosition - startPosition;\n const duration = 200;\n let start = null;\n\n const step = (timestamp) => {\n if (!start) start = timestamp;\n const progress = timestamp - start;\n const progressRatio = Math.min(progress / duration, 1);\n container.scrollTop = startPosition + distance * progressRatio;\n if (progress < duration) {\n window.requestAnimationFrame(step);\n } else {\n highlightMiddleItem();\n }\n };\n\n window.requestAnimationFrame(step);\n };\n\n const scrollToItem = (item) => {\n const index = Array.from(items).indexOf(item);\n const targetPosition = index * itemHeight - container.clientHeight / 2 + itemHeight / 2;\n smoothScrollTo(targetPosition);\n };\n Array.from(items).forEach(item => {\n item.addEventListener('click', () => { scrollToItem(item) });\n });\n setTimeout(() => {\n //items && (items[3] as HTMLDivElement).click()\n container.scrollTop = totalHeight;\n highlightMiddleItem();\n })\n\n const conSlider = document.createElement('div')\n conSlider.className = 'dialog-slider-bg'\n conSlider.appendChild(container)\n return conSlider\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: 26px;\n height: 26px;\n background-image: url(${usePath}p4/close.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n color: #fff;\n cursor: pointer; /* 鼠标指针样式 */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n right: 28px;\n top: 20px;\n pointer-events: auto;\n }\n .dialog-operate{\n width: 199px;\n height: 182px;\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: 20px;\n height: 34px;\n position: absolute;\n cursor: pointer;\n pointer-events: auto;\n background-image: url(${usePath}p4/arrow1.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n transition: all .2s;\n }\n .dialog-operate-btn:hover{\n background-image: url(${usePath}p4/arrow2.png);\n }\n\n .dialog-operate-top{\n transform: rotateZ(90deg);\n left: calc(50% - 9px);\n top: 40px;\n }\n .dialog-operate-top:hover{\n border-bottom-color:#fff2dd;\n }\n\n .dialog-operate-bottom{\n transform: rotateZ(270deg);\n left: calc(50% - 9px);\n bottom: 40px;\n }\n\n .dialog-operate-bottom:hover{\n border-top-color:#fff2dd;\n }\n\n .dialog-operate-left{\n top: calc(50% - 18px);\n left: 58px;\n }\n .dialog-operate-left:hover{\n border-right-color:#fff2dd;\n }\n\n .dialog-operate-right{\n transform: rotateZ(180deg);\n top: calc(50% - 18px);\n right: 57px;\n }\n\n .dialog-operate-right:hover{\n border-left-color:#fff2dd;\n }\n .dialog-slider-bg {\n width: 166px;\n height: 493px;\n position:absolute;\n right:36px;\n top:100px;\n background: url(${usePath}p4/fov-bg.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n pointer-events: auto;\n }\n\n .dialog-slider-container {\n height: 406px;\n margin: 44px 21px;\n overflow: auto;\n position: relative;\n text-align: center;\n scrollbar-width: none;\n -ms-overflow-style: none;\n pointer-events: auto;\n }\n\n .dialog-slider-container::-webkit-scrollbar {\n display: none;\n /* Safari and Chrome */\n }\n\n .dialog-slider-items {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n .dialog-slider-item {\n width: 100%;\n height: 58px;\n display: flex;\n justify-content: center;\n align-items: center;\n box-sizing: border-box;\n font-size: 20px;\n color: #fff;\n transition: all .2s;\n cursor: pointer;\n pointer-events: auto;\n }\n\n .dialog-slider-item.highlight {\n background-image: url(${usePath}p4/fov-border.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n font-size: 28px;\n color: #ffda77;\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 if (this.heatMapPlane) {\n this.heatMapPlane.removeFromParent()\n this.heatMapPlane.remove()\n }\n this.isShow = false\n }\n}\n"],"mappings":"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"}
@@ -12,7 +12,7 @@ declare class PoiManage {
12
12
  private poiHeight;
13
13
  constructor(gobal: any);
14
14
  generatePoi(): Promise<void>;
15
- updateScale(poi: SpritePoi, ratio: number, hratio: any): void;
15
+ updateScale(poi: SpritePoi, ratio?: number): void;
16
16
  getDom(data: any): HTMLDivElement;
17
17
  remove(): void;
18
18
  reset(): void;
@@ -61,7 +61,7 @@ var PoiManage = /*#__PURE__*/function () {
61
61
  sprite = new SpritePoi(_this.getDom(region), option);
62
62
  sprite.position.copy(new Vector3().fromArray(region.poi.position));
63
63
  _this.scene.add(sprite);
64
- _this.updateScale(sprite, ratio + 0.3, ratio + 0.1);
64
+ _this.updateScale(sprite, ratio);
65
65
  _this.poiMesh.set(region.poi.id, sprite);
66
66
 
67
67
  // @ts-ignore
@@ -159,7 +159,6 @@ var PoiManage = /*#__PURE__*/function () {
159
159
  value: function updateScale(poi) {
160
160
  var _camera$position;
161
161
  var ratio = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
162
- var hratio = arguments.length > 2 ? arguments[2] : undefined;
163
162
  // 距离限制范围的值,用于计算缩放比例
164
163
  var minDistance = 0.1;
165
164
  var maxDistance = 1000000;
@@ -173,7 +172,7 @@ var PoiManage = /*#__PURE__*/function () {
173
172
  if (!ratio && poi.scale) ratio = poi.scale.x / poi.scale.y;
174
173
 
175
174
  // 按照缩放系数和距离进行缩放,缩放系数应该约定好一个固定值
176
- poi.scale.copy(new Vector3(scaleValue * ratio * 0.8, scaleValue * hratio * 0.8 || scaleValue * 0.8, 1));
175
+ poi.scale.copy(new Vector3(scaleValue * ratio * 0.8, scaleValue * 0.8, 1));
177
176
  }
178
177
  }, {
179
178
  key: "getDom",
@@ -181,7 +180,7 @@ var PoiManage = /*#__PURE__*/function () {
181
180
  var dom = document.createElement('div');
182
181
  var wordLength = data.title.length;
183
182
  Object.assign(dom.style, {
184
- fontSize: '26px',
183
+ fontSize: '22px',
185
184
  backgroundImage: "url(".concat(usePath, "poi.png)"),
186
185
  backgroundSize: '100% 100%',
187
186
  backgroundRepeat: 'no-repeat',
@@ -202,14 +201,13 @@ var PoiManage = /*#__PURE__*/function () {
202
201
  var img = document.createElement('img');
203
202
  img.src = "".concat(usePath).concat(data.title, "\u56FE\u6807.png");
204
203
  img.style.position = 'absolute';
205
- img.style.left = '20px';
206
- img.style.top = '15px';
207
- img.style.width = '30px';
208
- img.style.height = '30px';
204
+ img.style.left = '25px';
205
+ img.style.top = '10px';
209
206
  dom.appendChild(img);
210
207
  var label = document.createElement('label');
211
208
  label.style.marginLeft = '10px';
212
209
  label.innerText = data.title;
210
+ label.style.fontWeight = 'bold';
213
211
  dom.appendChild(label);
214
212
  return dom;
215
213
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Vector3","use","utils","Css2DPoi","EAnimationType","SpritePoi","usePath","regionMap","SceneTag","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","tag","overview","unClick","event","reset","addDialogPanel","point","poiEventListener","unFrame","hratio","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","fontFamily","textAlign","color","pointerEvents","cursor","height","minWidth","width","padding","img","src","left","top","appendChild","label","marginLeft","innerText","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 { SceneTag } from '../utils/constant'\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 + 0.3, ratio + 0.1)\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 if (this.gobal.tag === SceneTag.overview)\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 if (this.gobal.tag === SceneTag.overview)\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, hratio) {\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 * 0.8, scaleValue * hratio * 0.8 || scaleValue * 0.8, 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: '26px',\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 fontFamily: 'YouSheBiaoTiHei',\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}${data.title}图标.png`\n img.style.position = 'absolute'\n img.style.left = '20px'\n img.style.top = '15px'\n img.style.width = '30px'\n img.style.height = '30px'\n dom.appendChild(img)\n\n const label = document.createElement('label')\n label.style.marginLeft = '10px'\n label.innerText = data.title\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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"}
1
+ {"version":3,"names":["Vector3","use","utils","Css2DPoi","EAnimationType","SpritePoi","usePath","regionMap","SceneTag","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","tag","overview","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","fontFamily","textAlign","color","pointerEvents","cursor","height","minWidth","width","padding","img","src","left","top","appendChild","label","marginLeft","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 { SceneTag } from '../utils/constant'\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 if (this.gobal.tag === SceneTag.overview)\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 if (this.gobal.tag === SceneTag.overview)\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 * 0.8, scaleValue * 0.8, 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: '22px',\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 fontFamily: 'YouSheBiaoTiHei',\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}${data.title}图标.png`\n img.style.position = 'absolute'\n img.style.left = '25px'\n img.style.top = '10px'\n dom.appendChild(img)\n const label = document.createElement('label')\n label.style.marginLeft = '10px'\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.111",
3
+ "version": "0.0.112",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",