generated from template/astro-simple-template
125 lines
4.1 KiB
Markdown
125 lines
4.1 KiB
Markdown
# 💖 ThinkYou - 浪漫的3D星空表白应用
|
||
|
||
一个使用 Three.js 创建的浪漫3D星空场景,"我想你了"等表白文字会从远处飞向屏幕,营造出唯美的视觉效果。
|
||
|
||
## ✨ 主要功能
|
||
|
||
### 🌟 核心效果
|
||
- **动态文字消息**: "我想你了"、"想念你"、"好想你"、"爱你"等文字从远处飞向相机
|
||
- **美丽的文字框**: 每条消息都有发光的粉色边框和优雅的渐变背景
|
||
- **流畅的动画**: 文字在飞行过程中有轻微的漂浮效果
|
||
- **智能淡出**: 文字接近相机时会逐渐透明直到消失
|
||
|
||
### 🌌 背景效果
|
||
- **动态星空**: 包含数千颗不同颜色的星星,缓慢旋转营造深邃感
|
||
- **流星效果**: 随机生成的流星从天空划过,每颗流星都有独特的颜色和轨迹
|
||
- **相机摇摆**: 相机轻微摇摆模拟真实观感
|
||
- **渐变背景**: 深邃的紫色到黑色渐变背景
|
||
|
||
### 🎮 交互控制
|
||
- **播放/暂停**: 控制整个动画的播放状态
|
||
- **手动生成**: 点击按钮立即生成新的表白消息
|
||
- **速度调节**: 调整消息飞行的速度 (0.1x - 4x)
|
||
- **星空密度**: 调整星星数量 (100 - 5000颗)
|
||
- **键盘控制**:
|
||
- `空格键`: 播放/暂停
|
||
- `回车键`: 生成新消息
|
||
- `H键`: 显示/隐藏控制面板
|
||
- `R键`: 重置场景
|
||
|
||
### 🎨 视觉优化
|
||
- **响应式设计**: 完美适配各种屏幕尺寸
|
||
- **优雅的UI**: 半透明面板配合毛玻璃效果
|
||
- **发光效果**: 按钮、文字、边框的发光效果
|
||
- **流畅动画**: 60fps流畅动画,使用requestAnimationFrame优化
|
||
- **性能优化**: 智能的对象池管理,及时清理不需要的资源
|
||
|
||
## 🚀 技术栈
|
||
|
||
- **React 19**: 现代化的React Hooks
|
||
- **Three.js**: 3D图形渲染引擎
|
||
- **TypeScript**: 类型安全的开发体验
|
||
- **Tailwind CSS**: 现代化的CSS框架
|
||
- **Astro**: 静态站点生成器
|
||
|
||
## 📱 使用方法
|
||
|
||
1. **启动项目**:
|
||
```bash
|
||
pnpm dev
|
||
```
|
||
|
||
2. **访问页面**:
|
||
- 主页: `http://localhost:4321/`
|
||
- 演示页: `http://localhost:4321/demos/base`
|
||
|
||
3. **控制操作**:
|
||
- 使用左侧控制面板调整各种参数
|
||
- 使用键盘快捷键进行快速操作
|
||
- 右侧信息面板显示当前效果说明
|
||
|
||
## 🎯 使用场景
|
||
|
||
- **表白神器**: 向心爱的人表达爱意
|
||
- **纪念日礼物**: 特殊日子的浪漫惊喜
|
||
- **网站装饰**: 为网站添加浪漫的背景效果
|
||
- **教学演示**: Three.js和React结合的教学案例
|
||
- **创意展示**: 展示3D编程技能的作品集
|
||
|
||
## 🛠️ 自定义配置
|
||
|
||
### 消息内容
|
||
在 `generateMessage` 函数中修改 `messages` 数组来自定义表白文字:
|
||
|
||
```typescript
|
||
const messages = ['我想你了', '想念你', '好想你', '爱你', '❤️', '你的自定义文字']
|
||
```
|
||
|
||
### 颜色主题
|
||
在 `createTextGeometry` 函数中修改颜色配置:
|
||
|
||
```typescript
|
||
// 边框颜色
|
||
context.strokeStyle = '#ff69b4' // 粉色
|
||
context.shadowColor = '#ff69b4'
|
||
|
||
// 背景渐变
|
||
gradient.addColorStop(0, 'rgba(20, 20, 40, 0.9)')
|
||
gradient.addColorStop(1, 'rgba(40, 20, 60, 0.9)')
|
||
```
|
||
|
||
### 星空效果
|
||
在 `createStarField` 函数中调整星星的颜色分布和大小。
|
||
|
||
## 🔧 性能优化
|
||
|
||
- 使用 `useCallback` 优化函数重新创建
|
||
- 智能的对象生命周期管理
|
||
- 及时清理不需要的Three.js资源
|
||
- 使用 `requestAnimationFrame` 实现流畅动画
|
||
- 响应式的星空密度控制
|
||
|
||
## 📦 项目结构
|
||
|
||
```
|
||
src/
|
||
├── thinkyou/
|
||
│ └── index.tsx # 主要的Three.js组件
|
||
├── styles/
|
||
│ ├── global.css # 全局样式
|
||
│ └── thinkyou.css # ThinkYou应用专用样式
|
||
└── pages/
|
||
├── index.astro # 主页
|
||
└── demos/
|
||
└── base.astro # 演示页面
|
||
```
|
||
|
||
## 💝 特别说明
|
||
|
||
这个项目充满了对爱情的美好憧憬,每一个细节都经过精心设计,希望能为你的表白之路增添一份浪漫的色彩。无论是向心爱的人表达爱意,还是在特殊的日子里制造惊喜,这个应用都能成为你表达情感的完美工具。
|
||
|
||
愿所有的爱意都能被温柔以待,愿每一份真情都能得到回应。💖
|
||
|
||
---
|
||
|
||
*"我想你了" - 这简单的四个字,承载着最深的思念。* |