three初始化加载模,居中且大小固定

发布时间 2023-03-24 11:25:53作者: web与webGL

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