From 16eb67ab6b103663d30cad9ba74360f982e131cb Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 03 九月 2024 10:34:59 +0800
Subject: [PATCH] 自定义列显隐控制

---
 src/views/screen/components/screen-map-three/experience/camera.js |   47 +++++++++++++++++++++++++++++++++++------------
 1 files changed, 35 insertions(+), 12 deletions(-)

diff --git a/src/views/screen/components/screen-map-three/experience/camera.js b/src/views/screen/components/screen-map-three/experience/camera.js
index 792beeb..1acbd7c 100644
--- a/src/views/screen/components/screen-map-three/experience/camera.js
+++ b/src/views/screen/components/screen-map-three/experience/camera.js
@@ -1,3 +1,4 @@
+import { MathUtils } from 'three';
 import { PerspectiveCamera, CameraHelper } from 'three';
 import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';
 
@@ -5,36 +6,37 @@
 export default class Camera {
     constructor(experience) {
         this.experience = experience;
-        this.scene = this.experience.scene;
-        this.canvas = this.experience.canvas;
-        this.sizes = this.experience.sizes;
+        this.scene = experience.scene;
+        this.canvas = experience.canvas;
+        this.sizes = experience.sizes;
         this.setInstance();
         this.setOrbitControls();
-
     }
 
     // 璁剧疆閫忚鐩告満
     setInstance() {
-        this.instance = new PerspectiveCamera(45,this.sizes.width / this.sizes.height, 0.001, 90000000);
-        this.instance.position.set(0, 45, 45);
+        this.instance = new PerspectiveCamera(45, this.sizes.width / this.sizes.height, 0.1, 200);
+        this.instance.position.set(0,30,25);
         this.scene.add(this.instance);
+        this.instance.position.z = 10;
+        this.instance.position.x = 0;
         // const help = new CameraHelper(this.instance);
         // this.scene.add(help);
     }
 
     setOrbitControls() {
         this.controls = new OrbitControls(this.instance, this.canvas);
-        this.controls.target.set(0, 0, 5);
+        this.controls.target.set(0, 0, 1);
         this.controls.enableDamping = true;
+        this.controls.minDistance = 20;
+        this.controls.maxDistance = 80;
+        this.controls.maxPolarAngle = MathUtils.degToRad(80);
+        // this.controls.maxPolarAngle = (-Math.PI / 2);
     }
 
     resize() {
         // 閲嶆柊璁$畻姣斾緥
-        this.cameraAspect = (this.sizes.width / this.sizes.height) * this.frustrum;
-        this.instance.left = -this.cameraAspect / 2;
-        this.instance.right = this.cameraAspect / 2;
-        this.instance.top = this.frustrum / 2;
-        this.instance.bottom = -this.frustrum  / 2;
+        this.cameraAspect = this.sizes.width / this.sizes.height;
         this.instance.updateProjectionMatrix();
     }
 
@@ -42,4 +44,25 @@
     update() {
         this.controls.update();
     }
+
+    destroy() {
+        this.disposeObject();
+        this.removeObject();
+        this.resetObject();
+    }
+
+    disposeObject() {
+        this.controls.dispose();
+    }
+
+    removeObject() {
+        this.scene.remove(this.instance);
+    }
+    resetObject() {
+        this.controls = null;
+        this.instance = null;
+        this.scene = null;
+        this.canvas = null;
+        this.sizes = null;
+    }
 }
\ No newline at end of file

--
Gitblit v1.8.0