# Threejs流光全栈底座 **Repository Path**: xiefan2333/VueAndThreejsByCodeXr ## Basic Information - **Project Name**: Threejs流光全栈底座 - **Description**: 本项目是一个基于 Vue3 + Three.js 的 3D 前后端 全栈创作底座 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: threejs流光底座-前端版本-创世1.0 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 2 - **Created**: 2026-03-14 - **Last Updated**: 2026-04-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Vue3 + Three.js 封装包 - 前端底座 ## 项目简介 本项目是一个基于 Vue3 + Three.js 的前端 3D 可视化解决方案,提供了完整的 3D 场景管理、模型加载、相机控制和渲染优化功能。项目采用模块化设计,支持多种开发模式,满足不同场景的需求。 ## 技术栈 - **前端框架**:Vue 3 (Composition API) - **3D 引擎**:Three.js - **状态管理**:Pinia - **路由管理**:Vue Router - **UI 组件**:Element Plus - **样式预处理**:Less - **构建工具**:Vite - **代码高亮**:Highlight.js - **HTTP 客户端**:Axios ## 项目结构 ``` VueAndThreejsByCodeXr/ ├── public/ │ ├── threejs/ # Three.js 相关资源 │ │ ├── draco/ # DRACO 压缩解码器 │ │ ├── img/ # 环境贴图等图片资源 │ │ └── model/ # 3D 模型文件 ├── src/ │ ├── assets/ # 静态资源 │ ├── components/ # 组件 │ │ └── common/threejs/ # Three.js 相关组件 │ │ ├── int/ # 核心封装类 │ │ └── single/ # 聚合性开发模式 │ ├── router/ # 路由配置 │ ├── views/ # 页面 │ │ ├── Introduction/ # 介绍页面 │ │ ├── index/ # 首页 │ │ ├── media/ # 媒体资源 │ │ ├── tool/ # 工具脚本 │ │ └── work/ # 项目工作区 │ ├── App.vue # 根组件 │ ├── main.js # 应用入口 │ └── style.css # 全局样式 ``` ## 核心功能 ### 1. 两种开发模式 - **离散性开发**:配置文件和组件分离,适合复杂场景和深度定制 - **聚合性开发**:单标签快速生成完整 3D 场景,适合快速原型开发 ### 2. 模型加载与管理 - 支持 GLB 模型加载 - 实时显示加载进度 - 自动处理模型材质和光照 - 支持 DRACO 压缩减少模型加载时间 ### 3. 相机控制 - 支持轨道控制器 - 可自定义相机位置 - 提供相机测试模式 - 支持相机位置保存和恢复 ### 4. 渲染优化 - 支持曝光度调整 - 支持多种色调映射模式 - 自动处理环境贴图 - 性能优化和内存管理 ### 5. 交互功能 - 模型点击交互 - 鼠标事件处理 - 场景状态管理 ### 6. 项目管理 - 多项目工作区 - 项目配置保存和加载 - 相机调试工具 - 截图功能 ## 快速开始 ### 安装依赖 ```bash npm install ``` ### 开发模式 ```bash npm run dev ``` ### 构建生产版本 ```bash npm run build ``` ### 预览生产版本 ```bash npm run preview ``` ## 开发模式 ### 1. 离散性开发模式 **特点**: - 配置文件和组件分离,更灵活可控 - 适合复杂场景和需要深度定制的项目 - 每个功能模块可单独修改和扩展 **使用示例**: ```vue ``` ### 2. 聚合性开发模式 **特点**: - 单标签快速生成完整 3D 场景 - 传入参数即可配置,使用简单 - 适合快速原型开发和简单场景 **使用示例**: ```vue ``` ## 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. **错误处理**: - 确保模型文件路径正确 - 处理网络请求失败的情况 - 添加适当的加载状态和错误提示 4. **项目管理**: - 使用工作区管理多个项目 - 保存相机位置和场景配置 - 利用截图功能记录场景状态 ## 示例场景 ### 1. 无人机展示 - 使用离散性开发模式 - 展示复杂的 3D 模型 - 包含自定义加载逻辑 ### 2. 产品展示 - 使用聚合性开发模式 - 快速创建产品展示场景 - 支持曝光度调整 ### 3. 项目工作区 - 多项目管理 - 相机调试工具 - 场景配置保存和加载 ## 部署指南 1. **构建生产版本**: ```bash npm run build ``` 2. **部署到服务器**: - 将 `dist` 目录上传到服务器 - 配置服务器静态文件服务 - 确保服务器支持现代 JavaScript 特性 3. **CDN 配置**: - 对于大型模型和资源,建议使用 CDN 加速 - 配置适当的缓存策略 ## 总结 本封装包提供了完整的 Vue3 + Three.js 前端 3D 解决方案,通过灵活的开发模式和丰富的功能,满足不同场景的需求: - **离散性开发**:适合需要深度定制和复杂逻辑的场景 - **聚合性开发**:适合快速原型开发和简单场景 - **项目管理**:支持多项目工作区和配置管理 - **性能优化**:提供多种渲染优化和内存管理功能 通过合理使用本封装包,可以显著提高 3D 场景的开发效率和代码可维护性,为前端 3D 应用开发提供强大的基础支持。