139 lines
3.4 KiB
Markdown
139 lines
3.4 KiB
Markdown
# Cosmo 实施计划
|
||
|
||
## Stage 1: 后端基础框架和数据获取
|
||
**Goal**: 搭建 FastAPI 后端,实现从 NASA JPL Horizons 获取数据
|
||
**Success Criteria**:
|
||
- FastAPI 服务器成功启动
|
||
- 能够查询并返回探测器和行星的坐标数据
|
||
- API 端点返回正确的 JSON 格式数据
|
||
|
||
**Tests**:
|
||
- 手动测试 API 端点 `/api/celestial/positions`
|
||
- 验证返回的坐标数据格式正确
|
||
- 测试时间范围查询功能
|
||
|
||
**Status**: Complete
|
||
|
||
**Tasks**:
|
||
- [x] 创建后端项目结构
|
||
- [x] 配置 FastAPI 和依赖
|
||
- [x] 实现 Horizons 数据查询服务
|
||
- [x] 实现 API 路由
|
||
- [x] 测试数据获取功能
|
||
|
||
---
|
||
|
||
## Stage 2: 前端基础框架和简单 3D 场景
|
||
**Goal**: 搭建 React + Three.js 前端,显示基础 3D 场景
|
||
**Success Criteria**:
|
||
- Vite + React + TypeScript 项目成功运行
|
||
- Three.js 场景正确渲染
|
||
- 显示太阳(中心)和几个彩色球体代表行星
|
||
|
||
**Tests**:
|
||
- 前端开发服务器启动无错误
|
||
- 浏览器中能看到 3D 场景
|
||
- 鼠标可以旋转和缩放视角
|
||
|
||
**Status**: Complete
|
||
|
||
**Tasks**:
|
||
- [x] 创建 React + Vite 项目
|
||
- [x] 配置 TypeScript 和 Tailwind
|
||
- [x] 安装 Three.js 相关依赖
|
||
- [x] 实现基础 3D 场景组件
|
||
- [x] 添加 OrbitControls
|
||
|
||
---
|
||
|
||
## Stage 3: 集成真实数据和轨道线
|
||
**Goal**: 前后端集成,使用真实 NASA 数据更新 3D 场景
|
||
**Success Criteria**:
|
||
- 前端成功调用后端 API
|
||
- 行星和探测器显示在正确的位置(基于真实数据)
|
||
- 显示探测器的轨道线
|
||
|
||
**Tests**:
|
||
- 验证行星位置与 NASA 数据一致
|
||
- 轨道线平滑连续
|
||
- 时间选择器改变时数据正确更新
|
||
|
||
**Status**: Complete
|
||
|
||
**Tasks**:
|
||
- [x] 实现前端 API 调用
|
||
- [x] 创建数据 hooks
|
||
- [x] 根据真实坐标渲染天体
|
||
- [ ] 实现轨道线绘制
|
||
- [ ] 添加时间选择器组件
|
||
|
||
---
|
||
|
||
## Stage 4: 进阶交互和信息面板
|
||
**Goal**: 实现点击聚焦和信息展示功能
|
||
**Success Criteria**:
|
||
- 点击天体后相机平滑飞向目标
|
||
- 显示天体详细信息面板
|
||
- 计算并显示探测器与最近行星的距离
|
||
|
||
**Tests**:
|
||
- 点击不同天体,相机正确聚焦
|
||
- 信息面板显示正确数据
|
||
- 距离计算准确
|
||
|
||
**Status**: Not Started
|
||
|
||
**Tasks**:
|
||
- [ ] 实现 3D 物体点击检测(Raycaster)
|
||
- [ ] 实现相机平滑动画
|
||
- [ ] 创建信息面板组件
|
||
- [ ] 实现距离计算逻辑
|
||
- [ ] 添加天体列表侧边栏
|
||
|
||
---
|
||
|
||
## Stage 5: 视觉优化和模型加载
|
||
**Goal**: 加载真实纹理和 3D 模型,优化视觉效果
|
||
**Success Criteria**:
|
||
- 行星显示真实纹理贴图
|
||
- 探测器使用 NASA 3D 模型
|
||
- 动态缩放功能正常工作
|
||
- 添加星空背景
|
||
|
||
**Tests**:
|
||
- 纹理正确加载并渲染
|
||
- 3D 模型显示正常
|
||
- 远近缩放时物体大小合理
|
||
- 整体视觉效果良好
|
||
|
||
**Status**: Not Started
|
||
|
||
**Tasks**:
|
||
- [ ] 下载并配置行星纹理
|
||
- [ ] 下载并配置探测器 3D 模型
|
||
- [ ] 实现 GLTFLoader 加载模型
|
||
- [ ] 实现动态缩放逻辑
|
||
- [ ] 添加星空背景(Skybox)
|
||
- [ ] 性能优化
|
||
|
||
---
|
||
|
||
## 进度跟踪
|
||
|
||
- **当前阶段**: Stage 3 (基本完成)
|
||
- **已完成**: 2/5 阶段 (Stage 1 & 2 完全完成,Stage 3 大部分完成)
|
||
- **预计完成时间**: 待定
|
||
|
||
**下一步**:
|
||
- 实现轨道线绘制
|
||
- 添加时间选择器组件
|
||
- 进阶交互功能 (Stage 4)
|
||
- 视觉优化 (Stage 5)
|
||
|
||
## 注意事项
|
||
|
||
1. 每个阶段完成后必须确保代码能编译和运行
|
||
2. 遵循增量开发,不要跳跃阶段
|
||
3. 遇到问题最多尝试3次,然后调整方案
|
||
4. 所有提交必须通过基本测试
|