Appearance
初始化模型视角
便于每次进入不同模型的时候,视角是最佳状况,不需要重新设置摄像头的位置
js
/**
* @description: 初始化模型视角 便于查看模型
* @param {*} model 传入一个模型
* @param {*} orbit 传入场景的轨道控制器
*/
export function modelToCamera(model, orbit) {
const modelBox = new THREE.Box3().setFromObject(model);
const mdlen = modelBox.max.x - modelBox.min.x;
const mdhei = modelBox.max.y - modelBox.min.y;
const mdwid = modelBox.max.z - modelBox.min.z;
const x1 = modelBox.min.x + mdlen / 2;
const y1 = modelBox.min.y + mdhei / 2;
const z1 = modelBox.min.z + mdwid / 2;
model.position.set(-x1, -y1, -z1); // 将模型原点归零
const diagonal = Math.sqrt(Math.sqrt(mdlen ** 2 + mdwid ** 2) ** 2 + mdhei ** 2);
orbit.object.position.set(diagonal, mdhei + diagonal, diagonal); // 设置相机位置
orbit.target.set(0, 0, 0); // 设置相机的视角方向,看向模型的中心点
orbit.update(); // 更新相机
orbit.object.far = 2 * diagonal > 100000 ? 2 * diagonal : 100000;
orbit.object.near = 1;
orbit.object.updateProjectionMatrix();
}