新增 汽车360度全景展示移动端Web应用

- 实现触摸滑动旋转查看汽车360度全景
- 添加惯性滑动效果和自动旋转展示功能
- 实现全屏沉浸式体验和精美Loading动画
- 添加Python视频帧提取脚本和浏览器端提取工具
- 包含本地HTTP服务器和完整项目文档
This commit is contained in:
2026-03-29 00:54:34 +08:00
commit 26defd9d69
345 changed files with 1513 additions and 0 deletions

118
README.md Normal file
View File

@@ -0,0 +1,118 @@
# 汽车360°全景展示应用
一个移动端 Web 应用,用于汽车的 360 度全景交互展示。
## 功能特性
- **触摸滑动旋转** - 左右滑动查看汽车 360 度全景
- **惯性滑动效果** - 滑动结束后保持惯性继续旋转
- **自动旋转展示** - 空闲时自动缓慢旋转展示
- **全屏沉浸体验** - 全屏显示,沉浸式查看
- **精美加载动画** - 汽车图标描边动画 + 进度条
- **移动端优化** - 专为移动端触摸交互设计
## 文件结构
```
3D-pano/
├── index.html # 主页面
├── app.js # 应用逻辑
├── styles.css # 样式文件
├── server.js # 本地 HTTP 服务器
├── extract_frames.py # Python 视频帧提取脚本
├── extract.html # 浏览器端帧提取工具
├── video.mp4 # 源视频文件
├── images/ # 序列帧图片目录
│ ├── car_001.jpg
│ ├── car_002.jpg
│ └── ...
└── package.json # 项目配置
```
## 快速开始
### 1. 提取序列帧
**方法一Python 脚本(推荐)**
```bash
python extract_frames.py
```
需要安装 OpenCV
```bash
pip install opencv-python
```
**方法二:浏览器工具**
1. 启动本地服务器见步骤2
2. 访问 `http://localhost:9000/extract.html`
3. 点击「开始提取」
4. 点击「应用到展示页」
### 2. 启动本地服务器
```bash
node server.js
```
服务器将在 `http://localhost:9000` 启动。
### 3. 访问应用
在浏览器中打开 `http://localhost:9000/index.html`
## 配置说明
`app.js` 中可调整以下参数:
```javascript
this.config = {
totalFrames: 336, // 总帧数
autoRotateSpeed: 80, // 自动旋转速度ms/帧)
autoRotateDelay: 3000, // 停止操作后自动旋转延迟ms
inertiaFriction: 0.95, // 惯性摩擦系数
imagePath: './images/', // 图片路径
imagePrefix: 'car_', // 图片前缀
imageExt: '.jpg' // 图片扩展名
};
```
## 图片命名规范
序列帧图片命名格式:`car_XXX.jpg`
- 前缀:`car_`
- 编号:三位数字,从 001 开始
- 扩展名:`.jpg`
示例:`car_001.jpg`, `car_002.jpg`, ..., `car_336.jpg`
## 技术栈
- **前端**:原生 HTML5 + CSS3 + JavaScript
- **Canvas**2D 渲染引擎
- **触摸交互**Touch Events API
- **视频处理**Python OpenCV
## 浏览器兼容性
- Chrome for Android ✅
- Safari iOS ✅
- Firefox Mobile ✅
- 微信内置浏览器 ✅
## 性能优化建议
1. 图片压缩:建议每张图片 50-100KB
2. 帧数选择36-72 帧适合网络传输180-360 帧适合本地展示
3. 使用 WebP 格式可进一步减小体积
## 开发者
如需修改或扩展功能,请参考源码注释。
---
**注意**:本应用需要通过 HTTP 服务器访问,直接打开 HTML 文件可能因浏览器安全限制导致图片加载失败。