three初始化加载模,居中且大小固定
方案一:
动态居中模型位置,缩放到一定大小
modelCenter(object) {
let scale = this.modelSize(object);
object.scale.set(scale, scale, scale);
let box = new THREE.Box3().setFromObject(object);
let mdlen = box.max.x - box.min.x;
let mdwid = box.max.z - box.min.z;
let mdhei = box.max.y - box.min.y;
let x1 = box.min.x + mdlen / 2;
let y1 = box.min.y + mdhei / 2;
let z1 = box.min.z + mdwid / 2;
object.position.set(-x1, -y1, -z1);
},
modelSize(object) {
let box = new THREE.Box3().setFromObject(object);
let mdlen = box.max.x - box.min.x;
let mdwid = box.max.z - box.min.z;
let mdhei = box.max.y - box.min.y;
let max = Math.max(mdlen, mdwid, mdhei);
let scale = 110 / max;
return scale;
},
方案二:
控制相机位置,剧中模型,缩放到一定大小
let box = new THREE.Box3();
let obj=this.scene.getObjectByName('person');
box.setFromObject(obj);
let center = new THREE.Vector3();
box.getCenter(center)
let sphere = new THREE.Sphere();
let distance = box.getBoundingSphere(sphere).radius;
let delta = new THREE.Vector3();
delta.set(0, 0, 1);//向量初始化
delta.applyQuaternion(this.camera.quaternion);//四元数
delta.multiplyScalar(distance * 4);
this.camera.position.copy(center).add(delta)
如有疑问,可加qq群学习讨论:910316886