From 39e7d257caeae7c241544af7281be1d70747bb8a Mon Sep 17 00:00:00 2001 From: ZhangXianQiang <1135831638@qq.com> Date: 星期五, 19 四月 2024 15:23:07 +0800 Subject: [PATCH] Merge branch 'dev-threejs' --- src/views/screen/components/screen-map-three/experience/camera.js | 38 +++++++++++++++++++++++++++----------- 1 files changed, 27 insertions(+), 11 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 8a541f2..64c604f 100644 --- a/src/views/screen/components/screen-map-three/experience/camera.js +++ b/src/views/screen/components/screen-map-three/experience/camera.js @@ -1,4 +1,4 @@ -import {MathUtils} from 'three'; +import { MathUtils } from 'three'; import { PerspectiveCamera, CameraHelper } from 'three'; import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'; @@ -6,17 +6,16 @@ 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 = new PerspectiveCamera(45, this.sizes.width / this.sizes.height, 0.001, 90000000); this.instance.position.set(0, 45, 45); this.scene.add(this.instance); // const help = new CameraHelper(this.instance); @@ -35,11 +34,7 @@ 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(); } @@ -47,4 +42,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