📦 GLTFLoader 模型加载
学习如何加载和处理 3D 模型
⚠️ 注意:本示例使用程序化生成的模型演示 GLTFLoader 的使用方式。实际项目中,你需要加载真实的 .glb 或 .gltf 文件。
📊 模型信息
模型名称:
机器人
网格数量:
0
顶点数量:
0
包围盒大小:
0
🎮 操作说明
• 鼠标拖拽:旋转视角
• 鼠标滚轮:缩放
• 右键拖拽:平移
• GUI 面板:控制模型
💡 GLTFLoader 使用
// 创建加载器
const loader = new THREE.GLTFLoader();
// 加载模型
loader.load(
'model.glb',
(gltf) => {
// 成功回调
scene.add(gltf.scene);
},
(progress) => {
// 进度回调
const percent =
(progress.loaded / progress.total) * 100;
console.log(`进度: ${percent}%`);
},
(error) => {
// 错误回调
console.error('加载失败:', error);
}
);
🔧 模型处理技巧
• 自动居中:计算包围盒中心
• 自动缩放:根据包围盒大小缩放
• 遍历处理:使用 traverse() 处理所有子对象
• 启用阴影:设置 castShadow 和 receiveShadow
📝 代码示例
// 自动居中和缩放
const box = new THREE.Box3()
.setFromObject(model);
const center = box.getCenter(new THREE.Vector3());
const size = box.getSize(new THREE.Vector3());
// 居中
model.position.sub(center);
// 缩放到 2 单位
const maxDim = Math.max(size.x, size.y, size.z);
model.scale.setScalar(2 / maxDim);