From bfb10b42c5fb6bc9f751f88f9351bfc19c6380a4 Mon Sep 17 00:00:00 2001 From: 黄何裕 <1053952480@qq.com> Date: 星期二, 16 七月 2024 14:57:50 +0800 Subject: [PATCH] 样式调整 --- src/views/screen/components/screen-map-three/experience/camera.js | 41 +++++++++++++++++++++++++++++++---------- 1 files changed, 31 insertions(+), 10 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..fdf3223 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,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.1, 200); this.instance.position.set(0, 45, 45); this.scene.add(this.instance); // const help = new CameraHelper(this.instance); @@ -26,15 +26,15 @@ this.controls = new OrbitControls(this.instance, this.canvas); this.controls.target.set(0, 0, 5); 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 +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