| 
					
				 | 
			
			
				@@ -1,6 +1,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import * as THREE from 'three'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { getTextCanvas, addEnvMap } from '/@/utils/threejs/util'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { getTextCanvas, addEnvMap, setModalCenter } from '/@/utils/threejs/util'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { CSS3DSprite } from 'three/examples/jsm/renderers/CSS3DRenderer.js'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import * as dat from 'dat.gui'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const gui = new dat.GUI(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 gui.domElement.style = 'position:absolute;top:100px;left:10px;z-index:99999999999999'; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -16,6 +16,7 @@ class Nitrogen { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   playerStartClickTime1 = new Date().getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   playerStartClickTime2 = new Date().getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   deviceRunState = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  nitrogenNum = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   constructor(model) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this.model = model; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -65,149 +66,22 @@ class Nitrogen { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 设置模型位置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   setModalPosition() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this.group?.scale.set(22, 22, 22); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this.group?.position.set(-25, 25, 15); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  addText(selectData) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (!this.group) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (this.nitrogenNum == 4) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.group.position.set(0, -17, 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.group?.scale.set(24.0, 24.0, 24.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (this.nitrogenNum == 3) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.group.position.set(0, -12, 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.group?.scale.set(24.0, 24.0, 24.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (this.nitrogenNum == 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.group.position.set(0, 0.42, 1.21); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.group?.scale.set(24.0, 24.0, 24.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (this.nitrogenNum == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.group.position.set(0, 8, 3.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.group?.scale.set(24.0, 24.0, 24.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const textArr = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        text: `龙门式测风装置`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        font: 'normal 32px Arial', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        color: '#009900', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        strokeStyle: '#002200', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        x: 170, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        y: 40, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        text: `风量(m3/min):`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        font: 'normal 29px Arial', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        color: '#009900', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        strokeStyle: '#002200', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        x: 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        y: 115, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        text: `${selectData.m3 ? selectData.m3 : '-'}`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        font: 'normal 29px Arial', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        color: '#009900', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        strokeStyle: '#002200', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        x: 200, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        y: 115, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        text: `气源压力(MPa): `, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        font: 'normal 29px Arial', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        color: '#009900', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        strokeStyle: '#002200', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        x: 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        y: 182, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        text: `${selectData.temperature ? selectData.temperature : '-'}`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        font: 'normal 29px Arial', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        color: '#009900', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        strokeStyle: '#002200', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        x: 215, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        y: 182, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        text: `Va(m/s):`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        font: 'normal 29px Arial', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        color: '#009900', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        strokeStyle: '#002200', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        x: 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        y: 245, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        text: `${selectData.va ? selectData.va : '-'}`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        font: 'normal 29px Arial', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        color: '#009900', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        strokeStyle: '#002200', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        x: 130, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        y: 246, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        text: `V1(m/s):`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        font: 'normal 28px Arial', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        color: '#009900', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        strokeStyle: '#002200', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        x: 331, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        y: 115, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        text: `${selectData.incipientWindSpeed1 ? selectData.incipientWindSpeed1 : '-'}`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        font: 'normal 28px Arial', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        color: '#009900', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        strokeStyle: '#002200', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        x: 455, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        y: 115, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        text: `V2(m/s):`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        font: 'normal 28px Arial', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        color: '#009900', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        strokeStyle: '#002200', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        x: 330, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        y: 182, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        text: `${selectData.incipientWindSpeed2 ? selectData.incipientWindSpeed2 : '-'}`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        font: 'normal 28px Arial', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        color: '#009900', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        strokeStyle: '#002200', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        x: 452, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        y: 182, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        text: `V3(m/s):`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        font: 'normal 28px Arial', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        color: '#009900', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        strokeStyle: '#002200', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        x: 330, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        y: 245, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        text: `${selectData.incipientWindSpeed3 ? selectData.incipientWindSpeed3 : '-'}`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        font: 'normal 28px Arial', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        color: '#009900', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        strokeStyle: '#002200', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        x: 452, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        y: 245, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        text: `煤炭科学技术研究院有限公司研制`, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        font: 'normal 28px Arial', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        color: '#009900', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        strokeStyle: '#002200', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        x: 60, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        y: 302, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    getTextCanvas(560, 346, textArr, '').then((canvas: HTMLCanvasElement) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const textMap = new THREE.CanvasTexture(canvas); // 关键一步 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const textMaterial = new THREE.MeshBasicMaterial({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        map: textMap, // 设置纹理贴图 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        transparent: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        side: THREE.DoubleSide, // 这里是双面渲染的意思 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      textMaterial.blending = THREE.CustomBlending; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const monitorPlane = this.group?.getObjectByName('monitorText'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (monitorPlane) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        monitorPlane.material = textMaterial; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const planeGeometry = new THREE.PlaneGeometry(560, 346); // 平面3维几何体PlaneGeometry 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const planeMesh = new THREE.Mesh(planeGeometry, textMaterial); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        planeMesh.name = 'monitorText'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        planeMesh.scale.set(0.0022, 0.0022, 0.0022); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        planeMesh.position.set(3.25, -0.002, -0.41); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.group?.add(planeMesh); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   /* 提取风门序列帧,初始化前后门动画 */ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -254,6 +128,40 @@ class Nitrogen { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     model.material = transparentMaterial; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  addCssText = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (this.nitrogenNum > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for (let i = 0; i < this.nitrogenNum; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const nitrogenModal = this.group.getObjectByName('nitrogenModal' + i) as THREE.Object3D; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!nitrogenModal.getObjectByName('monitorNitrogenText')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const element = document.getElementById('nitrogenMonitor' + (i + 1)) as HTMLElement; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          element.style.top = '0px'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          element.style.left = '0px'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const nitrogenMonitorCSS3D = new CSS3DSprite(element); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          nitrogenMonitorCSS3D.name = 'monitorNitrogenText'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          nitrogenMonitorCSS3D.scale.set(0.003, 0.003, 0.003); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (i == 0) nitrogenMonitorCSS3D.position.set(-0.89, 0.31, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (i == 1) nitrogenMonitorCSS3D.position.set(-0.89, 0.31, 0.04); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (i == 2) nitrogenMonitorCSS3D.position.set(-0.89, 0.31, 0.08); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (i == 3) nitrogenMonitorCSS3D.position.set(-0.89, 0.31, 0.12); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          nitrogenModal.add(nitrogenMonitorCSS3D); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!nitrogenModal.getObjectByName('cqgMonitorText')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const element = document.getElementById('cqgMonitor' + (i + 1)) as HTMLElement; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          element.style.top = '0px'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          element.style.left = '0px'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const cqgMonitorCSS3D = new CSS3DSprite(element); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          cqgMonitorCSS3D.name = 'cqgMonitorText'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          cqgMonitorCSS3D.scale.set(0.003, 0.003, 0.003); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (i == 0) cqgMonitorCSS3D.position.set(1.24, 0.49, 0.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (i == 1) cqgMonitorCSS3D.position.set(1.24, 0.49, 0.04); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (i == 2) cqgMonitorCSS3D.position.set(1.24, 0.49, 0.08); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (i == 3) cqgMonitorCSS3D.position.set(1.24, 0.49, 0.12); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          nitrogenModal.add(cqgMonitorCSS3D); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    * 处理杯子的纹理和杯子外层透明壳子 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    */ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -292,99 +200,27 @@ class Nitrogen { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     withVolume.push(transparentWrap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  mountedThree() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  mountedThree(nitrogenNum) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.nitrogenNum = nitrogenNum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return new Promise((resolve) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (nitrogenNum < 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        resolve(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.model.setModel([this.modelName]).then(async (gltf) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const nitrogenGroup = new THREE.Object3D(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const nitrogenModal = gltf[0].clone(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        nitrogenModal.name = 'nitrogenModal0'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        nitrogenModal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const nitrogenModal1 = gltf[0].clone(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        nitrogenModal1.name = 'nitrogenModal1'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        nitrogenModal1.position.set(0, 0, 1.29); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const texture = await addEnvMap('royal_esplanade_1k', this.model); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const material = new THREE.MeshPhysicalMaterial({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          side: THREE.DoubleSide, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // specularColor: new Color("#ffffff"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // color: new Color(0xffa000), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          color: 0xffffff, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //类似透明度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // transmission: 0.5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          opacity: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          metalness: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          roughness: 0.12, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ior: 1.8, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          thickness: 0.39, //透过看物体的模糊程度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          specularIntensity: 1.1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // color: new THREE.Color(0x72531e), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          transmission: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // envMap: texture, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        nitrogenModal.children[0].children[1].material = new THREE.MeshPhysicalMaterial({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          side: THREE.DoubleSide, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          transparent: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          opacity: 0.1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          color: 0xffffff, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //类似透明度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // transmission: 0.5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          metalness: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          roughness: 0.2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ior: 1.3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          thickness: 1.2, //透过看物体的模糊程度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          specularIntensity: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // color: new THREE.Color(0x72531e), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          transmission: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        gui.add(material, 'metalness', 0, 1).onChange(function (value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          material.metalness = Number(value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        gui.add(material, 'roughness', 0, 1).onChange(function (value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          material.roughness = Number(value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        gui.add(material, 'thickness', 0, 2).onChange(function (value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          material.thickness = Number(value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        gui.add(material, 'specularIntensity', 0, 2).onChange(function (value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          material.specularIntensity = Number(value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        gui.add(material, 'transmission', 0, 1).onChange(function (value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          material.transmission = Number(value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        gui.add(material, 'ior', 0, 3).onChange(function (value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          material.ior = Number(value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        nitrogenModal.children[0].children[0].material = material; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        nitrogenGroup.add(nitrogenModal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        nitrogenGroup.add(nitrogenModal1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (let i = 0; i < nitrogenNum; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const nitrogenModal = gltf[0].clone(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          nitrogenModal.name = 'nitrogenModal' + i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          nitrogenModal.position.set(0, 0, -1.29 * i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          nitrogenGroup.add(nitrogenModal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.group = nitrogenGroup; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.group.name = this.modelName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // this.handleGlassAndWrap( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   this.group, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   withVolume, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   glass1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   roughnessParams, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   10, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   new THREE.Vector3(60, -2.4, -120), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   new THREE.Vector3(1.5, 1, -3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // this.handleGlassAndWrap( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   objects, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   withVolume, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   glass3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   { ...roughnessParams, color: new THREE.Color(0x72531e), transmission: 0.7 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   5, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //   new THREE.Vector3(-42, -2.5, -97) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.group.name = this.modelName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        setModalCenter(this.group); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.addCssText(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.setModalPosition(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.addLight(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         resolve(null); 
			 |