From 02d9ba3ef1495f490dd8a8075fa63e2b94db8390 Mon Sep 17 00:00:00 2001 From: trp <2477421791@qq.com> Date: Fri, 15 Dec 2023 02:43:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=94=90=E6=B6=A6=E5=B9=B3=EF=BC=9A=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E8=A7=86=E8=A7=92=E5=8F=98=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/badGasInfo/BadGasInfo.vue | 216 ++++++++++-------- .../tunnelScene/editEquComp/editDialog.vue | 3 + .../content/tunnelScene/sceneClass/demo.js | 3 +- .../handleOrbitControlsChange/index.js | 36 +++ .../sceneClass/handleRLclick/handleRclick.js | 52 ++++- 5 files changed, 201 insertions(+), 109 deletions(-) diff --git a/src/components/content/badGasInfo/BadGasInfo.vue b/src/components/content/badGasInfo/BadGasInfo.vue index 7d8334b..b887d15 100644 --- a/src/components/content/badGasInfo/BadGasInfo.vue +++ b/src/components/content/badGasInfo/BadGasInfo.vue @@ -2,38 +2,46 @@
有害气体
- +
- +
-
- -
+
diff --git a/src/components/content/tunnelScene/sceneClass/demo.js b/src/components/content/tunnelScene/sceneClass/demo.js index 95389f7..3e99473 100644 --- a/src/components/content/tunnelScene/sceneClass/demo.js +++ b/src/components/content/tunnelScene/sceneClass/demo.js @@ -164,6 +164,7 @@ export default class Demo { // 匹配附着点(这里不适合对单个模型进行保存,批量对模型进行操作) if (child.isMesh && /^point+/.test(child.name)) { this.points.push(child); + console.log(child.name); // 改变为基础材质 child.material = new this.THREE.MeshBasicMaterial(); child.scale.set(0.01, 0.01, 0.01); @@ -316,7 +317,7 @@ export default class Demo { this.tag3CSS2DObj.element.style.display = "none"; this.tagCSS2DObj.scale.set(0.1, 0.1, 0.1); this.tag2CSS2DObj.scale.set(0.1, 0.1, 0.1); - this.tag3CSS2DObj.scale.set(0.025, 0.025, 0.025); //编辑框 + this.tag3CSS2DObj.scale.set(0.02, 0.02, 0.02); //编辑框 this.tag3CSS2DObj.position.set(10, 0, 10); this.tagCSS2DObj.scale.set(0.5, 0.5, 0.5); } diff --git a/src/components/content/tunnelScene/sceneClass/handleOrbitControlsChange/index.js b/src/components/content/tunnelScene/sceneClass/handleOrbitControlsChange/index.js index aa8f4c4..c4d9c20 100644 --- a/src/components/content/tunnelScene/sceneClass/handleOrbitControlsChange/index.js +++ b/src/components/content/tunnelScene/sceneClass/handleOrbitControlsChange/index.js @@ -6,4 +6,40 @@ export function handleEndChange(e) { // 围绕点到照相机的位置 // console.log("结束"); // console.log(this.orbitControls.object.position); + // console.log(this.camera.position, this.position); + // console.log( + // this.camera.position.x - this.position.x, + // this.camera.position.y - this.position.y, + // this.camera.position.z - this.position.z + // ); + // const cx = + // (this.scene + // .getObjectByName("point_001_br") + // .getWorldPosition(new this.THREE.Vector3()).x + + // this.scene + // .getObjectByName("point_001_bl") + // .getWorldPosition(new this.THREE.Vector3()).x) / + // 2; + // const cy = + // (this.scene + // .getObjectByName("point_001_br") + // .getWorldPosition(new this.THREE.Vector3()).y + + // this.scene + // .getObjectByName("point_001_bl") + // .getWorldPosition(new this.THREE.Vector3()).y) / + // 2; + // const cz = + // (this.scene + // .getObjectByName("point_001_br") + // .getWorldPosition(new this.THREE.Vector3()).z + + // this.scene + // .getObjectByName("point_001_bl") + // .getWorldPosition(new this.THREE.Vector3()).z) / + // 2; + // console.log(cx, cy, cz); + // console.log( + // this.scene + // .getObjectByName("point_001_tr") + // .getWorldPosition(new this.THREE.Vector3()) + // ); } diff --git a/src/components/content/tunnelScene/sceneClass/handleRLclick/handleRclick.js b/src/components/content/tunnelScene/sceneClass/handleRLclick/handleRclick.js index cfd51af..5228618 100644 --- a/src/components/content/tunnelScene/sceneClass/handleRLclick/handleRclick.js +++ b/src/components/content/tunnelScene/sceneClass/handleRLclick/handleRclick.js @@ -17,17 +17,40 @@ export function handleRClick(targetPoint) { worldPosition.z ); this.isControlOrbit(false); - - this.tag3CSS2DObj.translateX(-3); - this.tag3CSS2DObj.translateZ(10); + this.position = worldPosition; + if (/tr$/.test(targetPoint.name)) { + this.tag3CSS2DObj.translateX(3); + this.tag3CSS2DObj.translateZ(10); + this.tag3CSS2DObj.translateY(-5); + intoAnimation.call(this, 4.31, -2.55, -10); + } else if (/tl$/.test(targetPoint.name)) { + this.tag3CSS2DObj.translateX(-3); + this.tag3CSS2DObj.translateZ(10); + this.tag3CSS2DObj.translateY(-5); + intoAnimation.call(this, -4.31, -2.55, -10); + } else if (/tc$/.test(targetPoint.name)) { + this.tag3CSS2DObj.translateX(0); + this.tag3CSS2DObj.translateZ(10); + this.tag3CSS2DObj.translateY(-8); + intoAnimation.call(this, 0, -2.55, -10); + } else if (/br$/.test(targetPoint.name)) { + this.tag3CSS2DObj.translateX(4); + this.tag3CSS2DObj.translateZ(6); + this.tag3CSS2DObj.translateY(5); + intoAnimation.call(this, 4.31, 5, -11); + } else if (/bl$/.test(targetPoint.name)) { + this.tag3CSS2DObj.translateX(-4); + this.tag3CSS2DObj.translateZ(6); + this.tag3CSS2DObj.translateY(5); + intoAnimation.call(this, -4.31, 5, -11); + } this.scene.add(this.tag3CSS2DObj); - intoAnimation.call(this); // 返回给编辑组件的回调函数 this.editDev(targetPoint); } -function intoAnimation() { +function intoAnimation(x = -10, y = 3, z = -12) { const worldP = this.targetPoint.getWorldPosition(new this.THREE.Vector3()); const positionOBj = this.camera.position; const start = this.orbitControls.target; @@ -38,15 +61,21 @@ function intoAnimation() { xTarget: start.x, yTarget: start.y, zTarget: start.z, + ctlTargetX: 0, + ctlTargetY: 0, + ctlTargetZ: 0, }); this.intoPointAnimation.to( { - x: worldP.x - 10, - y: worldP.y + 3, - z: worldP.z - 12, - xTarget: worldP.x, - yTarget: worldP.y, - zTarget: worldP.z, + x: worldP.x + x, + y: worldP.y + y, + z: worldP.z + z, + xTarget: -5, + yTarget: 8.814, + zTarget: worldP.z + 30, + ctlTargetX: 0, + ctlTargetY: 0, + ctlTargetZ: 120, }, 600 ); @@ -54,6 +83,7 @@ function intoAnimation() { this.intoPointAnimation.onUpdate((obj) => { this.camera.position.set(obj.x, obj.y, obj.z); this.camera.lookAt(obj.xTarget, obj.yTarget, obj.zTarget); + // this.orbitControls.target.set(obj.x, obj.y, -obj.z); this.orbitControls.target.set(obj.xTarget, obj.yTarget, obj.zTarget); }); }