🔄 简单旋转测试
测试时间:
问题:模型上下颠倒
原因:GLB模型是Z轴朝上,Three.js是Y轴朝上
✅ 推荐解决方案
在模型加载后添加以下代码:
// 方法1:绕X轴旋转 -90度(最常用)
model.rotation.x = -Math.PI / 2;
// 方法2:绕X轴旋转 +90度
model.rotation.x = Math.PI / 2;
// 方法3:绕X轴旋转 180度
model.rotation.x = Math.PI;
🔧 在项目中的具体修改
编辑文件:src/scenes/Map3DScene.vue
找到模型加载部分,添加旋转代码:
// 在 model.position.sub(center) 之后添加:
model.rotation.x = -Math.PI / 2; // 或者尝试 +Math.PI / 2
📋 完整代码示例
async function loadModel() {
const loader = new GLTFLoader()
const gltf = await loader.loadAsync(props.modelUrl)
const model = gltf.scene
// 计算包围盒并居中
const box = new THREE.Box3().setFromObject(model)
const center = box.getCenter(new THREE.Vector3())
model.position.sub(center)
// 修复上下颠倒问题
model.rotation.x = -Math.PI / 2;
const group = new THREE.Group()
group.add(model)
group.position.set(0, 0, 0)
group.rotation.y = THREE.MathUtils.degToRad(5)
map.add(group)
modelGroup = group
}
提示:如果 -90度 不正确,请尝试 +90度 或 180度。
不同的模型可能需要不同的旋转角度。
🎯 测试步骤
- 修改
Map3DScene.vue 添加旋转代码
- 运行开发服务器
npm run dev
- 查看模型方向是否正确
- 如不正确,尝试其他旋转角度