@anov/3d 0.0.61 → 0.0.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,6 @@ export var regionMap = {
8
8
  id: '1',
9
9
  title: '重整装置区',
10
10
  area: [[-483.562, 0, -225.624], [-145.997, 0, -225.624], [-145.997, 0, -59.401], [-483.562, 0, -59.401]],
11
- maxHigh: 1000,
12
11
  poi: {
13
12
  id: '1',
14
13
  position: [-314.01113070, 0.55000000, -146.54350582],
@@ -73,7 +72,6 @@ export var regionMap = {
73
72
  id: '2',
74
73
  title: '常减压装置区',
75
74
  area: [[-140.123, 0.1, -225.604], [206.547, 0, -225.624], [206.547, -0.1, -59.401], [-140.123, 0, -59.401]],
76
- maxHigh: 1000,
77
75
  poi: {
78
76
  id: '2',
79
77
  position: [28.89784048, 0.55000000, -144.28157517],
@@ -138,7 +136,6 @@ export var regionMap = {
138
136
  id: '3',
139
137
  title: '原油罐区',
140
138
  area: [[240.584, 0, -225.624], [475.523, 0, -225.624], [475.543, 0, -59.401], [240.584, 0, -59.401]],
141
- maxHigh: 1000,
142
139
  poi: {
143
140
  id: '3',
144
141
  position: [359.58372139, 0.55000000, -144.28157517],
@@ -179,7 +176,6 @@ export var regionMap = {
179
176
  id: '4',
180
177
  title: '催化裂化装置区',
181
178
  area: [[-483.562, 0, -49.812], [-145.997, 0, -49.812], [-145.997, 0, 115.799], [-483.562, 0, 115.799]],
182
- maxHigh: 1000,
183
179
  poi: {
184
180
  id: '4',
185
181
  position: [-322.57300372, 0.55000000, 31.81516361],
@@ -256,7 +252,6 @@ export var regionMap = {
256
252
  id: '5',
257
253
  title: '加氢裂化装置区',
258
254
  area: [[-483.562, 0, 124.634], [-145.997, 0, 124.634], [-145.997, 0, 218.589], [-483.562, 0, 218.589]],
259
- maxHigh: 1000,
260
255
  poi: {
261
256
  id: '5',
262
257
  position: [-307.04992341, 0.55000000, 168.90578924],
@@ -291,7 +286,6 @@ export var regionMap = {
291
286
  id: '6',
292
287
  title: '焦化装置区',
293
288
  area: [[-140.100, 0, -49.802], [316.508, 0, -49.802], [316.508, 0, 218.847], [-140.100, 0, 218.847]],
294
- maxHigh: 300,
295
289
  poi: {
296
290
  id: '6',
297
291
  position: [76.84192138, 0.55000332, 95.89826158],
@@ -362,7 +356,6 @@ export var regionMap = {
362
356
  id: '7',
363
357
  title: '办公区',
364
358
  area: [[340.501, 0, -44.710], [482.570, 0, -44.710], [482.570, 0, 227.641], [340.501, 0, 227.641]],
365
- maxHigh: 1000,
366
359
  people: [{
367
360
  id: '49',
368
361
  name: '毕古元',
@@ -1 +1 @@
1
- {"version":3,"names":["regionMap","reform","id","title","area","maxHigh","poi","position","content","people","name","dep","online","camera","reduction","probePoint","warn","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative"],"sources":["../../src/factory/regionData.ts"],"sourcesContent":["/**\n * todo: 各个单元数据需要统一\n * 当前demo area可以用直线绘制\n */\n\nexport interface IPeople {\n id: string\n name: string\n dep?: string\n online?: boolean\n position: Array<number>\n}\n\nexport interface IPoi {\n id: string\n position: Array<number>\n content?: string\n}\n\nexport interface IProbePoint {\n id: string\n name: string\n warn: boolean\n position: Array<number>\n}\n\nexport type RegionMap = {\n [k: string]: {\n id: string\n title: string\n area: number[][]\n maxHigh?: number\n poi?: IPoi\n people?: Array<IPeople>\n camera?: Object\n probePoint?: Array<IProbePoint>\n }\n}\n\nexport const regionMap: RegionMap = {\n reform: {\n id: '1',\n title: '重整装置区',\n area: [\n [\n -483.562,\n 0,\n -225.624,\n ],\n [\n -145.997,\n 0,\n -225.624,\n ],\n [\n -145.997,\n 0,\n -59.401,\n ],\n [\n -483.562,\n 0,\n -59.401,\n ],\n ],\n maxHigh: 1000,\n poi: {\n id: '1',\n position: [-314.01113070, 0.55000000, -146.54350582],\n content: '通过直馏汽油和加氢石脑油,在催化剂存在的前提下,将原料的烷烃和环烷烃重构成为芳烃。并采用半再生固定床重整工艺,催化剂分段装填及两段混氢技术,装置采用了RIPP的粗汽油制氢技术。',\n },\n people: [\n {\n id: '7',\n name: '耿笑',\n dep: '设备运维',\n online: true,\n position: [-352.00000000, 0.62500079, -177.20000000],\n },\n {\n id: '2',\n name: '李连贵',\n dep: '工艺操作',\n online: true,\n position: [-275.70000000, 0.62500079, -137.10000000],\n },\n {\n id: '8',\n name: '吕萌',\n dep: '质量检测',\n online: true,\n position: [-365.40000000, 0.62500079, -80.60000000],\n },\n {\n id: '1',\n name: '宋玉',\n dep: '质量检测',\n online: true,\n position: [-436.90000000, 0.62500079, -121.50000000],\n },\n {\n id: '5',\n name: '王小雨',\n dep: '运输装卸',\n online: true,\n position: [-238.70000000, 0.62500079, -205.10000000],\n },\n {\n id: '6',\n name: '张建国',\n dep: '原料加工',\n online: true,\n position: [-436.50000000, 0.62500079, -182.30000000],\n },\n {\n id: '3',\n name: '张小萌',\n dep: '生产技术',\n online: true,\n position: [-204.80000000, 0.62500079, -150.10000000],\n },\n {\n id: '4',\n name: '朱正',\n dep: '设备运维',\n online: true,\n position: [-302.20000000, 0.62500079, -117.90000000],\n },\n ],\n camera: {\n id: '1',\n name: '摄像头1',\n position: [\n -314.0111307,\n 20.55,\n -146.54350582,\n ],\n },\n },\n reduction: {\n id: '2',\n title: '常减压装置区',\n area: [\n [-140.123, 0.1, -225.604],\n [206.547, 0, -225.624],\n [206.547, -0.1, -59.401],\n [-140.123, 0, -59.401],\n ],\n maxHigh: 1000,\n poi: {\n id: '2',\n position: [28.89784048, 0.55000000, -144.28157517],\n content: '主要包括三个工序:原油的脱盐、脱水;常压蒸馏;减压蒸馏。从油田送往炼油厂的原油往往含盐(主要是氧化物)带水(溶于油或呈乳化状态),可导致设备的腐蚀,在设备内壁结垢和影响成品油的组成,需在加工前脱除。',\n },\n people: [\n {\n id: '12',\n name: '才新梁',\n dep: '运输装卸',\n online: true,\n position: [26.50000000, 0.62500079, -155.00000000],\n },\n {\n id: '13',\n name: '何超盈',\n dep: '生产技术',\n online: true,\n position: [198.50000000, 0.62500079, -169.20000000],\n },\n {\n id: '11',\n name: '李大为',\n dep: '质量检测',\n online: true,\n position: [-79.80000000, 0.62500079, -218.20000000],\n },\n {\n id: '15',\n name: '孙建连',\n dep: '工艺操作',\n online: true,\n position: [-19.50000000, 0.62500079, -174.60000000],\n },\n {\n id: '9',\n name: '孙强',\n dep: '工艺操作',\n online: true,\n position: [-114.10000000, 0.62500079, -114.60000000],\n },\n {\n id: '10',\n name: '佟丽英',\n dep: '运输装卸',\n online: true,\n position: [26.10000000, 0.62500079, -202.30000000],\n },\n {\n id: '14',\n name: '王超',\n dep: '设备运维',\n online: true,\n position: [-14.90000000, 0.62500079, -116.90000000],\n },\n ],\n camera: {\n id: '2',\n name: '摄像头2',\n position: [\n 28.89784048,\n 20.55,\n -144.28157517,\n ],\n },\n probePoint: [\n {\n id: '3',\n name: '甲烷监测点3',\n warn: false,\n position: [\n 48.89784048,\n 30.55000000,\n -144.28157517,\n ],\n },\n ],\n },\n crudeOil: {\n id: '3',\n title: '原油罐区',\n area: [\n [240.584, 0, -225.624],\n [475.523, 0, -225.624],\n [475.543, 0, -59.401],\n [240.584, 0, -59.401],\n ],\n maxHigh: 1000,\n poi: {\n id: '3',\n position: [359.58372139, 0.55000000, -144.28157517],\n content: '原油罐区应靠近相应的加工装置区,并利用地形将液体物料自留输送,性质相近的液体物料储物罐宜布置较近。原油罐区的占地面积较大,原油罐区应注意火灾防范,存储量大一旦发生火灾,如不及时处置,扑救十分困难。',\n },\n people: [\n {\n id: '19',\n name: '牛小灵',\n dep: '生产技术',\n online: true,\n position: [404.70000000, 0.62500079, -190.30000000],\n },\n {\n id: '17',\n name: '彭旭',\n dep: '运输装卸',\n online: true,\n position: [294.10000000, 0.62500079, -125.90000000],\n },\n {\n id: '16',\n name: '宋麒麟',\n dep: '设备运维',\n online: true,\n position: [445.70000000, 0.62500079, -119.20000000],\n },\n {\n id: '18',\n name: '赵佳慧',\n dep: '生产技术',\n online: true,\n position: [344.50000000, 0.62500079, -127.10000000],\n },\n ],\n camera: {\n id: '3',\n name: '摄像头3',\n position: [\n 359.58372139,\n 20.55,\n -144.28157517,\n ],\n },\n },\n catalyticCracking: {\n id: '4',\n title: '催化裂化装置区',\n area: [\n [\n -483.562,\n 0,\n -49.812,\n ],\n [\n -145.997,\n 0,\n -49.812,\n ],\n [\n -145.997,\n 0,\n 115.799,\n ],\n [\n -483.562,\n 0,\n 115.799,\n ],\n ],\n maxHigh: 1000,\n poi: {\n id: '4',\n position: [-322.57300372, 0.55000000, 31.81516361],\n content: '该区域主要危险因素为高温,重点部位:1. 催化剂循环系统磨穿泄漏着火;2. 再生器及沉降器油气互串爆炸;3. 高位管线及设备泄漏着火。同时催化裂化工艺过程需注意对环境造成的影响,生产过程中烟气会带走较多热烈造成热能浪费和污染,',\n },\n people: [\n {\n id: '20',\n name: '李刚',\n dep: '运输装卸',\n online: true,\n position: [-339.40000000, 0.62500079, -1.90000000],\n },\n {\n id: '24',\n name: '李天一',\n dep: '工艺操作',\n online: true,\n position: [-394.80000000, 0.62500079, 16.80000000],\n },\n {\n id: '26',\n name: '吕方',\n dep: '设备运维',\n online: true,\n position: [-363.10000000, 0.62500079, 73.30000000],\n },\n {\n id: '29',\n name: '路笑',\n dep: '运输装卸',\n online: true,\n position: [-214.00000000, 0.62500079, 39.10000000],\n },\n {\n id: '22',\n name: '淼杉',\n dep: '运输装卸',\n online: true,\n position: [-175.10000000, 0.62500079, -12.80000000],\n },\n {\n id: '25',\n name: '孙江',\n dep: '运输装卸',\n online: true,\n position: [-175.80000000, 0.62500079, 8.90000000],\n },\n {\n id: '27',\n name: '王衣衣',\n dep: '运输装卸',\n online: true,\n position: [-394.60000000, 0.62500079, -37.80000000],\n },\n {\n id: '28',\n name: '张含义',\n dep: '质量检测',\n online: true,\n position: [-436.90000000, 0.62500079, 69.40000000],\n },\n {\n id: '21',\n name: '张山一',\n dep: '生产技术',\n online: true,\n position: [-325.30000000, 0.62500079, 86.20000000],\n },\n {\n id: '23',\n name: '张时柳',\n dep: '运输装卸',\n online: true,\n position: [-211.20000000, 0.62500079, 95.80000000],\n },\n ],\n camera: {\n id: '4',\n name: '摄像头4',\n position: [\n -322.57300372,\n 22.55,\n 31.81516361,\n ],\n },\n },\n hydrocrackingUnit: {\n id: '5',\n title: '加氢裂化装置区',\n area: [\n [-483.562, 0, 124.634],\n [-145.997, 0, 124.634],\n [-145.997, 0, 218.589],\n [\n -483.562, 0, 218.589,\n ],\n ],\n maxHigh: 1000,\n poi: {\n id: '5',\n position: [-307.04992341, 0.55000000, 168.90578924],\n content: '该区域主要注意器材的腐蚀,腐蚀类型主要有:氢损伤(包括高温氢腐蚀、氢脆、氢致剥离)、高温H2+H2S腐蚀、连多硫酸腐蚀、Cr-Mo钢的回火脆性、高温S腐蚀、低温部位的H2S+H2O腐蚀、H2S+NH3+H2O腐蚀。',\n },\n people: [\n {\n id: '30',\n name: '李梦雅',\n dep: '生产技术',\n online: true,\n position: [-219.29636564, 0.62500079, 171.94423797],\n },\n {\n id: '31',\n name: '张连营',\n dep: '运输装卸',\n online: true,\n position: [-393.97653099, 0.62500079, 145.08266863],\n },\n {\n id: '32',\n name: '张子成',\n dep: '运输装卸',\n online: true,\n position: [-454.81735573, 0.62500079, 198.95572783],\n },\n ],\n camera: {\n id: '5',\n name: '摄像头5',\n position: [\n -307.04992341,\n 20.55,\n 168.90578924,\n ],\n },\n },\n cokingUnit: {\n id: '6',\n title: '焦化装置区',\n area: [\n [-140.100, 0, -49.802],\n [316.508, 0, -49.802],\n [316.508, 0, 218.847],\n [-140.100, 0, 218.847],\n ],\n maxHigh: 300,\n poi: {\n id: '6',\n position: [76.84192138, 0.55000332, 95.89826158],\n content: '该区域采用的延迟焦化装置是厂区能耗大户,其中,其燃料油、循环水两者的能耗占整个装置能耗的54%左右,其中,燃料气主要用于原料的加热、升温;循环水、新鲜水、软化水主要用于装置机泵降温、焦炭塔冷却等等。',\n },\n people: [\n {\n id: '38',\n name: '毕贵元',\n dep: '工艺操作',\n online: true,\n position: [247.30000000, 0.62500079, 166.20000000],\n },\n {\n id: '39',\n name: '何晴',\n dep: '设备运维',\n online: true,\n position: [-83.70000000, 0.62500079, 177.50000000],\n },\n {\n id: '33',\n name: '杨东利',\n dep: '工艺操作',\n online: true,\n position: [68.20000000, 0.62500079, 5.20000000],\n },\n {\n id: '36',\n name: '杨晓月',\n dep: '质量检测',\n online: true,\n position: [258.00000000, 0.62500079, 99.00000000],\n },\n {\n id: '40',\n name: '杨一真',\n dep: '质量检测',\n online: true,\n position: [107.90000000, 0.62500079, 95.30000000],\n },\n {\n id: '37',\n name: '张飞',\n dep: '运输装卸',\n online: true,\n position: [-69.60000000, 0.62500079, 29.30000000],\n },\n {\n id: '35',\n name: '张一天',\n dep: '运输装卸',\n online: true,\n position: [271.20000000, 0.62500079, 24.70000000],\n },\n {\n id: '34',\n name: '张泽宇',\n dep: '设备运维',\n online: true,\n position: [175.00000000, 0.62500079, 74.60000000],\n },\n ],\n camera: {\n id: '6',\n name: '摄像头6',\n position: [76.84192138, 20.55000332, 95.89826158],\n },\n probePoint: [\n {\n id: '1',\n name: '监测点异常1',\n warn: true,\n position: [\n 55.84192138, 20.55000332, 85.89826158,\n ],\n },\n ],\n },\n administrative: {\n id: '7',\n title: '办公区',\n area: [\n [340.501, 0, -44.710],\n [482.570, 0, -44.710],\n [482.570, 0, 227.641],\n [340.501, 0, 227.641],\n ],\n maxHigh: 1000,\n people: [{\n id: '49',\n name: '毕古元',\n dep: '运输装卸',\n online: true,\n position: [431.60000000, 0.62500079, 94.90000000],\n },\n {\n id: '50',\n name: '陈红',\n dep: '设备运维',\n online: true,\n position: [374.20000000, 0.62500079, 14.80000000],\n },\n {\n id: '58',\n name: '陈静娴',\n dep: '质量检测',\n online: true,\n position: [352.40000000, 0.62500079, 138.30000000],\n },\n {\n id: '54',\n name: '高红雷',\n dep: '运输装卸',\n online: true,\n position: [435.20000000, 0.62500079, 172.90000000],\n },\n {\n id: '57',\n name: '葛强',\n dep: '设备运维',\n online: true,\n position: [379.10000000, 0.62500079, 193.40000000],\n },\n {\n id: '46',\n name: '宫京',\n dep: '运输装卸',\n online: true,\n position: [441.30000000, 0.62500079, 80.70000000],\n },\n {\n id: '53',\n name: '匡青一',\n dep: '运输装卸',\n online: true,\n position: [379.10000000, 0.62500079, 173.80000000],\n },\n {\n id: '55',\n name: '李丽颖',\n dep: '质量检测',\n online: true,\n position: [357.50000000, 0.62500079, 221.40000000],\n },\n {\n id: '48',\n name: '李同一',\n dep: '工艺操作',\n online: true,\n position: [467.80000000, 0.62500079, 108.10000000],\n },\n {\n id: '56',\n name: '李晓阳',\n dep: '运输装卸',\n online: true,\n position: [444.20000000, 0.62500079, 191.80000000],\n },\n {\n id: '41',\n name: '刘超',\n dep: '运输装卸',\n online: true,\n position: [354.20000000, 0.62500079, -22.70000000],\n },\n {\n id: '42',\n name: '刘凤林',\n dep: '工艺操作',\n online: true,\n position: [368.50000000, 0.62500079, 40.30000000],\n },\n {\n id: '44',\n name: '卢灵',\n dep: '运输装卸',\n online: true,\n position: [368.00000000, 0.62500079, 79.90000000],\n },\n {\n id: '45',\n name: '苏丁',\n dep: '质量检测',\n online: true,\n position: [440.30000000, 0.62500079, 72.90000000],\n },\n {\n id: '50',\n name: '王林缘',\n dep: '工艺操作',\n online: true,\n position: [360.40000000, 0.62500079, 103.20000000],\n },\n {\n id: '51',\n name: '汪泉',\n dep: '运输装卸',\n online: true,\n position: [394.30000000, 0.62500079, 142.00000000],\n },\n {\n id: '43',\n name: '徐刚',\n dep: '运输装卸',\n online: true,\n position: [442.70000000, 0.62500079, -19.0000000],\n },\n {\n id: '52',\n name: '薛友',\n dep: '质量检测',\n online: true,\n position: [444.40000000, 0.62500079, 147.80000000],\n },\n {\n id: '60',\n name: '章虎泉',\n dep: '工艺操作',\n online: true,\n position: [467.80000000, 0.62500079, 21.90000000],\n },\n {\n id: '47',\n name: '张山峰',\n dep: '设备运维',\n online: true,\n position: [459.90000000, 0.62500079, 90.10000000],\n },\n ],\n poi: {\n id: '7',\n position: [404.24348058, 0.55000000, 85.00566808],\n content: '提供对工厂办公人员的休息和休闲区域,包括食堂,休息室,员工宿舍,休闲楼等场地,提供对工厂办公人员的休息和休闲区域,包括食堂,休息室,员工宿舍,休闲楼等场地,且该区域需较远离生产区,保证员工休息质量。',\n },\n camera: {\n id: '7',\n name: '摄像头7',\n position: [\n 404.24348058,\n 20.55,\n 85.00566808,\n ],\n },\n probePoint: [\n {\n id: '2',\n name: '甲烷监测点2',\n warn: false,\n position: [\n 384.24348058,\n 20.55,\n 75.00566808,\n ],\n },\n ],\n },\n}\n\nexport default regionMap"],"mappings":"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"}
1
+ {"version":3,"names":["regionMap","reform","id","title","area","poi","position","content","people","name","dep","online","camera","reduction","probePoint","warn","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative"],"sources":["../../src/factory/regionData.ts"],"sourcesContent":["/**\n * todo: 各个单元数据需要统一\n * 当前demo area可以用直线绘制\n */\n\nexport interface IPeople {\n id: string\n name: string\n dep?: string\n online?: boolean\n position: Array<number>\n}\n\nexport interface IPoi {\n id: string\n position: Array<number>\n content?: string\n}\n\nexport interface IProbePoint {\n id: string\n name: string\n warn: boolean\n position: Array<number>\n}\n\nexport type RegionMap = {\n [k: string]: {\n id: string\n title: string\n area: number[][]\n maxHigh?: number\n poi?: IPoi\n people?: Array<IPeople>\n camera?: Object\n probePoint?: Array<IProbePoint>\n }\n}\n\nexport const regionMap: RegionMap = {\n reform: {\n id: '1',\n title: '重整装置区',\n area: [\n [\n -483.562,\n 0,\n -225.624,\n ],\n [\n -145.997,\n 0,\n -225.624,\n ],\n [\n -145.997,\n 0,\n -59.401,\n ],\n [\n -483.562,\n 0,\n -59.401,\n ],\n ],\n\n poi: {\n id: '1',\n position: [-314.01113070, 0.55000000, -146.54350582],\n content: '通过直馏汽油和加氢石脑油,在催化剂存在的前提下,将原料的烷烃和环烷烃重构成为芳烃。并采用半再生固定床重整工艺,催化剂分段装填及两段混氢技术,装置采用了RIPP的粗汽油制氢技术。',\n },\n people: [\n {\n id: '7',\n name: '耿笑',\n dep: '设备运维',\n online: true,\n position: [-352.00000000, 0.62500079, -177.20000000],\n },\n {\n id: '2',\n name: '李连贵',\n dep: '工艺操作',\n online: true,\n position: [-275.70000000, 0.62500079, -137.10000000],\n },\n {\n id: '8',\n name: '吕萌',\n dep: '质量检测',\n online: true,\n position: [-365.40000000, 0.62500079, -80.60000000],\n },\n {\n id: '1',\n name: '宋玉',\n dep: '质量检测',\n online: true,\n position: [-436.90000000, 0.62500079, -121.50000000],\n },\n {\n id: '5',\n name: '王小雨',\n dep: '运输装卸',\n online: true,\n position: [-238.70000000, 0.62500079, -205.10000000],\n },\n {\n id: '6',\n name: '张建国',\n dep: '原料加工',\n online: true,\n position: [-436.50000000, 0.62500079, -182.30000000],\n },\n {\n id: '3',\n name: '张小萌',\n dep: '生产技术',\n online: true,\n position: [-204.80000000, 0.62500079, -150.10000000],\n },\n {\n id: '4',\n name: '朱正',\n dep: '设备运维',\n online: true,\n position: [-302.20000000, 0.62500079, -117.90000000],\n },\n ],\n camera: {\n id: '1',\n name: '摄像头1',\n position: [\n -314.0111307,\n 20.55,\n -146.54350582,\n ],\n },\n },\n reduction: {\n id: '2',\n title: '常减压装置区',\n area: [\n [-140.123, 0.1, -225.604],\n [206.547, 0, -225.624],\n [206.547, -0.1, -59.401],\n [-140.123, 0, -59.401],\n ],\n\n poi: {\n id: '2',\n position: [28.89784048, 0.55000000, -144.28157517],\n content: '主要包括三个工序:原油的脱盐、脱水;常压蒸馏;减压蒸馏。从油田送往炼油厂的原油往往含盐(主要是氧化物)带水(溶于油或呈乳化状态),可导致设备的腐蚀,在设备内壁结垢和影响成品油的组成,需在加工前脱除。',\n },\n people: [\n {\n id: '12',\n name: '才新梁',\n dep: '运输装卸',\n online: true,\n position: [26.50000000, 0.62500079, -155.00000000],\n },\n {\n id: '13',\n name: '何超盈',\n dep: '生产技术',\n online: true,\n position: [198.50000000, 0.62500079, -169.20000000],\n },\n {\n id: '11',\n name: '李大为',\n dep: '质量检测',\n online: true,\n position: [-79.80000000, 0.62500079, -218.20000000],\n },\n {\n id: '15',\n name: '孙建连',\n dep: '工艺操作',\n online: true,\n position: [-19.50000000, 0.62500079, -174.60000000],\n },\n {\n id: '9',\n name: '孙强',\n dep: '工艺操作',\n online: true,\n position: [-114.10000000, 0.62500079, -114.60000000],\n },\n {\n id: '10',\n name: '佟丽英',\n dep: '运输装卸',\n online: true,\n position: [26.10000000, 0.62500079, -202.30000000],\n },\n {\n id: '14',\n name: '王超',\n dep: '设备运维',\n online: true,\n position: [-14.90000000, 0.62500079, -116.90000000],\n },\n ],\n camera: {\n id: '2',\n name: '摄像头2',\n position: [\n 28.89784048,\n 20.55,\n -144.28157517,\n ],\n },\n probePoint: [\n {\n id: '3',\n name: '甲烷监测点3',\n warn: false,\n position: [\n 48.89784048,\n 30.55000000,\n -144.28157517,\n ],\n },\n ],\n },\n crudeOil: {\n id: '3',\n title: '原油罐区',\n area: [\n [240.584, 0, -225.624],\n [475.523, 0, -225.624],\n [475.543, 0, -59.401],\n [240.584, 0, -59.401],\n ],\n\n poi: {\n id: '3',\n position: [359.58372139, 0.55000000, -144.28157517],\n content: '原油罐区应靠近相应的加工装置区,并利用地形将液体物料自留输送,性质相近的液体物料储物罐宜布置较近。原油罐区的占地面积较大,原油罐区应注意火灾防范,存储量大一旦发生火灾,如不及时处置,扑救十分困难。',\n },\n people: [\n {\n id: '19',\n name: '牛小灵',\n dep: '生产技术',\n online: true,\n position: [404.70000000, 0.62500079, -190.30000000],\n },\n {\n id: '17',\n name: '彭旭',\n dep: '运输装卸',\n online: true,\n position: [294.10000000, 0.62500079, -125.90000000],\n },\n {\n id: '16',\n name: '宋麒麟',\n dep: '设备运维',\n online: true,\n position: [445.70000000, 0.62500079, -119.20000000],\n },\n {\n id: '18',\n name: '赵佳慧',\n dep: '生产技术',\n online: true,\n position: [344.50000000, 0.62500079, -127.10000000],\n },\n ],\n camera: {\n id: '3',\n name: '摄像头3',\n position: [\n 359.58372139,\n 20.55,\n -144.28157517,\n ],\n },\n },\n catalyticCracking: {\n id: '4',\n title: '催化裂化装置区',\n area: [\n [\n -483.562,\n 0,\n -49.812,\n ],\n [\n -145.997,\n 0,\n -49.812,\n ],\n [\n -145.997,\n 0,\n 115.799,\n ],\n [\n -483.562,\n 0,\n 115.799,\n ],\n ],\n\n poi: {\n id: '4',\n position: [-322.57300372, 0.55000000, 31.81516361],\n content: '该区域主要危险因素为高温,重点部位:1. 催化剂循环系统磨穿泄漏着火;2. 再生器及沉降器油气互串爆炸;3. 高位管线及设备泄漏着火。同时催化裂化工艺过程需注意对环境造成的影响,生产过程中烟气会带走较多热烈造成热能浪费和污染,',\n },\n people: [\n {\n id: '20',\n name: '李刚',\n dep: '运输装卸',\n online: true,\n position: [-339.40000000, 0.62500079, -1.90000000],\n },\n {\n id: '24',\n name: '李天一',\n dep: '工艺操作',\n online: true,\n position: [-394.80000000, 0.62500079, 16.80000000],\n },\n {\n id: '26',\n name: '吕方',\n dep: '设备运维',\n online: true,\n position: [-363.10000000, 0.62500079, 73.30000000],\n },\n {\n id: '29',\n name: '路笑',\n dep: '运输装卸',\n online: true,\n position: [-214.00000000, 0.62500079, 39.10000000],\n },\n {\n id: '22',\n name: '淼杉',\n dep: '运输装卸',\n online: true,\n position: [-175.10000000, 0.62500079, -12.80000000],\n },\n {\n id: '25',\n name: '孙江',\n dep: '运输装卸',\n online: true,\n position: [-175.80000000, 0.62500079, 8.90000000],\n },\n {\n id: '27',\n name: '王衣衣',\n dep: '运输装卸',\n online: true,\n position: [-394.60000000, 0.62500079, -37.80000000],\n },\n {\n id: '28',\n name: '张含义',\n dep: '质量检测',\n online: true,\n position: [-436.90000000, 0.62500079, 69.40000000],\n },\n {\n id: '21',\n name: '张山一',\n dep: '生产技术',\n online: true,\n position: [-325.30000000, 0.62500079, 86.20000000],\n },\n {\n id: '23',\n name: '张时柳',\n dep: '运输装卸',\n online: true,\n position: [-211.20000000, 0.62500079, 95.80000000],\n },\n ],\n camera: {\n id: '4',\n name: '摄像头4',\n position: [\n -322.57300372,\n 22.55,\n 31.81516361,\n ],\n },\n },\n hydrocrackingUnit: {\n id: '5',\n title: '加氢裂化装置区',\n area: [\n [-483.562, 0, 124.634],\n [-145.997, 0, 124.634],\n [-145.997, 0, 218.589],\n [\n -483.562, 0, 218.589,\n ],\n ],\n\n poi: {\n id: '5',\n position: [-307.04992341, 0.55000000, 168.90578924],\n content: '该区域主要注意器材的腐蚀,腐蚀类型主要有:氢损伤(包括高温氢腐蚀、氢脆、氢致剥离)、高温H2+H2S腐蚀、连多硫酸腐蚀、Cr-Mo钢的回火脆性、高温S腐蚀、低温部位的H2S+H2O腐蚀、H2S+NH3+H2O腐蚀。',\n },\n people: [\n {\n id: '30',\n name: '李梦雅',\n dep: '生产技术',\n online: true,\n position: [-219.29636564, 0.62500079, 171.94423797],\n },\n {\n id: '31',\n name: '张连营',\n dep: '运输装卸',\n online: true,\n position: [-393.97653099, 0.62500079, 145.08266863],\n },\n {\n id: '32',\n name: '张子成',\n dep: '运输装卸',\n online: true,\n position: [-454.81735573, 0.62500079, 198.95572783],\n },\n ],\n camera: {\n id: '5',\n name: '摄像头5',\n position: [\n -307.04992341,\n 20.55,\n 168.90578924,\n ],\n },\n },\n cokingUnit: {\n id: '6',\n title: '焦化装置区',\n area: [\n [-140.100, 0, -49.802],\n [316.508, 0, -49.802],\n [316.508, 0, 218.847],\n [-140.100, 0, 218.847],\n ],\n poi: {\n id: '6',\n position: [76.84192138, 0.55000332, 95.89826158],\n content: '该区域采用的延迟焦化装置是厂区能耗大户,其中,其燃料油、循环水两者的能耗占整个装置能耗的54%左右,其中,燃料气主要用于原料的加热、升温;循环水、新鲜水、软化水主要用于装置机泵降温、焦炭塔冷却等等。',\n },\n people: [\n {\n id: '38',\n name: '毕贵元',\n dep: '工艺操作',\n online: true,\n position: [247.30000000, 0.62500079, 166.20000000],\n },\n {\n id: '39',\n name: '何晴',\n dep: '设备运维',\n online: true,\n position: [-83.70000000, 0.62500079, 177.50000000],\n },\n {\n id: '33',\n name: '杨东利',\n dep: '工艺操作',\n online: true,\n position: [68.20000000, 0.62500079, 5.20000000],\n },\n {\n id: '36',\n name: '杨晓月',\n dep: '质量检测',\n online: true,\n position: [258.00000000, 0.62500079, 99.00000000],\n },\n {\n id: '40',\n name: '杨一真',\n dep: '质量检测',\n online: true,\n position: [107.90000000, 0.62500079, 95.30000000],\n },\n {\n id: '37',\n name: '张飞',\n dep: '运输装卸',\n online: true,\n position: [-69.60000000, 0.62500079, 29.30000000],\n },\n {\n id: '35',\n name: '张一天',\n dep: '运输装卸',\n online: true,\n position: [271.20000000, 0.62500079, 24.70000000],\n },\n {\n id: '34',\n name: '张泽宇',\n dep: '设备运维',\n online: true,\n position: [175.00000000, 0.62500079, 74.60000000],\n },\n ],\n camera: {\n id: '6',\n name: '摄像头6',\n position: [76.84192138, 20.55000332, 95.89826158],\n },\n probePoint: [\n {\n id: '1',\n name: '监测点异常1',\n warn: true,\n position: [\n 55.84192138, 20.55000332, 85.89826158,\n ],\n },\n ],\n },\n administrative: {\n id: '7',\n title: '办公区',\n area: [\n [340.501, 0, -44.710],\n [482.570, 0, -44.710],\n [482.570, 0, 227.641],\n [340.501, 0, 227.641],\n ],\n\n people: [{\n id: '49',\n name: '毕古元',\n dep: '运输装卸',\n online: true,\n position: [431.60000000, 0.62500079, 94.90000000],\n },\n {\n id: '50',\n name: '陈红',\n dep: '设备运维',\n online: true,\n position: [374.20000000, 0.62500079, 14.80000000],\n },\n {\n id: '58',\n name: '陈静娴',\n dep: '质量检测',\n online: true,\n position: [352.40000000, 0.62500079, 138.30000000],\n },\n {\n id: '54',\n name: '高红雷',\n dep: '运输装卸',\n online: true,\n position: [435.20000000, 0.62500079, 172.90000000],\n },\n {\n id: '57',\n name: '葛强',\n dep: '设备运维',\n online: true,\n position: [379.10000000, 0.62500079, 193.40000000],\n },\n {\n id: '46',\n name: '宫京',\n dep: '运输装卸',\n online: true,\n position: [441.30000000, 0.62500079, 80.70000000],\n },\n {\n id: '53',\n name: '匡青一',\n dep: '运输装卸',\n online: true,\n position: [379.10000000, 0.62500079, 173.80000000],\n },\n {\n id: '55',\n name: '李丽颖',\n dep: '质量检测',\n online: true,\n position: [357.50000000, 0.62500079, 221.40000000],\n },\n {\n id: '48',\n name: '李同一',\n dep: '工艺操作',\n online: true,\n position: [467.80000000, 0.62500079, 108.10000000],\n },\n {\n id: '56',\n name: '李晓阳',\n dep: '运输装卸',\n online: true,\n position: [444.20000000, 0.62500079, 191.80000000],\n },\n {\n id: '41',\n name: '刘超',\n dep: '运输装卸',\n online: true,\n position: [354.20000000, 0.62500079, -22.70000000],\n },\n {\n id: '42',\n name: '刘凤林',\n dep: '工艺操作',\n online: true,\n position: [368.50000000, 0.62500079, 40.30000000],\n },\n {\n id: '44',\n name: '卢灵',\n dep: '运输装卸',\n online: true,\n position: [368.00000000, 0.62500079, 79.90000000],\n },\n {\n id: '45',\n name: '苏丁',\n dep: '质量检测',\n online: true,\n position: [440.30000000, 0.62500079, 72.90000000],\n },\n {\n id: '50',\n name: '王林缘',\n dep: '工艺操作',\n online: true,\n position: [360.40000000, 0.62500079, 103.20000000],\n },\n {\n id: '51',\n name: '汪泉',\n dep: '运输装卸',\n online: true,\n position: [394.30000000, 0.62500079, 142.00000000],\n },\n {\n id: '43',\n name: '徐刚',\n dep: '运输装卸',\n online: true,\n position: [442.70000000, 0.62500079, -19.0000000],\n },\n {\n id: '52',\n name: '薛友',\n dep: '质量检测',\n online: true,\n position: [444.40000000, 0.62500079, 147.80000000],\n },\n {\n id: '60',\n name: '章虎泉',\n dep: '工艺操作',\n online: true,\n position: [467.80000000, 0.62500079, 21.90000000],\n },\n {\n id: '47',\n name: '张山峰',\n dep: '设备运维',\n online: true,\n position: [459.90000000, 0.62500079, 90.10000000],\n },\n ],\n poi: {\n id: '7',\n position: [404.24348058, 0.55000000, 85.00566808],\n content: '提供对工厂办公人员的休息和休闲区域,包括食堂,休息室,员工宿舍,休闲楼等场地,提供对工厂办公人员的休息和休闲区域,包括食堂,休息室,员工宿舍,休闲楼等场地,且该区域需较远离生产区,保证员工休息质量。',\n },\n camera: {\n id: '7',\n name: '摄像头7',\n position: [\n 404.24348058,\n 20.55,\n 85.00566808,\n ],\n },\n probePoint: [\n {\n id: '2',\n name: '甲烷监测点2',\n warn: false,\n position: [\n 384.24348058,\n 20.55,\n 75.00566808,\n ],\n },\n ],\n },\n}\n\nexport default regionMap"],"mappings":"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"}
@@ -13,7 +13,7 @@ declare class CameraPoi {
13
13
  cameraLookAt: Vector3;
14
14
  constructor(gobal: Factory3D);
15
15
  generateObject(): Promise<void>;
16
- cameraEvent(sprite: Group, region: any): void;
16
+ cameraEvent(sprite: SpritePoi, region: any): void;
17
17
  probeEvent(sprite: SpritePoi, region: any): void;
18
18
  closeHotmap(): void;
19
19
  togglePoi(visible?: boolean): void;
@@ -62,20 +62,20 @@ var CameraPoi = /*#__PURE__*/function () {
62
62
  group = new Group();
63
63
  group.name = region.camera.id;
64
64
  sprite = new SpritePoi("".concat(usePath, "camera.png"), {
65
- scale: [10, 10, 1]
65
+ scale: [14, 14, 1]
66
66
  });
67
67
  sprite.rotation.y = Math.PI;
68
68
  position = new Vector3().fromArray(region.camera.position);
69
69
  sprite.position.copy(position);
70
70
  group.add(sprite);
71
71
  scan = model.scene.clone();
72
- scan.scale.addScalar(5);
72
+ scan.scale.addScalar(8);
73
73
  scan.rotation.x = -Math.PI / 2 + 0.5;
74
74
  scan.position.copy(position.clone().add(new Vector3(0, -2, 0)));
75
75
  group.add(scan);
76
76
  _this.cameraMesh.set(region.title, group);
77
- _this.gobal.interactionManager.add(group);
78
- _this.cameraEvent(group, region);
77
+ _this.gobal.interactionManager.add(sprite);
78
+ _this.cameraEvent(sprite, region);
79
79
  _this.gobal.scene.add(group);
80
80
 
81
81
  // 甲烷检测点
@@ -84,7 +84,7 @@ var CameraPoi = /*#__PURE__*/function () {
84
84
  var mesh;
85
85
  if (item.warn) {
86
86
  mesh = new SpritePoi("".concat(usePath, "p4/warn.png"), {
87
- scale: [10, 10, 1]
87
+ scale: [16, 16, 1]
88
88
  });
89
89
  _this.gobal.interactionManager.add(mesh);
90
90
  _this.probeEvent(mesh, region);
@@ -175,7 +175,7 @@ var CameraPoi = /*#__PURE__*/function () {
175
175
  target: targetPosition
176
176
  });
177
177
  _context3.next = 10;
178
- return _this2.dialogManage.getMesh(position, position.clone().add(new Vector3(0, -15, 5)));
178
+ return _this2.dialogManage.getMesh(position, position.clone().add(new Vector3(0, -20, 5)));
179
179
  case 10:
180
180
  dialogMesh = _context3.sent;
181
181
  _this2.dialogManage.addEventListener('close', function () {
@@ -195,7 +195,7 @@ var CameraPoi = /*#__PURE__*/function () {
195
195
  }
196
196
  }, _callee3);
197
197
  })));
198
- // this.eventListener.add(unClick)
198
+ this.eventListener.add(unClick);
199
199
  }
200
200
  }, {
201
201
  key: "probeEvent",
@@ -461,10 +461,12 @@ var Dialog = /*#__PURE__*/function () {
461
461
  w = dom.clientWidth;
462
462
  h = dom.clientHeight;
463
463
  }
464
+ var ratio = 0;
465
+ if (camera.fov >= 60) ratio = -0.05 * (camera.fov - 60) / 30;else ratio = 0.02 * (60 - camera.fov) / 30;
464
466
 
465
467
  // 计算精灵在屏幕中的宽度和高度像素值
466
- var width = (max.x - min.x) * w / devicePixelRatio * 0.97;
467
- var height = (max.y - min.y) * h / devicePixelRatio * 1.089;
468
+ var width = (max.x - min.x) * w / devicePixelRatio * (0.97 + ratio);
469
+ var height = (max.y - min.y) * h / devicePixelRatio * (1.089 + ratio);
468
470
  var scaleFactor = devicePixelRatio * 0.5;
469
471
  // 应用缩放系数
470
472
  width *= scaleFactor;
@@ -479,6 +481,7 @@ var Dialog = /*#__PURE__*/function () {
479
481
  value: function updateScale(sprite) {
480
482
  var _use$useScene4 = use.useScene(),
481
483
  camera = _use$useScene4.camera;
484
+ var ratio = 60 / camera.fov;
482
485
  // 距离限制范围的值,用于计算缩放比例
483
486
  var minDistance = 0.1;
484
487
  var maxDistance = 1000000;
@@ -493,7 +496,7 @@ var Dialog = /*#__PURE__*/function () {
493
496
  var clampedDistance = Math.max(minDistance, Math.min(maxDistance, distance));
494
497
  // console.log('clampedDistance:',clampedDistance)
495
498
  // 按照缩放系数和距离进行缩放,缩放系数应该约定好一个固定值
496
- sprite.scale.copy(new Vector3(clampedDistance * 1.3281, 0.8316 * clampedDistance, 1));
499
+ sprite.scale.copy(new Vector3(clampedDistance * (1.3281 / ratio), 0.8316 / ratio * clampedDistance, 1));
497
500
  }
498
501
  }, {
499
502
  key: "addEventListener",
@@ -628,7 +631,6 @@ var Dialog = /*#__PURE__*/function () {
628
631
  value: function close() {
629
632
  if (this.cuteSprites) {
630
633
  this.cuteSprites.forEach(function (mesh) {
631
- console.log('mesh:', mesh);
632
634
  mesh.remove();
633
635
  mesh.removeFromParent();
634
636
  });
@@ -1 +1 @@
1
- {"version":3,"names":["AdditiveBlending","Box3","CircleGeometry","Color","DoubleSide","Group","MathUtils","Matrix4","Mesh","MeshBasicMaterial","ModelLoader","PerspectiveCamera","PlaneGeometry","ShaderMaterial","Sprite","SpriteMaterial","Texture","TextureLoader","Vector3","gsap","use","Css2DPoi","SpritePoi","heatMap","MessageType","sendToMessage","EMessageStatus","loadingManager","usePath","regionMap","load","CameraPoi","gobal","Map","Set","dialogManage","Dialog","addStyle","loadGLTF","gltf","model","Object","keys","forEach","key","region","group","name","camera","id","sprite","scale","rotation","y","Math","PI","position","fromArray","copy","add","scan","scene","clone","addScalar","x","cameraMesh","set","title","interactionManager","cameraEvent","point","MethanePoint","probePoint","item","mesh","warn","probeEvent","to","duration","ease","yoyo","repeat","create","warnMesh","rotatingRight","unFrame","useframe","children","z","abs","eventListener","useScene","unClick","addEventListener","Event","Success","undefined","targetPosition","toArray","camaraPosition","startPosition","cameraLookAt","getWorldDirection","cameraUtil","target","getMesh","dialogMesh","visible","togglePoi","then","headMap","HeadMap","distanceTo","closeHotmap","remove","removeFromParent","clear","fn","close","geometry","texture","circle","map","side","transparent","rotateX","material","vertexShader","fragmentShader","blending","depthTest","color","numPoints","i","random","cameraManage","manage","cameraPosition","window","innerWidth","innerHeight","setCustomPerspective","cuteSprite","depthWrite","center","renderOrder","updateScale","Promise","reslove","setTimeout","borderMesh","getBorderMesh","cuteSprites","push","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","width","height","scaleFactor","minDistance","maxDistance","objectPosition","distance","clampedDistance","eventName","eventList","has","getBoxSize","dialogDiv","createElement","assign","style","maskingDiv","className","appendChild","closeSpan","get","hLine","vLine","op","opList","btnSpan","sliderDiv","sliderBar","type","value","fov","updateProjectionMatrix","css","styleElement","createTextNode","head","console","log","length","heatmap","container","createDom","gradient","TemperatureColorStops","len","points","val","floor","setData","data","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, 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\n// @ts-ignore\nimport { regionMap } from '../regionData'\n\nconst load = new ModelLoader()\nclass CameraPoi {\n gobal: Factory3D\n cameraMesh: Map<string, Group> = new Map()\n warnMesh: Map<string, SpritePoi> = new Map()\n headMap: HeadMap\n dialogManage: Dialog\n eventListener: Set<Function> = new Set()\n\n startPosition: Vector3\n cameraLookAt: Vector3\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.dialogManage = new Dialog(this)\n this.dialogManage.addStyle()\n }\n\n async generateObject() {\n const model = await load.loadGLTF(`${usePath}shexiang.glb`, false, true, './draco/', (gltf) => {\n return gltf\n })\n\n Object.keys(regionMap).forEach(async (key: string) => {\n // 摄像机\n const region = regionMap[key]\n const group = new Group()\n group.name = region.camera.id\n const sprite = new SpritePoi(`${usePath}camera.png`, { scale: [10, 10, 1] })\n sprite.rotation.y = Math.PI\n const position = new Vector3().fromArray(region.camera.position)\n sprite.position.copy(position)\n group.add(sprite)\n\n const scan = model.scene.clone()\n scan.scale.addScalar(5)\n scan.rotation.x = (-Math.PI / 2) + 0.5\n scan.position.copy(position.clone().add(new Vector3(0, -2, 0)))\n group.add(scan)\n\n this.cameraMesh.set(region.title, group)\n this.gobal.interactionManager.add(group)\n this.cameraEvent(group, region)\n this.gobal.scene.add(group)\n\n // 甲烷检测点\n const point = new MethanePoint()\n region.probePoint?.forEach((item) => {\n let mesh\n if (item.warn) {\n mesh = new SpritePoi(`${usePath}p4/warn.png`, { scale: [10, 10, 1] })\n this.gobal.interactionManager.add(mesh)\n this.probeEvent(mesh, region)\n // 使用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(region.title, mesh)\n\n this.gobal.scene.add(mesh)\n })\n })\n // 设置左右旋转的标志位和旋转速度\n let rotatingRight = true // 是否正在向右转动\n\n const unFrame = use.useframe(() => {\n this.cameraMesh.forEach((group) => {\n const scan = group.children[1]\n // 更新相机的旋转角度\n if (rotatingRight) {\n // 向右旋转\n scan.rotation.z += 0.005\n }\n else {\n // 向左旋转\n scan.rotation.z -= 0.005\n }\n\n // 检查是否达到目标旋转角度\n if (Math.abs(scan.rotation.z) >= Math.abs(Math.PI / 4)) {\n // 到达目标角度,切换旋转方向并更新目标角度\n rotatingRight = !rotatingRight\n }\n })\n })\n this.eventListener.add(unFrame)\n }\n\n cameraEvent(sprite: Group, region: any) {\n const { camera } = use.useScene()\n const unClick = sprite.addEventListener('click', async () => {\n sendToMessage(MessageType.Event, 'onCameraStatus', EMessageStatus.Success, undefined, { id: region.camera.id })\n\n const position = new Vector3().fromArray(region.camera.position)\n const targetPosition: [number, number, number] = position.clone().toArray()\n const camaraPosition: [number, number, number] = position.clone().add(new Vector3(0, 40, 80)).toArray()\n\n const startPosition = camera.position.clone()\n // 获取相机朝向\n const cameraLookAt = new Vector3() // 创建一个向量来存储相机朝向\n camera.getWorldDirection(cameraLookAt) // 获取相机朝向并存储在向量中\n this.gobal.cameraUtil.set({\n position: camaraPosition,\n target: targetPosition,\n })\n\n const dialogMesh = await this.dialogManage.getMesh(position, position.clone().add(new Vector3(0, -15, 5)))\n this.dialogManage.addEventListener('close', () => {\n // 初始相机到原始位置\n this.gobal.cameraUtil.set({\n position: startPosition.toArray(),\n target: cameraLookAt.toArray(),\n })\n sendToMessage(MessageType.Event, 'onCancelCameraStatus', EMessageStatus.Success, undefined, { id: region.camera.id })\n })\n this.gobal.scene.add(dialogMesh)\n })\n // this.eventListener.add(unClick)\n }\n\n probeEvent(sprite: SpritePoi, region) {\n const { camera } = use.useScene()\n sprite.addEventListener('click', async () => {\n if (!sprite.visible)\n return\n sprite.visible = false\n sendToMessage(MessageType.Event, 'onGasMonitorStatus', EMessageStatus.Success, undefined, { id: region.probePoint[0].id })\n this.togglePoi(false)\n const position = new Vector3().fromArray(region.probePoint[0].position)\n const camaraPosition = position.clone().add(new Vector3(0, 30, 0))\n\n this.startPosition = camera.position.clone()\n // 获取相机朝向\n this.cameraLookAt = new Vector3() // 创建一个向量来存储相机朝向\n camera.getWorldDirection(this.cameraLookAt) // 获取相机朝向并存储在向量中\n this.gobal.cameraUtil.set({\n position: camaraPosition.toArray(),\n target: position.clone().toArray(),\n }).then(() => {\n this.headMap = new HeadMap()\n const mesh = this.headMap.create(camaraPosition.distanceTo(position))\n mesh.position.copy(sprite.position)\n mesh.position.y = 0.5\n this.gobal.scene.add(mesh)\n\n // this.headMap.addBack()\n this.headMap.addEventListener('close', () => {\n this.closeHotmap()\n // this.togglePoi(true)\n\n // this.gobal.cameraUtil.set({\n // position: this.startPosition.toArray(),\n // target: this.cameraLookAt.toArray(),\n // })\n })\n })\n })\n }\n\n closeHotmap() {\n this.headMap.remove()\n this.togglePoi(true)\n\n this.gobal.cameraUtil.set({\n position: this.startPosition.toArray(),\n target: this.cameraLookAt.toArray(),\n })\n }\n\n togglePoi(visible = true) {\n this.warnMesh.forEach((sprite) => {\n sprite.visible = visible\n })\n this.cameraMesh.forEach((sprite) => {\n sprite.visible = visible\n })\n }\n\n remove() {\n // 删除摄像机POI点\n this.cameraMesh.forEach((sprite) => {\n sprite.removeFromParent()\n sprite.remove()\n })\n this.cameraMesh.clear()\n this.warnMesh.forEach((sprite) => {\n sprite.removeFromParent()\n sprite.remove()\n })\n this.warnMesh.clear()\n this.eventListener.forEach((fn) => {\n fn()\n })\n // 热力图\n if (this.headMap)\n this.headMap.remove()\n this.eventListener.clear()\n\n this.dialogManage.close()\n }\n}\n\nexport default CameraPoi\n\nclass MethanePoint {\n constructor() {\n\n }\n\n create() {\n // 定义Shader的uniform变量\n\n const geometry = new PlaneGeometry(10, 10)\n const texture = new TextureLoader(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, cameraPosition) {\n this.close()\n this.camera = new PerspectiveCamera(\n 90, window.innerWidth / window.innerHeight, 0.1, 10000,\n )\n this.camera.position.copy(cameraPosition)\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\n // 计算精灵在屏幕中的宽度和高度像素值\n let width = (max.x - min.x) * w / devicePixelRatio * 0.97\n let height = (max.y - min.y) * h / devicePixelRatio * 1.089\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 // 距离限制范围的值,用于计算缩放比例\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, 0.8316 * 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.eventList.has('close') && this.eventList.get('close')()\n this.close()\n })\n const hLine = document.createElement('span')\n hLine.className = 'dialog-close-line dialog-close-h-line'\n closeSpan.appendChild(hLine)\n const vLine = document.createElement('span')\n vLine.className = 'dialog-close-line dialog-close-v-line'\n closeSpan.appendChild(vLine)\n dialogDiv.appendChild(closeSpan)\n\n // 操作按钮\n const op = document.createElement('div')\n op.className = 'dialog-operate'\n dialogDiv.appendChild(op)\n const opList = ['left', 'right', 'top', 'bottom']\n opList.forEach((key) => {\n const btnSpan = document.createElement('span')\n btnSpan.className = `dialog-operate-btn dialog-operate-${key}`\n btnSpan.addEventListener('click', () => {\n switch (key) {\n case 'top':\n camera.rotation.x -= 0.01\n break\n case 'bottom':\n camera.rotation.x += 0.01\n break\n case 'left':\n camera.rotation.y -= 0.01\n break\n case 'right':\n camera.rotation.y += 0.01\n break\n }\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(camera)\n sprite.material = new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false })\n setTimeout(() => close(), 800)\n })\n op.appendChild(btnSpan)\n })\n\n // 滑动条\n const sliderDiv = document.createElement('div')\n sliderDiv.className = 'dialog-slider-container'\n const sliderBar = document.createElement('input')\n sliderBar.type = 'range'\n sliderBar.min = '30'\n sliderBar.max = '120'\n sliderBar.value = '90'\n sliderBar.className = 'dialog-slider'\n sliderBar.addEventListener('input', () => {\n camera.fov = sliderBar.value\n camera.updateProjectionMatrix()\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(camera)\n sprite.material = new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false })\n setTimeout(() => close(), 800)\n })\n sliderDiv.appendChild(sliderBar)\n dialogDiv.appendChild(sliderDiv)\n\n 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: 20px;\n height: 20px;\n border-radius: 2px;\n color: #fff;\n background-color: #c8ab75;\n cursor: pointer; /* 鼠标指针样式 */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n right: 20px;\n top: 15px;\n pointer-events: auto;\n }\n\n .dialog-close:hover{\n background-color:#c8a158;\n }\n\n .dialog-close-line{\n width: 14px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n top: 9px;\n display: block;\n }\n\n .dialog-close-h-line{\n transform: rotate(-45deg);\n }\n\n .dialog-close-v-line{\n transform: rotate(45deg);\n }\n\n .dialog-operate{\n width: 120px;\n height: 120px;\n background-image: url(${usePath}p4/operate.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n position: absolute;\n right: 15px;\n bottom: 10px;\n pointer-events: auto;\n }\n\n .dialog-operate-btn{\n width: 0;\n height: 0;\n position: absolute;\n cursor: pointer;\n pointer-events: auto;\n }\n\n .dialog-operate-top{\n border-left: 8px solid transparent; /* 左边透明 */\n border-right: 8px solid transparent; /* 右边透明 */\n border-bottom: 8px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 9px);\n top: 20px;\n }\n .dialog-operate-top:hover{\n border-bottom-color:#fff2dd;\n }\n\n .dialog-operate-bottom{\n border-left: 8px solid transparent; /* 左边透明 */\n border-right: 8px solid transparent; /* 右边透明 */\n border-top: 8px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 9px);\n bottom: 20px;\n }\n\n .dialog-operate-bottom:hover{\n border-top-color:#fff2dd;\n }\n\n .dialog-operate-left{\n border-top: 8px solid transparent; /* 左边透明 */\n border-bottom: 8px solid transparent; /* 右边透明 */\n border-right: 8px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 9px);\n left: 20px;\n }\n .dialog-operate-left:hover{\n border-right-color:#fff2dd;\n }\n\n .dialog-operate-right{\n border-top: 8px solid transparent; /* 左边透明 */\n border-bottom: 8px solid transparent; /* 右边透明 */\n border-left: 8px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 9px);\n right: 20px;\n }\n\n .dialog-operate-right:hover{\n border-left-color:#fff2dd;\n }\n \n .dialog-slider-container {\n width: 13px;\n height: 350px;\n background: url(${usePath}p4/slider.png);\n background-size: 100% 100%;\n position:absolute;\n right:23px;\n top:50px;\n }\n\n .dialog-slider {\n -webkit-appearance: none;\n width: 300px;\n height: 13px;\n background: transparent;\n outline: none;\n opacity: 0.7;\n -webkit-transition: .2s;\n transition: opacity .2s;\n transform: rotate(-90deg);\n margin-left: -144px;\n margin-top: 144px;\n pointer-events: auto;\n }\n\n .dialog-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 7px;\n height: 20px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n\n .dialog-slider::-moz-range-thumb {\n width: 7px;\n height: 20px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n`\n // 创建一个 <style> 元素\n const styleElement = document.createElement('style')\n styleElement.appendChild(document.createTextNode(css))\n // 将 <style> 元素添加到 <head> 中\n document.head.appendChild(styleElement)\n }\n\n close() {\n if (this.cuteSprites) {\n this.cuteSprites.forEach((mesh) => {\n console.log('mesh:', mesh)\n mesh.remove()\n mesh.removeFromParent()\n })\n this.cuteSprites.length = 0\n }\n // 移除事件监听\n this.eventListener.forEach((fn) => {\n fn()\n })\n this.eventListener.clear()\n this.eventList.clear()\n }\n}\n\nclass HeadMap {\n TemperatureColorStops = {\n 1.0: '#f00',\n 0.9: '#e2fa00',\n 0.6: '#33f900',\n 0.3: '#0349df',\n 0.0: '#0f00ff',\n }\n\n eventList: Map<string, Function> = new Map()\n backEle: HTMLElement\n heatMapPlane: Mesh\n canvasList = []\n\n constructor() {\n\n }\n\n // 热力图\n create(distance) {\n const heatmap = heatMap.create({\n container: this.createDom(),\n gradient: this.TemperatureColorStops,\n })\n let len = 1200\n const width = window.innerWidth\n const height = window.innerHeight\n const points = []\n let max = 0\n while (len--) {\n const val = Math.floor(Math.random() * 10)\n max = Math.max(max, val)\n const point = {\n x: Math.floor(Math.random() * width),\n y: Math.floor(Math.random() * height),\n value: val,\n }\n points.push(point)\n }\n heatmap.setData({\n max,\n data: points,\n })\n\n // 灰度图\n const greymap = heatMap.create({\n container: this.createDom(),\n gradient: {\n '0': 'black',\n '1.0': 'white',\n },\n })\n\n greymap.setData({\n max,\n data: points,\n })\n const heatMapMaterial = new ShaderMaterial({\n transparent: true,\n depthTest: false,\n side: DoubleSide,\n vertexShader: `varying vec2 vUv;\n uniform float Zscale;\n uniform sampler2D greyMap;\n void main() {\n vUv = uv;\n vec4 frgColor = texture2D(greyMap, uv);//获取灰度图点位信息\n float height = Zscale * frgColor.a;//通过灰度图的rgb*需要设置的高度计算出热力图每个点位最终在z轴高度\n vec3 transformed = vec3( position.x, position.y, height);//重新组装点坐标\n gl_Position = projectionMatrix * modelViewMatrix * vec4(transformed, 1.0);//渲染点位\n \n }\n `,\n fragmentShader: `varying vec2 vUv;\n uniform sampler2D heatMap;//热力图\n uniform vec3 u_color;//基础颜色\n uniform float u_opacity; // 透明度\n void main() {\n //vec4 alphaColor = texture2D(heatMap, vUv);\n // gl_FragColor = alphaColor;\n gl_FragColor = vec4(u_color, u_opacity) * texture2D(heatMap, vUv);//把热力图颜色和透明度进行渲染\n }`,\n uniforms: {\n heatMap: {\n value: { value: undefined },\n },\n greyMap: {\n value: { value: undefined },\n },\n Zscale: { value: 0 }, // 高度参数\n u_color: {\n value: new Color('rgb(255, 255, 255)'),\n },\n u_opacity: {\n value: 0.8,\n },\n },\n })\n\n const texture = new Texture(heatmap._renderer.canvas)\n texture.needsUpdate = true\n const greyTexture = new Texture(greymap._renderer.canvas)\n greyTexture.needsUpdate = true\n\n heatMapMaterial.uniforms.heatMap.value = texture\n heatMapMaterial.uniforms.greyMap.value = greyTexture\n\n const { camera } = use.useScene()\n // 计算平面的尺寸\n const h = 2 * Math.tan(camera.fov * Math.PI / 360) * distance * 2 * 0.85\n const w = h * camera.aspect\n\n const heatMapGeometry = new PlaneGeometry(w, h, 100, 100) // 3d热力图大小,及分块数量\n const heatMapPlane = new Mesh(heatMapGeometry, heatMapMaterial)\n heatMapPlane.rotation.set(-Math.PI / 2, 0, 0)\n\n this.heatMapPlane = heatMapPlane\n return heatMapPlane\n }\n\n addEventListener(eventName, fn) {\n if (this.eventList.has(eventName))\n this.eventList[eventName] = fn\n else\n this.eventList.set(eventName, fn)\n }\n\n addBack() {\n this.backEle = document.createElement('div')\n this.backEle.className = 'hot-back'\n this.backEle.innerHTML = '返回'\n document.body.appendChild(this.backEle)\n this.backEle.addEventListener('click', () => {\n this.eventList.has('close') && this.eventList.get('close')()\n // this.remove()\n })\n }\n\n createDom() {\n // 创建一个新的 canvas 元素\n const canvas = document.createElement('canvas')\n canvas.style.zIndex = '-1'\n // 设置 canvas 元素的宽度和高度\n canvas.width = window.innerWidth\n canvas.height = window.innerHeight\n document.body.appendChild(canvas)\n this.canvasList.push(canvas)\n return canvas\n }\n\n remove() {\n this.canvasList.forEach((canvas) => {\n canvas.remove()\n })\n this.canvasList.length = 0\n this.backEle && this.backEle.remove()\n this.heatMapPlane.removeFromParent()\n this.heatMapPlane.remove()\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["AdditiveBlending","Box3","CircleGeometry","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","regionMap","load","CameraPoi","gobal","Map","Set","dialogManage","Dialog","addStyle","loadGLTF","gltf","model","Object","keys","forEach","key","region","group","name","camera","id","sprite","scale","rotation","y","Math","PI","position","fromArray","copy","add","scan","scene","clone","addScalar","x","cameraMesh","set","title","interactionManager","cameraEvent","point","MethanePoint","probePoint","item","mesh","warn","probeEvent","to","duration","ease","yoyo","repeat","create","warnMesh","rotatingRight","unFrame","useframe","children","z","abs","eventListener","useScene","unClick","addEventListener","Event","Success","undefined","targetPosition","toArray","camaraPosition","startPosition","cameraLookAt","getWorldDirection","cameraUtil","target","getMesh","dialogMesh","visible","togglePoi","then","headMap","HeadMap","distanceTo","closeHotmap","remove","removeFromParent","clear","fn","close","geometry","texture","circle","map","side","transparent","rotateX","material","vertexShader","fragmentShader","blending","depthTest","color","numPoints","i","random","cameraManage","manage","cameraPosition","window","innerWidth","innerHeight","setCustomPerspective","cuteSprite","depthWrite","center","renderOrder","updateScale","Promise","reslove","setTimeout","borderMesh","getBorderMesh","cuteSprites","push","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","assign","style","maskingDiv","className","appendChild","closeSpan","get","hLine","vLine","op","opList","btnSpan","sliderDiv","sliderBar","type","value","updateProjectionMatrix","css","styleElement","createTextNode","head","length","heatmap","container","createDom","gradient","TemperatureColorStops","len","points","val","floor","setData","data","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, 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\n// @ts-ignore\nimport { regionMap } from '../regionData'\n\nconst load = new ModelLoader()\nclass CameraPoi {\n gobal: Factory3D\n cameraMesh: Map<string, Group> = new Map()\n warnMesh: Map<string, SpritePoi> = new Map()\n headMap: HeadMap\n dialogManage: Dialog\n eventListener: Set<Function> = new Set()\n\n startPosition: Vector3\n cameraLookAt: Vector3\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.dialogManage = new Dialog(this)\n this.dialogManage.addStyle()\n }\n\n async generateObject() {\n const model = await load.loadGLTF(`${usePath}shexiang.glb`, false, true, './draco/', (gltf) => {\n return gltf\n })\n\n Object.keys(regionMap).forEach(async (key: string) => {\n // 摄像机\n const region = regionMap[key]\n const group = new Group()\n group.name = region.camera.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.camera.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.title, group)\n this.gobal.interactionManager.add(sprite)\n this.cameraEvent(sprite, region)\n this.gobal.scene.add(group)\n\n // 甲烷检测点\n const point = new MethanePoint()\n region.probePoint?.forEach((item) => {\n let mesh\n if (item.warn) {\n mesh = new SpritePoi(`${usePath}p4/warn.png`, { scale: [16, 16, 1] })\n this.gobal.interactionManager.add(mesh)\n this.probeEvent(mesh, region)\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(region.title, mesh)\n\n this.gobal.scene.add(mesh)\n })\n })\n // 设置左右旋转的标志位和旋转速度\n let rotatingRight = true // 是否正在向右转动\n\n const unFrame = use.useframe(() => {\n this.cameraMesh.forEach((group) => {\n const scan = group.children[1]\n // 更新相机的旋转角度\n if (rotatingRight) {\n // 向右旋转\n scan.rotation.z += 0.005\n }\n else {\n // 向左旋转\n scan.rotation.z -= 0.005\n }\n\n // 检查是否达到目标旋转角度\n if (Math.abs(scan.rotation.z) >= Math.abs(Math.PI / 4)) {\n // 到达目标角度,切换旋转方向并更新目标角度\n rotatingRight = !rotatingRight\n }\n })\n })\n this.eventListener.add(unFrame)\n }\n\n cameraEvent(sprite: SpritePoi, region: any) {\n const { camera } = use.useScene()\n const unClick = sprite.addEventListener('click', async () => {\n sendToMessage(MessageType.Event, 'onCameraStatus', EMessageStatus.Success, undefined, { id: region.camera.id })\n\n const position = new Vector3().fromArray(region.camera.position)\n const targetPosition: [number, number, number] = position.clone().toArray()\n const camaraPosition: [number, number, number] = position.clone().add(new Vector3(0, 40, 80)).toArray()\n\n const startPosition = camera.position.clone()\n // 获取相机朝向\n const cameraLookAt = new Vector3() // 创建一个向量来存储相机朝向\n camera.getWorldDirection(cameraLookAt) // 获取相机朝向并存储在向量中\n this.gobal.cameraUtil.set({\n position: camaraPosition,\n target: targetPosition,\n })\n\n const dialogMesh = await this.dialogManage.getMesh(position, position.clone().add(new Vector3(0, -20, 5)))\n this.dialogManage.addEventListener('close', () => {\n // 初始相机到原始位置\n this.gobal.cameraUtil.set({\n position: startPosition.toArray(),\n target: cameraLookAt.toArray(),\n })\n sendToMessage(MessageType.Event, 'onCancelCameraStatus', EMessageStatus.Success, undefined, { id: region.camera.id })\n })\n this.gobal.scene.add(dialogMesh)\n })\n this.eventListener.add(unClick)\n }\n\n probeEvent(sprite: SpritePoi, region) {\n const { camera } = use.useScene()\n sprite.addEventListener('click', async () => {\n if (!sprite.visible)\n return\n sprite.visible = false\n sendToMessage(MessageType.Event, 'onGasMonitorStatus', EMessageStatus.Success, undefined, { id: region.probePoint[0].id })\n this.togglePoi(false)\n const position = new Vector3().fromArray(region.probePoint[0].position)\n const camaraPosition = position.clone().add(new Vector3(0, 30, 0))\n\n this.startPosition = camera.position.clone()\n // 获取相机朝向\n this.cameraLookAt = new Vector3() // 创建一个向量来存储相机朝向\n camera.getWorldDirection(this.cameraLookAt) // 获取相机朝向并存储在向量中\n this.gobal.cameraUtil.set({\n position: camaraPosition.toArray(),\n target: position.clone().toArray(),\n }).then(() => {\n this.headMap = new HeadMap()\n const mesh = this.headMap.create(camaraPosition.distanceTo(position))\n mesh.position.copy(sprite.position)\n mesh.position.y = 0.5\n this.gobal.scene.add(mesh)\n\n // this.headMap.addBack()\n this.headMap.addEventListener('close', () => {\n this.closeHotmap()\n // this.togglePoi(true)\n\n // this.gobal.cameraUtil.set({\n // position: this.startPosition.toArray(),\n // target: this.cameraLookAt.toArray(),\n // })\n })\n })\n })\n }\n\n closeHotmap() {\n this.headMap.remove()\n this.togglePoi(true)\n\n this.gobal.cameraUtil.set({\n position: this.startPosition.toArray(),\n target: this.cameraLookAt.toArray(),\n })\n }\n\n togglePoi(visible = true) {\n this.warnMesh.forEach((sprite) => {\n sprite.visible = visible\n })\n this.cameraMesh.forEach((sprite) => {\n sprite.visible = visible\n })\n }\n\n remove() {\n // 删除摄像机POI点\n this.cameraMesh.forEach((sprite) => {\n sprite.removeFromParent()\n sprite.remove()\n })\n this.cameraMesh.clear()\n this.warnMesh.forEach((sprite) => {\n sprite.removeFromParent()\n sprite.remove()\n })\n this.warnMesh.clear()\n this.eventListener.forEach((fn) => {\n fn()\n })\n // 热力图\n if (this.headMap)\n this.headMap.remove()\n this.eventListener.clear()\n\n this.dialogManage.close()\n }\n}\n\nexport default CameraPoi\n\nclass MethanePoint {\n constructor() {\n\n }\n\n create() {\n // 定义Shader的uniform变量\n\n const geometry = new PlaneGeometry(10, 10)\n const texture = new TextureLoader(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, cameraPosition) {\n this.close()\n this.camera = new PerspectiveCamera(\n 90, window.innerWidth / window.innerHeight, 0.1, 10000,\n )\n this.camera.position.copy(cameraPosition)\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.eventList.has('close') && this.eventList.get('close')()\n this.close()\n })\n const hLine = document.createElement('span')\n hLine.className = 'dialog-close-line dialog-close-h-line'\n closeSpan.appendChild(hLine)\n const vLine = document.createElement('span')\n vLine.className = 'dialog-close-line dialog-close-v-line'\n closeSpan.appendChild(vLine)\n dialogDiv.appendChild(closeSpan)\n\n // 操作按钮\n const op = document.createElement('div')\n op.className = 'dialog-operate'\n dialogDiv.appendChild(op)\n const opList = ['left', 'right', 'top', 'bottom']\n opList.forEach((key) => {\n const btnSpan = document.createElement('span')\n btnSpan.className = `dialog-operate-btn dialog-operate-${key}`\n btnSpan.addEventListener('click', () => {\n switch (key) {\n case 'top':\n camera.rotation.x -= 0.01\n break\n case 'bottom':\n camera.rotation.x += 0.01\n break\n case 'left':\n camera.rotation.y -= 0.01\n break\n case 'right':\n camera.rotation.y += 0.01\n break\n }\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(camera)\n sprite.material = new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false })\n setTimeout(() => close(), 800)\n })\n op.appendChild(btnSpan)\n })\n\n // 滑动条\n const sliderDiv = document.createElement('div')\n sliderDiv.className = 'dialog-slider-container'\n const sliderBar = document.createElement('input')\n sliderBar.type = 'range'\n sliderBar.min = '30'\n sliderBar.max = '120'\n sliderBar.value = '90'\n sliderBar.className = 'dialog-slider'\n sliderBar.addEventListener('input', () => {\n camera.fov = sliderBar.value\n camera.updateProjectionMatrix()\n const { texture, close } = this.manage.gobal.scene.setCustomPerspective(camera)\n sprite.material = new SpriteMaterial({ map: texture, depthTest: false, depthWrite: false })\n setTimeout(() => close(), 800)\n })\n sliderDiv.appendChild(sliderBar)\n dialogDiv.appendChild(sliderDiv)\n\n 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: 20px;\n height: 20px;\n border-radius: 2px;\n color: #fff;\n background-color: #c8ab75;\n cursor: pointer; /* 鼠标指针样式 */\n display: flex;\n justify-content: center;\n align-items: center;\n position: absolute;\n right: 20px;\n top: 15px;\n pointer-events: auto;\n }\n\n .dialog-close:hover{\n background-color:#c8a158;\n }\n\n .dialog-close-line{\n width: 14px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n top: 9px;\n display: block;\n }\n\n .dialog-close-h-line{\n transform: rotate(-45deg);\n }\n\n .dialog-close-v-line{\n transform: rotate(45deg);\n }\n\n .dialog-operate{\n width: 120px;\n height: 120px;\n background-image: url(${usePath}p4/operate.png);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n position: absolute;\n right: 15px;\n bottom: 10px;\n pointer-events: auto;\n }\n\n .dialog-operate-btn{\n width: 0;\n height: 0;\n position: absolute;\n cursor: pointer;\n pointer-events: auto;\n }\n\n .dialog-operate-top{\n border-left: 8px solid transparent; /* 左边透明 */\n border-right: 8px solid transparent; /* 右边透明 */\n border-bottom: 8px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 9px);\n top: 20px;\n }\n .dialog-operate-top:hover{\n border-bottom-color:#fff2dd;\n }\n\n .dialog-operate-bottom{\n border-left: 8px solid transparent; /* 左边透明 */\n border-right: 8px solid transparent; /* 右边透明 */\n border-top: 8px solid #f2c67d; /* 底边实心 */\n left: calc(50% - 9px);\n bottom: 20px;\n }\n\n .dialog-operate-bottom:hover{\n border-top-color:#fff2dd;\n }\n\n .dialog-operate-left{\n border-top: 8px solid transparent; /* 左边透明 */\n border-bottom: 8px solid transparent; /* 右边透明 */\n border-right: 8px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 9px);\n left: 20px;\n }\n .dialog-operate-left:hover{\n border-right-color:#fff2dd;\n }\n\n .dialog-operate-right{\n border-top: 8px solid transparent; /* 左边透明 */\n border-bottom: 8px solid transparent; /* 右边透明 */\n border-left: 8px solid #f2c67d; /* 底边实心 */\n top: calc(50% - 9px);\n right: 20px;\n }\n\n .dialog-operate-right:hover{\n border-left-color:#fff2dd;\n }\n \n .dialog-slider-container {\n width: 13px;\n height: 350px;\n background: url(${usePath}p4/slider.png);\n background-size: 100% 100%;\n position:absolute;\n right:23px;\n top:50px;\n }\n\n .dialog-slider {\n -webkit-appearance: none;\n width: 300px;\n height: 13px;\n background: transparent;\n outline: none;\n opacity: 0.7;\n -webkit-transition: .2s;\n transition: opacity .2s;\n transform: rotate(-90deg);\n margin-left: -144px;\n margin-top: 144px;\n pointer-events: auto;\n }\n\n .dialog-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 7px;\n height: 20px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n\n .dialog-slider::-moz-range-thumb {\n width: 7px;\n height: 20px;\n background: #eebe76;\n cursor: pointer;\n border-radius: 5px;\n }\n`\n // 创建一个 <style> 元素\n const styleElement = document.createElement('style')\n styleElement.appendChild(document.createTextNode(css))\n // 将 <style> 元素添加到 <head> 中\n document.head.appendChild(styleElement)\n }\n\n close() {\n if (this.cuteSprites) {\n this.cuteSprites.forEach((mesh) => {\n mesh.remove()\n mesh.removeFromParent()\n })\n this.cuteSprites.length = 0\n }\n // 移除事件监听\n this.eventListener.forEach((fn) => {\n fn()\n })\n this.eventListener.clear()\n this.eventList.clear()\n }\n}\n\nclass HeadMap {\n TemperatureColorStops = {\n 1.0: '#f00',\n 0.9: '#e2fa00',\n 0.6: '#33f900',\n 0.3: '#0349df',\n 0.0: '#0f00ff',\n }\n\n eventList: Map<string, Function> = new Map()\n backEle: HTMLElement\n heatMapPlane: Mesh\n canvasList = []\n\n constructor() {\n\n }\n\n // 热力图\n create(distance) {\n const heatmap = heatMap.create({\n container: this.createDom(),\n gradient: this.TemperatureColorStops,\n })\n let len = 1200\n const width = window.innerWidth\n const height = window.innerHeight\n const points = []\n let max = 0\n while (len--) {\n const val = Math.floor(Math.random() * 10)\n max = Math.max(max, val)\n const point = {\n x: Math.floor(Math.random() * width),\n y: Math.floor(Math.random() * height),\n value: val,\n }\n points.push(point)\n }\n heatmap.setData({\n max,\n data: points,\n })\n\n // 灰度图\n const greymap = heatMap.create({\n container: this.createDom(),\n gradient: {\n '0': 'black',\n '1.0': 'white',\n },\n })\n\n greymap.setData({\n max,\n data: points,\n })\n const heatMapMaterial = new ShaderMaterial({\n transparent: true,\n depthTest: false,\n side: DoubleSide,\n vertexShader: `varying vec2 vUv;\n uniform float Zscale;\n uniform sampler2D greyMap;\n void main() {\n vUv = uv;\n vec4 frgColor = texture2D(greyMap, uv);//获取灰度图点位信息\n float height = Zscale * frgColor.a;//通过灰度图的rgb*需要设置的高度计算出热力图每个点位最终在z轴高度\n vec3 transformed = vec3( position.x, position.y, height);//重新组装点坐标\n gl_Position = projectionMatrix * modelViewMatrix * vec4(transformed, 1.0);//渲染点位\n \n }\n `,\n fragmentShader: `varying vec2 vUv;\n uniform sampler2D heatMap;//热力图\n uniform vec3 u_color;//基础颜色\n uniform float u_opacity; // 透明度\n void main() {\n //vec4 alphaColor = texture2D(heatMap, vUv);\n // gl_FragColor = alphaColor;\n gl_FragColor = vec4(u_color, u_opacity) * texture2D(heatMap, vUv);//把热力图颜色和透明度进行渲染\n }`,\n uniforms: {\n heatMap: {\n value: { value: undefined },\n },\n greyMap: {\n value: { value: undefined },\n },\n Zscale: { value: 0 }, // 高度参数\n u_color: {\n value: new Color('rgb(255, 255, 255)'),\n },\n u_opacity: {\n value: 0.8,\n },\n },\n })\n\n const texture = new Texture(heatmap._renderer.canvas)\n texture.needsUpdate = true\n const greyTexture = new Texture(greymap._renderer.canvas)\n greyTexture.needsUpdate = true\n\n heatMapMaterial.uniforms.heatMap.value = texture\n heatMapMaterial.uniforms.greyMap.value = greyTexture\n\n const { camera } = use.useScene()\n // 计算平面的尺寸\n const h = 2 * Math.tan(camera.fov * Math.PI / 360) * distance * 2 * 0.85\n const w = h * camera.aspect\n\n const heatMapGeometry = new PlaneGeometry(w, h, 100, 100) // 3d热力图大小,及分块数量\n const heatMapPlane = new Mesh(heatMapGeometry, heatMapMaterial)\n heatMapPlane.rotation.set(-Math.PI / 2, 0, 0)\n\n this.heatMapPlane = heatMapPlane\n return heatMapPlane\n }\n\n addEventListener(eventName, fn) {\n if (this.eventList.has(eventName))\n this.eventList[eventName] = fn\n else\n this.eventList.set(eventName, fn)\n }\n\n addBack() {\n this.backEle = document.createElement('div')\n this.backEle.className = 'hot-back'\n this.backEle.innerHTML = '返回'\n document.body.appendChild(this.backEle)\n this.backEle.addEventListener('click', () => {\n this.eventList.has('close') && this.eventList.get('close')()\n // this.remove()\n })\n }\n\n createDom() {\n // 创建一个新的 canvas 元素\n const canvas = document.createElement('canvas')\n canvas.style.zIndex = '-1'\n // 设置 canvas 元素的宽度和高度\n canvas.width = window.innerWidth\n canvas.height = window.innerHeight\n document.body.appendChild(canvas)\n this.canvasList.push(canvas)\n return canvas\n }\n\n remove() {\n this.canvasList.forEach((canvas) => {\n canvas.remove()\n })\n this.canvasList.length = 0\n this.backEle && this.backEle.remove()\n this.heatMapPlane.removeFromParent()\n this.heatMapPlane.remove()\n }\n}\n"],"mappings":"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"}
@@ -5,7 +5,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
5
5
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
7
7
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
8
- import { BoxGeometry, Color, Float32BufferAttribute, Group, Mesh, MeshBasicMaterial, Vector3, globalObjectManage, use, utils } from '@anov/3d-core';
8
+ import { BoxGeometry, Color, Group, Mesh, ShaderMaterial, Vector3, globalObjectManage, use, utils } from '@anov/3d-core';
9
9
  import createFontMesh from "../utils/fontMesh";
10
10
  import { SceneStyle } from "../utils/constant";
11
11
  import regionMap from "../regionData";
@@ -194,30 +194,20 @@ var CylinderManage = /*#__PURE__*/function () {
194
194
  value: function getMesh(data) {
195
195
  var width = 10;
196
196
  // 创建渐变材质
197
- var gradientMaterial = new MeshBasicMaterial({
198
- vertexColors: true,
199
- // 启用顶点颜色插值
200
- transparent: true
201
- // blending: AdditiveBlending,
202
- });
197
+
203
198
  // 创建渐变立方体的顶点颜色数组
204
199
  var geometry = new BoxGeometry(width, data.height, width);
205
- var position = geometry.attributes.position;
206
- var colors = [];
207
- for (var i = 0; i < position.count; i++) {
208
- var vertex = new Vector3();
209
- vertex.fromBufferAttribute(position, i);
210
- // 计算顶点的浅橘色到白色渐变值
211
- var gradientX = (vertex.x + width / 2) / width; // 从0到1的梯度
212
- var gradientY = (vertex.y + data.height / 2) / data.height; // 从0到1的梯度
213
- // 计算渐变色
214
- var color = new Color().setHex(0xD5A86F); // 初始颜色为浅橘色
215
- color.lerp(new Color(1, 1, 0.9), gradientX * gradientY); // 从浅橘色渐变到白色
216
- // 添加顶点颜色
217
- colors.push(color.r, color.g, color.b); // 添加渐变色
218
- }
219
-
220
- geometry.setAttribute('color', new Float32BufferAttribute(colors, 3));
200
+ var gradientMaterial = new ShaderMaterial({
201
+ transparent: true,
202
+ depthTest: false,
203
+ uniforms: {
204
+ intensity: {
205
+ value: 1.0
206
+ }
207
+ },
208
+ vertexShader: "\n varying vec2 vUv;\n varying vec3 vNormal;\n void main()\n {\n vUv = uv;\n vNormal =normalize( normal ) ;\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix * mvPosition;\n }\n \n ",
209
+ fragmentShader: "\n \n varying vec3 vNormal;\n varying vec2 vUv;\n uniform float intensity;\n\n void main( void ) {\n \n float colX =clamp( vUv.y+0.3,0.,1.);\n\n if(vNormal.y >0.5)\n {\n colX=1.;\n }\n if(vNormal.y <-0.5)\n {\n colX=0.;\n }\n\n vec4 col = vec4 (1.,mix(0.2,0.8,colX),0.,1.);\n\n gl_FragColor=col*colX*intensity;\n }\n "
210
+ });
221
211
 
222
212
  // 创建渐变立方体
223
213
  var cylinder = new Mesh(geometry, gradientMaterial);
@@ -1 +1 @@
1
- {"version":3,"names":["BoxGeometry","Color","Float32BufferAttribute","Group","Mesh","MeshBasicMaterial","Vector3","globalObjectManage","use","utils","createFontMesh","SceneStyle","regionMap","collisionDetection","lookAtOnYAxis","emitter","cylinderData","label","id","title","reform","belongTo","area","color","getHex","points","poi","position","height","reduction","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative","CylinderManage","gobal","options","Map","currentCameraPosition","control","object","box","areaBoundingBox","boundingBoxMap","get","currentoperate","iscollision","regionPlane","planeMesh","forEach","mesh","visible","emit","cameraRemoveListener","scene","option","item","cylinder","getMesh","group","name","copy","fromArray","interactionManager","storeManagement","add","addEventListener","style","real","cameraUtil","set","target","then","currentGroup","cylinderMesh","cameraAddListener","font","geometry","center","useframe","camera","controlAddListener","data","width","gradientMaterial","vertexColors","transparent","attributes","colors","i","count","vertex","fromBufferAttribute","gradientX","x","gradientY","y","setHex","lerp","push","r","g","b","setAttribute","rotateY","Math","PI","cameraListenerHandle","maxDistance","controls","getDistance","removeEventListener"],"sources":["../../../src/factory/unit/cylinder.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { BoxGeometry, Color, Float32BufferAttribute, Group, Mesh, MeshBasicMaterial, ShaderMaterial, Vector3, globalObjectManage, use, utils } from '@anov/3d-core'\nimport createFontMesh from '../utils/fontMesh'\nimport type Factory3D from '../3d'\nimport { SceneStyle } from '../utils/constant'\nimport regionMap from '../regionData'\nimport { collisionDetection } from '../utils/areaBoundingBox'\n\nimport { lookAtOnYAxis } from '../utils'\n\nconst { emitter } = utils\n\nconst cylinderData = [\n {\n label: '8人',\n id: '1',\n title: regionMap.reform.title,\n belongTo: regionMap.reform.id,\n area: regionMap.reform.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.reform.poi.position,\n height: 80,\n },\n {\n label: '7人',\n id: '2',\n title: regionMap.reduction.title,\n belongTo: regionMap.reduction.id,\n area: regionMap.reduction.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.reduction.poi.position,\n height: 70,\n },\n {\n label: '4人',\n id: '3',\n title: regionMap.crudeOil.title,\n belongTo: regionMap.crudeOil.id,\n area: regionMap.crudeOil.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.crudeOil.poi.position,\n height: 40,\n },\n {\n label: '10人',\n id: '4',\n title: regionMap.catalyticCracking.title,\n belongTo: regionMap.catalyticCracking.id,\n area: regionMap.catalyticCracking.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.catalyticCracking.poi.position,\n height: 100,\n },\n {\n label: '3人',\n id: '5',\n title: regionMap.hydrocrackingUnit.title,\n belongTo: regionMap.hydrocrackingUnit.id,\n area: regionMap.hydrocrackingUnit.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.hydrocrackingUnit.poi.position,\n height: 30,\n },\n {\n label: '8人',\n id: '6',\n title: regionMap.cokingUnit.title,\n belongTo: regionMap.cokingUnit.id,\n area: regionMap.cokingUnit.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.cokingUnit.poi.position,\n height: 80,\n },\n {\n label: '20人',\n id: '7',\n title: regionMap.administrative.title,\n belongTo: regionMap.administrative.id,\n area: regionMap.administrative.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.administrative.poi.position,\n height: 150,\n },\n]\n\ntype CylinderManageOption = {\n visible?: boolean\n}\n\nclass CylinderManage {\n private scene: Scene\n readonly cylinderMesh: Map<string, Object3D> = new Map()\n private option: CylinderManageOption\n private gobal: Factory3D\n private currentoperate: string = cylinderData[0].belongTo\n\n constructor(gobal: Factory3D, options?: CylinderManageOption) {\n this.scene = gobal.scene.scene\n this.gobal = gobal\n this.option = options || {}\n }\n\n generateCylinder() {\n cylinderData.forEach((item) => {\n /* const geometry = new BoxGeometry(10, item.height, 10)\n const material = new ShaderMaterial({\n transparent: true,\n depthWrite: false,\n depthTest: false,\n uniforms: {\n uHeight: {\n value: item.height,\n },\n uColor: {\n value: new Color(item.color),\n },\n },\n vertexShader: `\n uniform float uHeight;\n varying float vOpacity;\n void main() {\n vOpacity = (position.y + uHeight/2.0) / uHeight;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n }\n `,\n fragmentShader: `\n uniform vec3 uColor;\n varying float vOpacity;\n void main() {\n gl_FragColor = vec4(uColor,0.3+vOpacity/10.0*7.0);\n }\n `,\n })\n const cylinder = new Mesh(geometry, material) */\n const cylinder = this.getMesh(item)\n const group = new Group()\n group.name = item.title\n\n group.visible = this.option?.visible ?? true\n cylinder.position.copy(new Vector3().fromArray([item.points[0], item.points[1] + item.height / 2, item.points[2]]))\n\n const interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n interactionManager.add(group)\n\n group.addEventListener('click', () => {\n if (this.gobal.style === SceneStyle.real || group.visible === false)\n return\n\n // @ts-ignore\n this.gobal.regionPlane.planeMesh.forEach((mesh) => {\n mesh.visible = false\n })\n\n this.gobal.cameraUtil.set({\n position: [item.points[0], item.points[1] + item.height / 2 + 100, item.points[2] + 100],\n target: [item.points[0], item.points[1] + item.height / 2, item.points[2]],\n }).then(() => {\n emitter.emit('peoplemanagement-camera-enter', item)\n const currentGroup = this.cylinderMesh.get(item.belongTo) as Group\n currentGroup.visible = false\n\n this.currentoperate = item.belongTo\n this.cameraAddListener()\n })\n /* this.gobal.cameraUtil.focus({ target: item.area, pitch: 0 }).then(() => {\n emitter.emit('peoplemanagement-camera-enter', item)\n const currentGroup = this.cylinderMesh.get(item.belongTo) as Group\n currentGroup.visible = false\n\n this.currentoperate = item.belongTo\n this.cameraAddListener()\n }) */\n })\n this.cylinderMesh.set(item.belongTo, group)\n group.add(cylinder)\n\n const font = createFontMesh(item.label, {\n position: new Vector3().fromArray([item.points[0], item.points[1] + item.height + 10, item.points[2]]),\n })\n\n font.then((mesh) => {\n mesh.geometry.center()\n\n group.add(mesh)\n\n use.useframe(() => {\n lookAtOnYAxis(mesh, globalObjectManage.camera.position)\n })\n this.scene.add(group)\n })\n })\n this.controlAddListener()\n }\n\n getMesh(data) {\n const width = 10\n // 创建渐变材质\n const gradientMaterial = new MeshBasicMaterial({\n vertexColors: true, // 启用顶点颜色插值\n transparent: true,\n // blending: AdditiveBlending,\n })\n // 创建渐变立方体的顶点颜色数组\n const geometry = new BoxGeometry(width, data.height, width)\n const position = geometry.attributes.position\n const colors = []\n for (let i = 0; i < position.count; i++) {\n const vertex = new Vector3()\n vertex.fromBufferAttribute(position, i)\n // 计算顶点的浅橘色到白色渐变值\n const gradientX = (vertex.x + width / 2) / width // 从0到1的梯度\n const gradientY = (vertex.y + data.height / 2) / data.height // 从0到1的梯度\n // 计算渐变色\n const color = new Color().setHex(0xD5A86F) // 初始颜色为浅橘色\n color.lerp(new Color(1, 1, 0.9), gradientX * gradientY) // 从浅橘色渐变到白色\n // 添加顶点颜色\n colors.push(color.r, color.g, color.b) // 添加渐变色\n }\n geometry.setAttribute('color', new Float32BufferAttribute(colors, 3))\n\n // 创建渐变立方体\n const cylinder = new Mesh(geometry, gradientMaterial)\n cylinder.rotateY(Math.PI / 2)\n return cylinder\n }\n\n private cameraListenerHandle = () => {\n const currentCameraPosition = this.gobal.control.object.position\n const box = this.gobal.areaBoundingBox.boundingBoxMap.get(this.currentoperate)\n const iscollision = collisionDetection(box, currentCameraPosition)\n if (!iscollision) {\n // @ts-ignore\n this.gobal.regionPlane.planeMesh.forEach((mesh) => {\n mesh.visible = true\n })\n emitter.emit('peoplemanagement-camera-out', {\n belongTo: this.currentoperate,\n })\n\n this.cameraRemoveListener()\n }\n }\n\n private cameraAddListener() {\n this.gobal.control.addEventListener('change', this.cameraListenerHandle)\n }\n\n private controlAddListener() {\n const maxDistance = this.gobal.option.controls.maxDistance\n maxDistance && this.gobal.control.addEventListener('change', () => {\n if (this.gobal.control.getDistance() >= maxDistance - 5)\n emitter.emit('peoplemanagement-control-maxDistance', null)\n })\n }\n\n private cameraRemoveListener() {\n this.gobal.control.removeEventListener('change', this.cameraListenerHandle)\n }\n}\n\nexport default CylinderManage"],"mappings":"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"}
1
+ {"version":3,"names":["BoxGeometry","Color","Group","Mesh","ShaderMaterial","Vector3","globalObjectManage","use","utils","createFontMesh","SceneStyle","regionMap","collisionDetection","lookAtOnYAxis","emitter","cylinderData","label","id","title","reform","belongTo","area","color","getHex","points","poi","position","height","reduction","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative","CylinderManage","gobal","options","Map","currentCameraPosition","control","object","box","areaBoundingBox","boundingBoxMap","get","currentoperate","iscollision","regionPlane","planeMesh","forEach","mesh","visible","emit","cameraRemoveListener","scene","option","item","cylinder","getMesh","group","name","copy","fromArray","interactionManager","storeManagement","add","addEventListener","style","real","cameraUtil","set","target","then","currentGroup","cylinderMesh","cameraAddListener","font","geometry","center","useframe","camera","controlAddListener","data","width","gradientMaterial","transparent","depthTest","uniforms","intensity","value","vertexShader","fragmentShader","rotateY","Math","PI","cameraListenerHandle","maxDistance","controls","getDistance","removeEventListener"],"sources":["../../../src/factory/unit/cylinder.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { BoxGeometry, Color, Float32BufferAttribute, Group, Mesh, MeshBasicMaterial, ShaderMaterial, Vector3, globalObjectManage, use, utils } from '@anov/3d-core'\nimport createFontMesh from '../utils/fontMesh'\nimport type Factory3D from '../3d'\nimport { SceneStyle } from '../utils/constant'\nimport regionMap from '../regionData'\nimport { collisionDetection } from '../utils/areaBoundingBox'\n\nimport { lookAtOnYAxis } from '../utils'\n\nconst { emitter } = utils\n\nconst cylinderData = [\n {\n label: '8人',\n id: '1',\n title: regionMap.reform.title,\n belongTo: regionMap.reform.id,\n area: regionMap.reform.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.reform.poi.position,\n height: 80,\n },\n {\n label: '7人',\n id: '2',\n title: regionMap.reduction.title,\n belongTo: regionMap.reduction.id,\n area: regionMap.reduction.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.reduction.poi.position,\n height: 70,\n },\n {\n label: '4人',\n id: '3',\n title: regionMap.crudeOil.title,\n belongTo: regionMap.crudeOil.id,\n area: regionMap.crudeOil.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.crudeOil.poi.position,\n height: 40,\n },\n {\n label: '10人',\n id: '4',\n title: regionMap.catalyticCracking.title,\n belongTo: regionMap.catalyticCracking.id,\n area: regionMap.catalyticCracking.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.catalyticCracking.poi.position,\n height: 100,\n },\n {\n label: '3人',\n id: '5',\n title: regionMap.hydrocrackingUnit.title,\n belongTo: regionMap.hydrocrackingUnit.id,\n area: regionMap.hydrocrackingUnit.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.hydrocrackingUnit.poi.position,\n height: 30,\n },\n {\n label: '8人',\n id: '6',\n title: regionMap.cokingUnit.title,\n belongTo: regionMap.cokingUnit.id,\n area: regionMap.cokingUnit.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.cokingUnit.poi.position,\n height: 80,\n },\n {\n label: '20人',\n id: '7',\n title: regionMap.administrative.title,\n belongTo: regionMap.administrative.id,\n area: regionMap.administrative.area,\n color: new Color('#FED602').getHex(),\n points: regionMap.administrative.poi.position,\n height: 150,\n },\n]\n\ntype CylinderManageOption = {\n visible?: boolean\n}\n\nclass CylinderManage {\n private scene: Scene\n readonly cylinderMesh: Map<string, Object3D> = new Map()\n private option: CylinderManageOption\n private gobal: Factory3D\n private currentoperate: string = cylinderData[0].belongTo\n\n constructor(gobal: Factory3D, options?: CylinderManageOption) {\n this.scene = gobal.scene.scene\n this.gobal = gobal\n this.option = options || {}\n }\n\n generateCylinder() {\n cylinderData.forEach((item) => {\n /* const geometry = new BoxGeometry(10, item.height, 10)\n const material = new ShaderMaterial({\n transparent: true,\n depthWrite: false,\n depthTest: false,\n uniforms: {\n uHeight: {\n value: item.height,\n },\n uColor: {\n value: new Color(item.color),\n },\n },\n vertexShader: `\n uniform float uHeight;\n varying float vOpacity;\n void main() {\n vOpacity = (position.y + uHeight/2.0) / uHeight;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n }\n `,\n fragmentShader: `\n uniform vec3 uColor;\n varying float vOpacity;\n void main() {\n gl_FragColor = vec4(uColor,0.3+vOpacity/10.0*7.0);\n }\n `,\n })\n const cylinder = new Mesh(geometry, material) */\n const cylinder = this.getMesh(item)\n const group = new Group()\n group.name = item.title\n\n group.visible = this.option?.visible ?? true\n cylinder.position.copy(new Vector3().fromArray([item.points[0], item.points[1] + item.height / 2, item.points[2]]))\n\n const interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n interactionManager.add(group)\n\n group.addEventListener('click', () => {\n if (this.gobal.style === SceneStyle.real || group.visible === false)\n return\n\n // @ts-ignore\n this.gobal.regionPlane.planeMesh.forEach((mesh) => {\n mesh.visible = false\n })\n\n this.gobal.cameraUtil.set({\n position: [item.points[0], item.points[1] + item.height / 2 + 100, item.points[2] + 100],\n target: [item.points[0], item.points[1] + item.height / 2, item.points[2]],\n }).then(() => {\n emitter.emit('peoplemanagement-camera-enter', item)\n const currentGroup = this.cylinderMesh.get(item.belongTo) as Group\n currentGroup.visible = false\n\n this.currentoperate = item.belongTo\n this.cameraAddListener()\n })\n /* this.gobal.cameraUtil.focus({ target: item.area, pitch: 0 }).then(() => {\n emitter.emit('peoplemanagement-camera-enter', item)\n const currentGroup = this.cylinderMesh.get(item.belongTo) as Group\n currentGroup.visible = false\n\n this.currentoperate = item.belongTo\n this.cameraAddListener()\n }) */\n })\n this.cylinderMesh.set(item.belongTo, group)\n group.add(cylinder)\n\n const font = createFontMesh(item.label, {\n position: new Vector3().fromArray([item.points[0], item.points[1] + item.height + 10, item.points[2]]),\n })\n\n font.then((mesh) => {\n mesh.geometry.center()\n\n group.add(mesh)\n\n use.useframe(() => {\n lookAtOnYAxis(mesh, globalObjectManage.camera.position)\n })\n this.scene.add(group)\n })\n })\n this.controlAddListener()\n }\n\n getMesh(data) {\n const width = 10\n // 创建渐变材质\n\n // 创建渐变立方体的顶点颜色数组\n const geometry = new BoxGeometry(width, data.height, width)\n\n const gradientMaterial = new ShaderMaterial({\n transparent: true,\n depthTest: false,\n uniforms: {\n intensity: { value: 1.0 },\n },\n vertexShader: `\n varying vec2 vUv;\n varying vec3 vNormal;\n void main()\n {\n vUv = uv;\n vNormal =normalize( normal ) ;\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix * mvPosition;\n }\n \n `,\n fragmentShader: `\n \n varying vec3 vNormal;\n varying vec2 vUv;\n uniform float intensity;\n\n void main( void ) {\n \n float colX =clamp( vUv.y+0.3,0.,1.);\n\n if(vNormal.y >0.5)\n {\n colX=1.;\n }\n if(vNormal.y <-0.5)\n {\n colX=0.;\n }\n\n vec4 col = vec4 (1.,mix(0.2,0.8,colX),0.,1.);\n\n gl_FragColor=col*colX*intensity;\n }\n `,\n\n })\n\n // 创建渐变立方体\n const cylinder = new Mesh(geometry, gradientMaterial)\n cylinder.rotateY(Math.PI / 2)\n return cylinder\n }\n\n private cameraListenerHandle = () => {\n const currentCameraPosition = this.gobal.control.object.position\n const box = this.gobal.areaBoundingBox.boundingBoxMap.get(this.currentoperate)\n const iscollision = collisionDetection(box, currentCameraPosition)\n if (!iscollision) {\n // @ts-ignore\n this.gobal.regionPlane.planeMesh.forEach((mesh) => {\n mesh.visible = true\n })\n emitter.emit('peoplemanagement-camera-out', {\n belongTo: this.currentoperate,\n })\n\n this.cameraRemoveListener()\n }\n }\n\n private cameraAddListener() {\n this.gobal.control.addEventListener('change', this.cameraListenerHandle)\n }\n\n private controlAddListener() {\n const maxDistance = this.gobal.option.controls.maxDistance\n maxDistance && this.gobal.control.addEventListener('change', () => {\n if (this.gobal.control.getDistance() >= maxDistance - 5)\n emitter.emit('peoplemanagement-control-maxDistance', null)\n })\n }\n\n private cameraRemoveListener() {\n this.gobal.control.removeEventListener('change', this.cameraListenerHandle)\n }\n}\n\nexport default CylinderManage"],"mappings":"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"}
@@ -7,6 +7,8 @@ declare class PoiManage {
7
7
  readonly poiEventListener: Set<Function>;
8
8
  private wallManage;
9
9
  private interactionManager;
10
+ private poiWidth;
11
+ private poiHeight;
10
12
  constructor(gobal: any);
11
13
  generatePoi(): Promise<void>;
12
14
  getDom(data: any): HTMLDivElement;
@@ -23,6 +23,8 @@ var PoiManage = /*#__PURE__*/function () {
23
23
  _defineProperty(this, "poiEventListener", new Set());
24
24
  _defineProperty(this, "wallManage", void 0);
25
25
  _defineProperty(this, "interactionManager", void 0);
26
+ _defineProperty(this, "poiWidth", void 0);
27
+ _defineProperty(this, "poiHeight", 262);
26
28
  this.gobal = gobal;
27
29
  this.scene = gobal.scene.scene;
28
30
  this.wallManage = gobal.wall;
@@ -33,6 +35,7 @@ var PoiManage = /*#__PURE__*/function () {
33
35
  value: function () {
34
36
  var _generatePoi = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
35
37
  var _this = this;
38
+ var wordLength, xScale;
36
39
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
37
40
  while (1) switch (_context2.prev = _context2.next) {
38
41
  case 0:
@@ -43,8 +46,10 @@ var PoiManage = /*#__PURE__*/function () {
43
46
  while (1) switch (_context.prev = _context.next) {
44
47
  case 0:
45
48
  region = regionMap[key];
49
+ wordLength = region.title.length;
50
+ xScale = Math.max(wordLength * (wordLength > 6 ? 34 : 40), 180) / _this.poiHeight * 80;
46
51
  option = {
47
- scale: [80, 80, 1],
52
+ scale: [xScale, 80, 1],
48
53
  animation: [{
49
54
  type: EAnimationType.grow,
50
55
  duration: 1
@@ -115,7 +120,7 @@ var PoiManage = /*#__PURE__*/function () {
115
120
  _this.addDialogPanel(region, event.point);
116
121
  });
117
122
  _this.poiEventListener.add(unClick);
118
- case 15:
123
+ case 17:
119
124
  case "end":
120
125
  return _context.stop();
121
126
  }
@@ -140,9 +145,10 @@ var PoiManage = /*#__PURE__*/function () {
140
145
  key: "getDom",
141
146
  value: function getDom(data) {
142
147
  var dom = document.createElement('div');
148
+ var wordLength = data.title.length;
143
149
  Object.assign(dom.style, {
144
150
  fontSize: '18px',
145
- backgroundImage: "url(".concat(usePath, "poi2.png)"),
151
+ backgroundImage: "url(".concat(usePath, "poi.png)"),
146
152
  backgroundSize: '100% 100%',
147
153
  backgroundRepeat: 'no-repeat',
148
154
  display: 'flex',
@@ -152,12 +158,22 @@ var PoiManage = /*#__PURE__*/function () {
152
158
  color: '#fff',
153
159
  pointerEvents: 'auto',
154
160
  cursor: 'pointer',
155
- height: '262px',
156
- width: "".concat(data.title.length * 36, "px"),
161
+ height: "".concat(this.poiHeight, "px"),
162
+ minWidth: '180px',
163
+ width: "".concat(wordLength * (wordLength > 6 ? 34 : 40), "px"),
157
164
  padding: '12px 0 0 25px',
158
- fontWeight: 'bold'
165
+ position: 'relative'
159
166
  });
160
- dom.innerText = data.title;
167
+ var img = document.createElement('img');
168
+ img.src = "".concat(usePath, "icon.png");
169
+ img.style.position = 'absolute';
170
+ img.style.left = '25px';
171
+ img.style.top = '5px';
172
+ dom.appendChild(img);
173
+ var label = document.createElement('label');
174
+ label.innerText = data.title;
175
+ label.style.fontWeight = 'bold';
176
+ dom.appendChild(label);
161
177
  return dom;
162
178
  }
163
179
  }, {
@@ -1 +1 @@
1
- {"version":3,"names":["Vector3","use","utils","Css2DPoi","EAnimationType","SpritePoi","usePath","regionMap","walllMaterial","PoiManage","gobal","Map","Set","scene","wallManage","wall","interactionManager","storeManagement","get","Object","keys","forEach","key","region","option","scale","animation","type","grow","duration","fadeIn","sprite","getDom","position","copy","fromArray","poi","add","poiMesh","set","id","target","regionPlane","planeMesh","changeWallState","show","dialogPoi","visible","wallMesh","uniforms","value","wallGrowFrame","useframe","addEventListener","unClick","event","reset","addDialogPanel","point","poiEventListener","data","dom","document","createElement","assign","style","fontSize","backgroundImage","backgroundSize","backgroundRepeat","display","justifyContent","alignItems","textAlign","color","pointerEvents","cursor","height","width","title","length","padding","fontWeight","innerText","remove","removeFromParent","f","clear","content","print","clone"],"sources":["../../../src/factory/unit/poi.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { Vector3, use, utils } from '@anov/3d-core'\nimport { Css2DPoi, EAnimationType, SpritePoi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { usePath } from '../3d'\nimport { regionMap } from '../regionData'\nimport type WallManage from './wall'\nimport { walllMaterial } from './wall'\n\nclass PoiManage {\n private gobal: Factory3D\n private scene: Scene\n private dialogPoi: Object3D\n readonly poiMesh: Map<string, Object3D> = new Map()\n readonly poiEventListener: Set<Function> = new Set()\n private wallManage: WallManage\n private interactionManager\n\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 Object.keys(regionMap).forEach(async (key: string) => {\n const region = regionMap[key]\n const option = {\n scale: [80, 80, 1],\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\n this.scene.add(sprite)\n this.poiMesh.set(region.poi.id, sprite)\n\n // @ts-ignore\n const target = this.gobal.regionPlane.planeMesh.get(region.id)\n\n // 绑定事件\n this.interactionManager.add(sprite)\n const changeWallState = (show) => {\n if (this.dialogPoi?.visible)\n return\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = show\n walllMaterial.uniforms.grow.value = 0\n\n if (show) {\n let wallGrowFrame\n\n if (wallGrowFrame)\n wallGrowFrame()\n\n wallGrowFrame = use.useframe(() => {\n walllMaterial.uniforms.grow.value += 3\n\n if (walllMaterial.uniforms.grow.value > 50)\n wallGrowFrame()\n })\n }\n }\n\n target.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n\n sprite.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n\n target.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n\n sprite.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n\n const unClick = sprite.addEventListener('click', (event) => {\n if (!sprite.visible)\n return\n this.reset()\n\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = true\n // 隐藏当前POI点\n sprite.visible = false\n\n // let wallGrowFrame\n\n // if (wallGrowFrame)\n // wallGrowFrame()\n\n // walllMaterial.uniforms.grow.value = 0\n\n // wallGrowFrame = use.useframe(() => {\n // walllMaterial.uniforms.grow.value += 3\n // })\n\n this.addDialogPanel(region, event.point)\n }) as Function\n this.poiEventListener.add(unClick)\n })\n }\n\n getDom(data) {\n const dom = document.createElement('div')\n Object.assign(dom.style, {\n fontSize: '18px',\n backgroundImage: `url(${usePath}poi2.png)`,\n backgroundSize: '100% 100%',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-start',\n textAlign: 'center',\n color: '#fff',\n pointerEvents: 'auto',\n cursor: 'pointer',\n height: '262px',\n width: `${data.title.length * 36}px`,\n padding: '12px 0 0 25px',\n fontWeight: 'bold',\n })\n dom.innerText = data.title\n return dom\n }\n\n remove() {\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n this.interactionManager.remove(poi)\n poi.removeFromParent()\n poi.remove()\n })\n // 取消事件监听\n this.poiEventListener.forEach((f) => {\n f()\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n this.poiMesh.clear()\n this.poiEventListener.clear()\n }\n\n reset() {\n // 控制POI点的隐藏、显示\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n poi.visible = true\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n // 控制光墙的隐藏、显示\n this.wallManage?.wallMesh.forEach((wall) => {\n wall.visible = false\n })\n }\n\n private addDialogPanel(data, position) {\n // 添加面板\n this.dialogPoi = new Css2DPoi({ title: data.title, content: data.poi.content }, {\n animation: [{\n type: EAnimationType.grow,\n duration: 1,\n }, {\n type: EAnimationType.fadeIn,\n duration: 0.3,\n }, {\n type: EAnimationType.print,\n duration: 0.02,\n }],\n })\n this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)))\n this.scene.add(this.dialogPoi)\n\n this.interactionManager.add(this.dialogPoi)\n this.dialogPoi.addEventListener('click', () => {\n this.dialogPoi.remove()\n this.dialogPoi.removeFromParent()\n this.dialogPoi = null\n this.reset()\n })\n }\n}\n\nexport default PoiManage"],"mappings":"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"}
1
+ {"version":3,"names":["Vector3","use","utils","Css2DPoi","EAnimationType","SpritePoi","usePath","regionMap","walllMaterial","PoiManage","gobal","Map","Set","scene","wallManage","wall","interactionManager","storeManagement","get","Object","keys","forEach","key","region","wordLength","title","length","xScale","Math","max","poiHeight","option","scale","animation","type","grow","duration","fadeIn","sprite","getDom","position","copy","fromArray","poi","add","poiMesh","set","id","target","regionPlane","planeMesh","changeWallState","show","dialogPoi","visible","wallMesh","uniforms","value","wallGrowFrame","useframe","addEventListener","unClick","event","reset","addDialogPanel","point","poiEventListener","data","dom","document","createElement","assign","style","fontSize","backgroundImage","backgroundSize","backgroundRepeat","display","justifyContent","alignItems","textAlign","color","pointerEvents","cursor","height","minWidth","width","padding","img","src","left","top","appendChild","label","innerText","fontWeight","remove","removeFromParent","f","clear","content","print","clone"],"sources":["../../../src/factory/unit/poi.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { Vector3, use, utils } from '@anov/3d-core'\nimport { Css2DPoi, EAnimationType, SpritePoi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { usePath } from '../3d'\nimport { regionMap } from '../regionData'\nimport type WallManage from './wall'\nimport { walllMaterial } from './wall'\n\nclass PoiManage {\n private gobal: Factory3D\n private scene: Scene\n private dialogPoi: Object3D\n readonly poiMesh: Map<string, Object3D> = new Map()\n readonly poiEventListener: Set<Function> = new Set()\n private wallManage: WallManage\n private interactionManager\n private poiWidth: number\n private poiHeight = 262\n\n constructor(gobal) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.wallManage = gobal.wall\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n async generatePoi() {\n let wordLength, xScale\n Object.keys(regionMap).forEach(async (key: string) => {\n const region = regionMap[key]\n wordLength = region.title.length\n xScale = Math.max(wordLength * (wordLength > 6 ? 34 : 40), 180) / this.poiHeight * 80\n const option = {\n scale: [xScale, 80, 1],\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\n this.scene.add(sprite)\n this.poiMesh.set(region.poi.id, sprite)\n\n // @ts-ignore\n const target = this.gobal.regionPlane.planeMesh.get(region.id)\n\n // 绑定事件\n this.interactionManager.add(sprite)\n const changeWallState = (show) => {\n if (this.dialogPoi?.visible)\n return\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = show\n walllMaterial.uniforms.grow.value = 0\n\n if (show) {\n let wallGrowFrame\n\n if (wallGrowFrame)\n wallGrowFrame()\n\n wallGrowFrame = use.useframe(() => {\n walllMaterial.uniforms.grow.value += 3\n\n if (walllMaterial.uniforms.grow.value > 50)\n wallGrowFrame()\n })\n }\n }\n\n target.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n\n sprite.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n\n target.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n\n sprite.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n\n const unClick = sprite.addEventListener('click', (event) => {\n if (!sprite.visible)\n return\n this.reset()\n\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = true\n // 隐藏当前POI点\n sprite.visible = false\n\n // let wallGrowFrame\n\n // if (wallGrowFrame)\n // wallGrowFrame()\n\n // walllMaterial.uniforms.grow.value = 0\n\n // wallGrowFrame = use.useframe(() => {\n // walllMaterial.uniforms.grow.value += 3\n // })\n\n this.addDialogPanel(region, event.point)\n }) as Function\n this.poiEventListener.add(unClick)\n })\n }\n\n getDom(data) {\n const dom = document.createElement('div')\n const wordLength = data.title.length\n Object.assign(dom.style, {\n fontSize: '18px',\n backgroundImage: `url(${usePath}poi.png)`,\n backgroundSize: '100% 100%',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-start',\n textAlign: 'center',\n color: '#fff',\n pointerEvents: 'auto',\n cursor: 'pointer',\n height: `${this.poiHeight}px`,\n minWidth: '180px',\n width: `${wordLength * (wordLength > 6 ? 34 : 40)}px`,\n padding: '12px 0 0 25px',\n position: 'relative',\n })\n const img = document.createElement('img')\n img.src = `${usePath}icon.png`\n img.style.position = 'absolute'\n img.style.left = '25px'\n img.style.top = '5px'\n dom.appendChild(img)\n const label = document.createElement('label')\n label.innerText = data.title\n label.style.fontWeight = 'bold'\n dom.appendChild(label)\n return dom\n }\n\n remove() {\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n this.interactionManager.remove(poi)\n poi.removeFromParent()\n poi.remove()\n })\n // 取消事件监听\n this.poiEventListener.forEach((f) => {\n f()\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n this.poiMesh.clear()\n this.poiEventListener.clear()\n }\n\n reset() {\n // 控制POI点的隐藏、显示\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n poi.visible = true\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n // 控制光墙的隐藏、显示\n this.wallManage?.wallMesh.forEach((wall) => {\n wall.visible = false\n })\n }\n\n private addDialogPanel(data, position) {\n // 添加面板\n this.dialogPoi = new Css2DPoi({ title: data.title, content: data.poi.content }, {\n animation: [{\n type: EAnimationType.grow,\n duration: 1,\n }, {\n type: EAnimationType.fadeIn,\n duration: 0.3,\n }, {\n type: EAnimationType.print,\n duration: 0.02,\n }],\n })\n this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)))\n this.scene.add(this.dialogPoi)\n\n this.interactionManager.add(this.dialogPoi)\n this.dialogPoi.addEventListener('click', () => {\n this.dialogPoi.remove()\n this.dialogPoi.removeFromParent()\n this.dialogPoi = null\n this.reset()\n })\n }\n}\n\nexport default PoiManage"],"mappings":"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"}
@@ -20,10 +20,25 @@ export var createAreaBoundingBox = function createAreaBoundingBox(points, height
20
20
  box.getCenter(center);
21
21
  var size = new Vector3();
22
22
  box.getSize(size);
23
- var newSize = size.multiplyScalar(3);
24
- var newMin = center.clone().sub(newSize.clone().divideScalar(2));
25
- var newMax = center.clone().add(newSize.clone().divideScalar(2));
26
- box.set(newMin, newMax);
23
+ // size.multiplyScalar(2) // 将尺寸乘以2
24
+
25
+ // const newSize = size.multiplyScalar(3)
26
+
27
+ // const newMin = center.clone().sub(newSize.clone().divideScalar(2))
28
+ // const newMax = center.clone().add(newSize.clone().divideScalar(2))
29
+ // box.set(newMin, newMax)
30
+
31
+ // 3. 计算新的最小和最大顶点
32
+ var min = new Vector3().copy(center).sub(size.clone().multiply(new Vector3(0.5, 0.5, 1)));
33
+ var max = new Vector3().copy(center).add(size.clone().multiply(new Vector3(0.5, 2, 1)));
34
+
35
+ // 4. 更新 Box3 的最小和最大顶点
36
+ box.min.copy(min);
37
+ box.max.copy(max);
38
+
39
+ // const { scene } = use.useScene()
40
+ // scene.add(new Box3Helper(box, new Color(0xFF0000)))
41
+
27
42
  return box;
28
43
  };
29
44
 
@@ -1 +1 @@
1
- {"version":3,"names":["Box3","Vector3","createRoundLineWallMesh","createAreaBoundingBox","points","height","mesh","map","item","fromArray","radius","close","box","setFromObject","center","getCenter","size","getSize","newSize","multiplyScalar","newMin","clone","sub","divideScalar","newMax","add","set","collisionDetection","position","containsPoint"],"sources":["../../../src/factory/utils/areaBoundingBox.ts"],"sourcesContent":["import { Box3, Vector3 } from '@anov/3d-core'\nimport { createRoundLineWallMesh } from '@anov/3d-ability'\n\n/**\n * create areaBounding box\n * @param points\n * @param height\n */\nexport const createAreaBoundingBox = (points: number[][], height: number) => {\n const mesh = createRoundLineWallMesh(\n points.map((item) => {\n return new Vector3().fromArray([item[0], item[1], item[2]])\n }),\n {\n radius: 0,\n close: true,\n height,\n },\n )\n\n const box = new Box3()\n\n box.setFromObject(mesh)\n\n const center = new Vector3()\n box.getCenter(center)\n\n const size = new Vector3()\n box.getSize(size)\n\n const newSize = size.multiplyScalar(3)\n\n const newMin = center.clone().sub(newSize.clone().divideScalar(2))\n const newMax = center.clone().add(newSize.clone().divideScalar(2))\n\n box.set(newMin, newMax)\n\n return box\n}\n\n/**\n * collisionDetection\n * @param box\n * @param position\n * @returns\n */\nexport const collisionDetection = (box: Box3, position: Vector3) => {\n return box.containsPoint(position)\n}\n"],"mappings":"AAAA,SAASA,IAAI,EAAEC,OAAO,QAAQ,eAAe;AAC7C,SAASC,uBAAuB,QAAQ,kBAAkB;;AAE1D;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqB,CAAIC,MAAkB,EAAEC,MAAc,EAAK;EAC3E,IAAMC,IAAI,GAAGJ,uBAAuB,CAClCE,MAAM,CAACG,GAAG,CAAC,UAACC,IAAI,EAAK;IACnB,OAAO,IAAIP,OAAO,EAAE,CAACQ,SAAS,CAAC,CAACD,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7D,CAAC,CAAC,EACF;IACEE,MAAM,EAAE,CAAC;IACTC,KAAK,EAAE,IAAI;IACXN,MAAM,EAANA;EACF,CAAC,CACF;EAED,IAAMO,GAAG,GAAG,IAAIZ,IAAI,EAAE;EAEtBY,GAAG,CAACC,aAAa,CAACP,IAAI,CAAC;EAEvB,IAAMQ,MAAM,GAAG,IAAIb,OAAO,EAAE;EAC5BW,GAAG,CAACG,SAAS,CAACD,MAAM,CAAC;EAErB,IAAME,IAAI,GAAG,IAAIf,OAAO,EAAE;EAC1BW,GAAG,CAACK,OAAO,CAACD,IAAI,CAAC;EAEjB,IAAME,OAAO,GAAGF,IAAI,CAACG,cAAc,CAAC,CAAC,CAAC;EAEtC,IAAMC,MAAM,GAAGN,MAAM,CAACO,KAAK,EAAE,CAACC,GAAG,CAACJ,OAAO,CAACG,KAAK,EAAE,CAACE,YAAY,CAAC,CAAC,CAAC,CAAC;EAClE,IAAMC,MAAM,GAAGV,MAAM,CAACO,KAAK,EAAE,CAACI,GAAG,CAACP,OAAO,CAACG,KAAK,EAAE,CAACE,YAAY,CAAC,CAAC,CAAC,CAAC;EAElEX,GAAG,CAACc,GAAG,CAACN,MAAM,EAAEI,MAAM,CAAC;EAEvB,OAAOZ,GAAG;AACZ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMe,kBAAkB,GAAG,SAArBA,kBAAkB,CAAIf,GAAS,EAAEgB,QAAiB,EAAK;EAClE,OAAOhB,GAAG,CAACiB,aAAa,CAACD,QAAQ,CAAC;AACpC,CAAC"}
1
+ {"version":3,"names":["Box3","Vector3","createRoundLineWallMesh","createAreaBoundingBox","points","height","mesh","map","item","fromArray","radius","close","box","setFromObject","center","getCenter","size","getSize","min","copy","sub","clone","multiply","max","add","collisionDetection","position","containsPoint"],"sources":["../../../src/factory/utils/areaBoundingBox.ts"],"sourcesContent":["import { Box3, Box3Helper, Color, Vector3, use } from '@anov/3d-core'\nimport { createRoundLineWallMesh } from '@anov/3d-ability'\n\n/**\n * create areaBounding box\n * @param points\n * @param height\n */\nexport const createAreaBoundingBox = (points: number[][], height: number) => {\n const mesh = createRoundLineWallMesh(\n points.map((item) => {\n return new Vector3().fromArray([item[0], item[1], item[2]])\n }),\n {\n radius: 0,\n close: true,\n height,\n },\n )\n\n const box = new Box3()\n\n box.setFromObject(mesh)\n\n const center = new Vector3()\n box.getCenter(center)\n\n const size = new Vector3()\n box.getSize(size)\n // size.multiplyScalar(2) // 将尺寸乘以2\n\n // const newSize = size.multiplyScalar(3)\n\n // const newMin = center.clone().sub(newSize.clone().divideScalar(2))\n // const newMax = center.clone().add(newSize.clone().divideScalar(2))\n // box.set(newMin, newMax)\n\n // 3. 计算新的最小和最大顶点\n const min = new Vector3().copy(center).sub(size.clone().multiply(new Vector3(0.5, 0.5, 1)))\n const max = new Vector3().copy(center).add(size.clone().multiply(new Vector3(0.5, 2, 1)))\n\n // 4. 更新 Box3 的最小和最大顶点\n box.min.copy(min)\n box.max.copy(max)\n\n // const { scene } = use.useScene()\n // scene.add(new Box3Helper(box, new Color(0xFF0000)))\n\n return box\n}\n\n/**\n * collisionDetection\n * @param box\n * @param position\n * @returns\n */\nexport const collisionDetection = (box: Box3, position: Vector3) => {\n return box.containsPoint(position)\n}\n"],"mappings":"AAAA,SAASA,IAAI,EAAqBC,OAAO,QAAa,eAAe;AACrE,SAASC,uBAAuB,QAAQ,kBAAkB;;AAE1D;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqB,CAAIC,MAAkB,EAAEC,MAAc,EAAK;EAC3E,IAAMC,IAAI,GAAGJ,uBAAuB,CAClCE,MAAM,CAACG,GAAG,CAAC,UAACC,IAAI,EAAK;IACnB,OAAO,IAAIP,OAAO,EAAE,CAACQ,SAAS,CAAC,CAACD,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7D,CAAC,CAAC,EACF;IACEE,MAAM,EAAE,CAAC;IACTC,KAAK,EAAE,IAAI;IACXN,MAAM,EAANA;EACF,CAAC,CACF;EAED,IAAMO,GAAG,GAAG,IAAIZ,IAAI,EAAE;EAEtBY,GAAG,CAACC,aAAa,CAACP,IAAI,CAAC;EAEvB,IAAMQ,MAAM,GAAG,IAAIb,OAAO,EAAE;EAC5BW,GAAG,CAACG,SAAS,CAACD,MAAM,CAAC;EAErB,IAAME,IAAI,GAAG,IAAIf,OAAO,EAAE;EAC1BW,GAAG,CAACK,OAAO,CAACD,IAAI,CAAC;EACjB;;EAEA;;EAEA;EACA;EACA;;EAEA;EACA,IAAME,GAAG,GAAG,IAAIjB,OAAO,EAAE,CAACkB,IAAI,CAACL,MAAM,CAAC,CAACM,GAAG,CAACJ,IAAI,CAACK,KAAK,EAAE,CAACC,QAAQ,CAAC,IAAIrB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAC3F,IAAMsB,GAAG,GAAG,IAAItB,OAAO,EAAE,CAACkB,IAAI,CAACL,MAAM,CAAC,CAACU,GAAG,CAACR,IAAI,CAACK,KAAK,EAAE,CAACC,QAAQ,CAAC,IAAIrB,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;EAEzF;EACAW,GAAG,CAACM,GAAG,CAACC,IAAI,CAACD,GAAG,CAAC;EACjBN,GAAG,CAACW,GAAG,CAACJ,IAAI,CAACI,GAAG,CAAC;;EAEjB;EACA;;EAEA,OAAOX,GAAG;AACZ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMa,kBAAkB,GAAG,SAArBA,kBAAkB,CAAIb,GAAS,EAAEc,QAAiB,EAAK;EAClE,OAAOd,GAAG,CAACe,aAAa,CAACD,QAAQ,CAAC;AACpC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d",
3
- "version": "0.0.61",
3
+ "version": "0.0.63",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",