Vue2 结合 Three.js 加载 GLB 模型教程

在基础 3D 场景搭建完成后,实际开发中常需加载外部 3D 模型(如 GLB 格式)丰富场景内容。以下将详细讲解在 Vue2 + Three.js 环境中加载 GLB 模型的完整流程,包括依赖引入、模型加载、状态管理及交互优化。


一、添加 GLB 加载依赖

GLB 模型加载需要 Three.js 配套的加载器,需额外引入 GLTFLoader(GLB 是 GLTF 格式的二进制版本,共用同一加载器)和加载进度辅助工具 DRACOLoader(可选,用于加载压缩后的 GLB 模型)。

1. 引入依赖库

<!-- 引入GLTF/GLB加载器 -->
<script src="https://unpkg.com/three@0.128.0/examples/js/loaders/GLTFLoader.js"></script>

2. 初始化加载器(在 Vue 实例中)

data 中添加加载器相关变量:

data() {
    return {
        // 原有变量...
        loader: null, // GLB加载器实例
    };
}

在mounted中初始化加载模型:

mounted() {
    // 其他初始化方法...
    // 加载模型
    this.loadModel();
},

initThreeScene 方法中创建加载器:

initThreeScene() {
    // 原有场景、相机、渲染器、控制器初始化...
    
    // 创建加载器
    this.loader = new THREE.GLTFLoader();
    
    // 原有初始化内容(创建初始物体、光源、启动动画)
}

二、实现 GLB 模型加载功能

1. 编写加载方法

在 Vue 实例的 methods 中添加模型加载方法,支持指定模型路径:

methods: {
    // 加载GLB模型核心方法
    loadModel() {
        // 加载glb模型
        this.loader.load('https://threejs.org/examples/models/gltf/DamagedHelmet/glTF/DamagedHelmet.gltf', (gltf) => {
            // 将模型添加到场景
            this.scene.add(gltf.scene);
        }
        );
    },

三、常见问题与注意事项

  1. 跨域问题:本地开发时,若直接打开HTML文件加载本地GLB模型,会出现跨域错误。解决方案:
  2. 模型加载失败
  3. 模型显示异常
  4. 性能优化

总结

通过以上步骤,已实现 Vue2 + Three.js 环境中 GLB 模型的加载、显示、动画播放和交互功能。核心流程可概括为:

  1. 引入 GLTF 加载器依赖;
  2. 初始化加载器并配置解码路径;
  3. 编写加载方法;

这种实现方式保留了 Vue2 的响应式特性和 Three.js 的 3D 渲染能力,可灵活应用于产品展示、虚拟展厅、游戏等交互式 3D 应用场景。


提示

GLB 模型加载是 Three.js 开发中的重要环节,掌握这一技能可以让你在 Vue2 项目中创建更加丰富和交互性的 3D 场景。