计算图形包围盒尺寸。
function computeScale(geometry) {
geometry.computeBoundingBox();
var maxX = geometry.boundingBox.max.x;
var minX = geometry.boundingBox.min.x;
var maxY = geometry.boundingBox.max.y;
var minY = geometry.boundingBox.min.y;
var maxZ = geometry.boundingBox.max.z;
var minZ = geometry.boundingBox.min.z;
var maxDis = Math.sqrt((maxX - minX) * (maxX - minX) + (maxY - minY) * (maxY - minY) + (maxZ - minZ) * (maxZ - minZ)) / 2;
var scale = 1.0 / maxDis;
return scale;
}
然后在模型的loader写
geometry.computeVertexNormals();
geometry.center();
material = new THREE.MeshPhongMaterial({color: 0xffff00, shading: THREE.SmoothShading});
mesh = new THREE.Mesh(geometry, material);
var scale = computeScale(geometry);
mesh.scale.multiplyScalar(scale);
mesh.position.set(0, 0, 0);
scene.add(mesh);