babylonjs在几个摄像头之间切换
更新时间: 2025-08-19 14:11:40
// camera相关参数
const originAlpha = 2.05 // 初始的摄像头alpha角
const originBeta = 1.4 // 初始的摄像头beta角
const originRadius = 218 // 初始摄像头半径
const cameraTarget = new Vector3(116.15147170914668,-0.5445536148509973,97.83251507258815) // 摄像头的target
const lowerRadiusLimit = 5 // 最小摄像头半径
const upperRadiusLimit = 376 // 最大摄像头半径
const lowerBetaLimit = 0.1 // 最小beta角
const upperBetaLimit = 1.56 // 最大beta角
let arcCamera,movingCamera
setCamera()
function setCamera() {
arcCamera = new ArcRotateCamera("camera", originAlpha, originBeta, originRadius, cameraTarget, scene);
arcCamera.attachControl(canvas, true);
arcCamera.lowerRadiusLimit = lowerRadiusLimit; // 最小距离
arcCamera.upperRadiusLimit = upperRadiusLimit; // 最大距离
arcCamera.lowerBetaLimit = lowerBetaLimit; // 最小仰角
arcCamera.upperBetaLimit = upperBetaLimit; // 最大仰角
movingCamera = new UniversalCamera("movingCamera", new Vector3(), scene);
movingCamera.updateUpVectorFromRotation = true;
movingCamera.rotationQuaternion = new Quaternion();
}
// 切换相机
function switchToArcCamera() {
scene.activeCamera.detachControl(canvas); // 先解绑当前相机
scene.activeCamera = arcCamera;
arcCamera.attachControl(canvas, true);
}
function switchToMovingCamera() {
scene.activeCamera.detachControl(canvas); // 先解绑当前相机
scene.activeCamera = movingCamera;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38