From e5d499ae6a4e6b320f71c49987b76cc11f6bc1e4 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期二, 28 十月 2025 14:13:10 +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