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