From 7d8fabb5feddf7d2daffd2452781c515d2eb13cd Mon Sep 17 00:00:00 2001 From: ZhangXianQiang <1135831638@qq.com> Date: 星期三, 17 四月 2024 15:34:52 +0800 Subject: [PATCH] Merge branch 'dev-threejs' --- src/views/screen/components/screen-map-three/experience/camera.js | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 50 insertions(+), 0 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 new file mode 100644 index 0000000..8a541f2 --- /dev/null +++ b/src/views/screen/components/screen-map-three/experience/camera.js @@ -0,0 +1,50 @@ +import {MathUtils} from 'three'; +import { PerspectiveCamera, CameraHelper } from 'three'; +import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'; + + +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.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.scene.add(this.instance); + // 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.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.instance.updateProjectionMatrix(); + } + + + update() { + this.controls.update(); + } +} \ No newline at end of file -- Gitblit v1.8.0