# 代码仙人Vue+threejs 开源包 **Repository Path**: SJZchina/VueAndThreejsByCodeXr ## Basic Information - **Project Name**: 代码仙人Vue+threejs 开源包 - **Description**: 本项目是一个基于 Vue3 + Three.js 的 3D 场景封装包,提供了两种开发模式:离散性开发和聚合性开发。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2026-03-16 - **Last Updated**: 2026-03-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Vue3 + Three.js 封装包使用文档 ## 项目架构 本项目是一个基于 Vue3 + Three.js 的 3D 场景封装包,提供了两种开发模式:离散性开发和聚合性开发。 ### 目录结构 ``` newVue3/ ├── public/ │ ├── threejs/ │ │ ├── draco/ # DRACO 压缩解码器 │ │ ├── img/ # 环境贴图等图片资源 │ │ └── model/ # 3D 模型文件 ├── src/ │ ├── components/ │ │ └── common/ │ │ └── threejs/ │ │ ├── int/ # 核心封装类 │ │ └── single/ # 聚合性开发模式 │ ├── views/ │ │ ├── demo/ # 示例页面 │ │ │ ├── Hello World/ # 离散性开发示例 │ │ │ └── single/ # 聚合性开发示例 │ ├── router/ # 路由配置 │ ├── main.js # 应用入口 │ └── App.vue # 根组件 ``` ## 开发模式 ### 1. 离散性开发模式 **特点**: - 配置文件和组件分离,更灵活可控 - 适合复杂场景和需要深度定制的项目 - 每个功能模块可单独修改和扩展 **使用示例**: ```vue ``` **核心文件**: - `createScene.js` - 场景创建和初始化逻辑 - `loading.vue` - 加载进度组件 - 可根据需要修改任何部分 ### 2. 聚合性开发模式 **特点**: - 单标签快速生成完整 3D 场景 - 传入参数即可配置,使用简单 - 适合快速原型开发和简单场景 **使用示例**: ```vue ``` **核心文件**: - `SingleScene.vue` - 聚合性场景组件 - `singleScene.js` - 场景逻辑封装 - `Loading.vue` - 加载进度组件 ## 核心功能 ### 1. 模型加载与进度显示 - 支持 GLB 模型加载 - 实时显示加载进度 - 自动处理模型材质和光照 ### 2. 相机控制 - 支持轨道控制器 - 可自定义相机位置 - 提供相机测试模式 ### 3. 渲染设置 - 支持曝光度调整 - 支持多种色调映射模式 - 自动处理环境贴图 ### 4. 状态管理 - 使用 Pinia 管理场景状态 - 组件销毁时自动重置状态 - 支持多场景独立状态管理 ## API 参考 ### SingleScene 组件 **属性**: - `modelPath` - 模型文件路径(必填) - `cameraPosition` - 相机位置,默认 `{ x: 0, y: 0, z: 10 }` - `storeId` - 状态管理ID,默认 `'singleScene'` - `width` - 场景宽度,默认 `'100%'` - `height` - 场景高度,默认 `'80vh'` - `backgroundColor` - 背景颜色,默认 `'black'` - `isCameraTest` - 是否启用相机位置测试,默认 `false` - `exposure` - 曝光度,默认 `1.0` **事件**: - `ready` - 场景初始化完成 - `cameraReady` - 相机准备就绪 **方法**: - `getScene()` - 获取场景实例 - `getStore()` - 获取状态管理实例 - `getCamera()` - 获取相机实例 ### 离散性开发 API **createScene 函数**: - 参数: - `dom` - 渲染容器 - `loadingProgress` - 加载进度引用 - `modelLoading` - 加载状态引用 - 返回:场景实例,包含 `destroy()` 方法 ## 最佳实践 1. **选择合适的开发模式**: - 简单场景使用聚合性开发模式 - 复杂场景使用离散性开发模式 2. **性能优化**: - 合理设置相机位置和视角 - 优化模型文件大小 - 使用 DRACO 压缩减少模型加载时间 3. **错误处理**: - 确保模型文件路径正确 - 处理网络请求失败的情况 - 组件销毁时正确清理资源 ## 示例场景 ### 1. 无人机展示 - 使用离散性开发模式 - 展示复杂的 3D 模型 - 包含自定义加载逻辑 ### 2. 产品展示 - 使用聚合性开发模式 - 快速创建产品展示场景 - 支持曝光度调整 ## 总结 本封装包提供了两种灵活的开发模式,满足不同场景的需求: - **离散性开发**:适合需要深度定制和复杂逻辑的场景 - **聚合性开发**:适合快速原型开发和简单场景 通过合理选择开发模式,可以显著提高 3D 场景的开发效率和代码可维护性。