3.4 KiB
3.4 KiB
Cosmo 实施计划
Stage 1: 后端基础框架和数据获取
Goal: 搭建 FastAPI 后端,实现从 NASA JPL Horizons 获取数据 Success Criteria:
- FastAPI 服务器成功启动
- 能够查询并返回探测器和行星的坐标数据
- API 端点返回正确的 JSON 格式数据
Tests:
- 手动测试 API 端点
/api/celestial/positions - 验证返回的坐标数据格式正确
- 测试时间范围查询功能
Status: Complete
Tasks:
- 创建后端项目结构
- 配置 FastAPI 和依赖
- 实现 Horizons 数据查询服务
- 实现 API 路由
- 测试数据获取功能
Stage 2: 前端基础框架和简单 3D 场景
Goal: 搭建 React + Three.js 前端,显示基础 3D 场景 Success Criteria:
- Vite + React + TypeScript 项目成功运行
- Three.js 场景正确渲染
- 显示太阳(中心)和几个彩色球体代表行星
Tests:
- 前端开发服务器启动无错误
- 浏览器中能看到 3D 场景
- 鼠标可以旋转和缩放视角
Status: Complete
Tasks:
- 创建 React + Vite 项目
- 配置 TypeScript 和 Tailwind
- 安装 Three.js 相关依赖
- 实现基础 3D 场景组件
- 添加 OrbitControls
Stage 3: 集成真实数据和轨道线
Goal: 前后端集成,使用真实 NASA 数据更新 3D 场景 Success Criteria:
- 前端成功调用后端 API
- 行星和探测器显示在正确的位置(基于真实数据)
- 显示探测器的轨道线
Tests:
- 验证行星位置与 NASA 数据一致
- 轨道线平滑连续
- 时间选择器改变时数据正确更新
Status: Complete
Tasks:
- 实现前端 API 调用
- 创建数据 hooks
- 根据真实坐标渲染天体
- 实现轨道线绘制
- 添加时间选择器组件
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)
注意事项
- 每个阶段完成后必须确保代码能编译和运行
- 遵循增量开发,不要跳跃阶段
- 遇到问题最多尝试3次,然后调整方案
- 所有提交必须通过基本测试