I have a glb file with five PerspectiveCamera cameras (this glb file is derived from other models), and now I want to take data from one of the other cameras to update my current camera.
How do I do this, what properties do I update, such as position, rotation, up, anything else? And how does lookat copy updates?
setModel('./model/SM_CQ_AC_ZHGL_01_摄像头.glb').then((res: any) => {
let pipeInnner_camera_folder = gui.addFolder('管廊内部镜头');
let pipeInnner_camera_names: any = {};
pipeInnner_camera_names['Camera_JT_00'] = () => {
let perspectiveCamera = initCamera as THREE.PerspectiveCamera;
setCameraAnimation(camera, perspectiveCamera.position, 2000, () => {
camera.rotation.copy(perspectiveCamera.rotation);
});
};
res.model.traverse((object3D: THREE.Object3D) => {
if (object3D.type === 'PerspectiveCamera') {
pipeInnner_camera_names[object3D.name] = () => {
let perspectiveCamera = object3D as THREE.PerspectiveCamera;
camera.up.copy(perspectiveCamera.up);
const cameraDirection = new THREE.Vector3();
perspectiveCamera.getWorldDirection(cameraDirection);
camera.lookAt(camera.position.clone().add(cameraDirection));
camera.position.copy(perspectiveCamera.position);
camera.rotation.copy(perspectiveCamera.rotation);
};
}
});
Object.keys(pipeInnner_camera_names).forEach((item) => {
pipeInnner_camera_folder.add(pipeInnner_camera_names, item);
});
});
SM_CQ_AC_ZHGL_01_摄像头.glb (2.9 KB)