Skip to content

Commit f000685

Browse files
ZiangZhengclaude
andcommitted
docs: add phone-camera 3DGS capture guide and surface docs/guides/ in README
GS_VIDEO_CAPTURE.md walks through shooting a custom 3DGS scene with a phone camera in one take: lock AF/AE/WB, three-loop (high/mid/low) trajectory, 60–120 s total, then ffmpeg-extract 100–300 frames straight into the COLMAP + 3DGS training flow. Companion to GS_DATA_COLLECTION.md for users who only need the shooting half. Also add a "Capturing your own 3DGS scenes" section to the README's docs index so the other docs/guides/ files (INSTALLATION, QUICK_START, GS_DATA_COLLECTION, 3DGS_ROOM_DATASETS, PRETRAINED_MODELS, ASSET_ACQUISITION, SEGMENT_ID_SYSTEM) are discoverable, and link the new shooting guide from the "Custom Scenes" feature bullet. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 7e6fbbd commit f000685

2 files changed

Lines changed: 299 additions & 1 deletion

File tree

README.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ AndroidTwin repo and uses MuGS's standalone `GaussianSensor` API.
172172
### Asset Support
173173
- **Pretrained Scenes**: INRIA kitchen (mip-NeRF 360 dataset)
174174
- **External Assets**: GS-Playground scenes, DISCOVERSE tasks (via download scripts)
175-
- **Custom Scenes**: Support for any 3DGS PLY files from COLMAP/Nerfstudio
175+
- **Custom Scenes**: Support for any 3DGS PLY files from COLMAP / Nerfstudio — shoot your own with [`docs/guides/GS_VIDEO_CAPTURE.md`](docs/guides/GS_VIDEO_CAPTURE.md) (phone-camera 三圈拍法, 中文实操向)
176176

177177
## Quick Start
178178

@@ -423,6 +423,16 @@ See `docs/CAMERA_ALIGNMENT_FIX.md` for details.
423423
- **[`docs/EXTERNAL_ASSETS.md`](docs/EXTERNAL_ASSETS.md)** - 📦 Using GS-Playground, DISCOVERSE assets
424424
- **[`docs/SHOWCASE.md`](docs/SHOWCASE.md)** - 🎬 Creating demonstration materials
425425

426+
### Capturing your own 3DGS scenes
427+
- **[`docs/guides/INSTALLATION.md`](docs/guides/INSTALLATION.md)** - 🛠️ Install MuGS + 3DGS training stack
428+
- **[`docs/guides/QUICK_START.md`](docs/guides/QUICK_START.md)** - ⚡ End-to-end "first scene" walkthrough
429+
- **[`docs/guides/GS_VIDEO_CAPTURE.md`](docs/guides/GS_VIDEO_CAPTURE.md)** - 📱 Phone-camera shooting guide (中文, 实操向)
430+
- **[`docs/guides/GS_DATA_COLLECTION.md`](docs/guides/GS_DATA_COLLECTION.md)** - 🎞️ Full capture → COLMAP → 3DGS pipeline
431+
- **[`docs/guides/3DGS_ROOM_DATASETS.md`](docs/guides/3DGS_ROOM_DATASETS.md)** - 🏠 Public 3DGS room datasets to start from
432+
- **[`docs/guides/PRETRAINED_MODELS.md`](docs/guides/PRETRAINED_MODELS.md)** - 🧠 Pretrained scenes shipped with MuGS
433+
- **[`docs/guides/ASSET_ACQUISITION.md`](docs/guides/ASSET_ACQUISITION.md)** - 🗂️ Where to source robots / scenes / objects
434+
- **[`docs/guides/SEGMENT_ID_SYSTEM.md`](docs/guides/SEGMENT_ID_SYSTEM.md)** - 🎭 Segmentation ID conventions
435+
426436
### Design & Status
427437
- **[`docs/design/PROJECT_ARCHITECTURE.md`](docs/design/PROJECT_ARCHITECTURE.md)** - 🏗️ System architecture
428438
- **[`docs/design/TECHNICAL_DESIGN.md`](docs/design/TECHNICAL_DESIGN.md)** - 🔧 Technical design notes

docs/guides/GS_VIDEO_CAPTURE.md

Lines changed: 288 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,288 @@
1+
# 用手机视频拍 3DGS 场景 — 实操指南
2+
3+
只讲 **录视频** 这条路线,每一步都给出可以照抄的操作。完整端到端流程见
4+
[GS_DATA_COLLECTION.md](GS_DATA_COLLECTION.md),这份文档是它的拍摄章节细化版。
5+
6+
**Last Updated**: 2026-05-09
7+
8+
---
9+
10+
## TL;DR
11+
12+
> 用手机以 **1080p / 30fps****手动锁定曝光对焦白平衡**,匀速绕场景走 **三圈**(高、中、低),全程 **60~120 秒**。回到电脑用 ffmpeg 抽出 100~200 张图,扔进 COLMAP + 3DGS 训练。
13+
14+
---
15+
16+
## Part 1 — 出门前 5 分钟准备
17+
18+
### 1.1 手机相机怎么调
19+
20+
不管 iPhone 还是安卓,目标是 **三件事都不变**
21+
22+
| 要锁定的参数 | iPhone 操作 | 安卓 (大多数) |
23+
|-------------|------------|---------------|
24+
| **对焦 AF** | 长按画面任一点 → 出现 "AE/AF 锁定" 黄框 | 切到"专业模式",把对焦拨到 MF(手动),调到中等距离 |
25+
| **曝光 AE** | 长按之后亮度条会出现,不再自动变 | 专业模式手动设 ISO(100~400)+ 快门(1/100s 起) |
26+
| **白平衡 WB** | 自带不太好锁,建议用第三方 App | 专业模式选定一个色温(比如 5500K)后不变 |
27+
28+
**强烈推荐 App**(任选其一,免费版都够用):
29+
- iPhone:**Blackmagic Camera** / **FiLMiC Pro** / **ProMovie**
30+
- 安卓:**Open Camera**(开源)/ **手机自带的"专业"模式**
31+
32+
打开 App 后这样设:
33+
```
34+
分辨率: 1920x1080 (1080p)
35+
帧率: 30 fps (不要选 60fps,文件太大没意义)
36+
ISO: 200~400 之间,固定
37+
快门: 1/100s 起步,光线弱可以到 1/60s,不要更慢
38+
对焦: MF 手动,调到 1~2 米
39+
白平衡: 5000~5500K 固定
40+
HDR: 关掉
41+
防抖: 开(光学防抖 OIS / 电子防抖 EIS 都可以)
42+
```
43+
44+
> 如果只用自带相机也行,最关键的是 **长按锁定对焦曝光**(黄框出现)。
45+
46+
### 1.2 场景检查 checklist
47+
48+
开拍前 30 秒走一圈,确认:
49+
50+
- [ ] 风扇 / 空调出风口 → **关掉**(防窗帘/纸张飘)
51+
- [ ] 屏幕 / 电视 → **关掉或换静态壁纸**(动画破坏 SfM)
52+
- [ ] 地面玩具 / 散落电线 → 收一收
53+
- [ ] 椅子 → 推到不挡路的地方
54+
- [ ] 窗帘 / 灯光 → **保持现在这样直到拍完**,中间不要开关灯
55+
- [ ] 手机 → 静音、勿扰、电量 ≥ 50%
56+
- [ ] 拍摄期间 **不让人或宠物走过**
57+
58+
### 1.3 测试 30 秒
59+
60+
正式开拍前先录 30 秒 demo,回放看一下:
61+
- 画面有没有抖到糊
62+
- 暗处有没有过黑/亮处有没有过曝
63+
- 有没有镜头沾灰、起雾
64+
65+
不行就调整再录。**正式拍只录一次**,不要拍两段拼接(曝光会跳)。
66+
67+
---
68+
69+
## Part 2 — 怎么走、怎么拍
70+
71+
### 2.1 整体节奏
72+
73+
**60~120 秒**。慢就慢,但不能快。
74+
75+
- 走得太快 → 动态模糊、相邻帧重叠不够 → COLMAP 注册失败
76+
- 走得太慢 → 视频太长抽出 200+ 张冗余帧
77+
78+
**一个简单参考**:从场景一头走到另一头大概用 5~8 秒。
79+
80+
### 2.2 三圈轨迹
81+
82+
想象场景中心是个圆心,你绕着它走三圈:
83+
84+
```
85+
俯视图 (你的视角,从天花板往下看场景)
86+
87+
╭─────────────────────╮
88+
│ │
89+
│ ╭───────╮ │
90+
│ │ │ │ 绕 3 圈
91+
│ │ ★ │ │ ★ = 你想拍的核心区域 / 桌面 / 物体
92+
│ │ │ │
93+
│ ╰───────╯ │
94+
│ │
95+
╰─────────────────────╯
96+
97+
侧视图
98+
99+
圈 1 ─ 高位(把手机举到额头高度,相机略向下)
100+
圈 2 ─ 中位(手机端到胸口高度,相机水平)
101+
圈 3 ─ 低位(蹲下,相机略向上)
102+
```
103+
104+
**每圈大约 20~40 秒**,三圈合起来 60~120 秒。
105+
106+
### 2.3 三个圈的具体走法
107+
108+
#### 圈 1 — 高位(举高拍)
109+
110+
- 手机举到 **眉毛 / 额头** 高度
111+
- 相机 **略向下倾** 15~25°(看到地面 + 物体顶部)
112+
- 围绕场景顺时针走一圈,**走得慢**,每两步停 0.5 秒(不是真的停下来,是放慢)
113+
- 走到最关键的角度(比如桌面正面)时 **再放慢**
114+
115+
#### 圈 2 — 中位(最重要的一圈)
116+
117+
- 手机举到 **胸口** 高度
118+
- 相机 **水平**(既不仰也不俯)
119+
- 走的时候 **稍微靠近场景中心** —— 圈半径比上一圈小一点
120+
- 经过想重点拍的物体 / 桌面时,可以 **侧身略微贴近** 拍 1~2 秒,再退回正常半径继续走
121+
122+
#### 圈 3 — 低位(蹲下拍)
123+
124+
- **半蹲或全蹲**,手机放到 **肚脐** 高度
125+
- 相机 **略向上仰** 10~20°(看到桌面下方 / 物体底部 / 天花板边缘)
126+
- 走得可以再慢一点,因为蹲着累,但稳
127+
128+
### 2.4 关键动作的拍摄
129+
130+
如果场景里有 **特别想拍清楚的东西**(比如桌上的实验设备、机器人工作区),三圈之外 **再加一段 10~20 秒的特写**
131+
132+
- 距离 **0.5~1 米**
133+
- 围绕这个东西小幅度移动(左右各走 1 步、上下小幅度起伏)
134+
- 不要原地转手机!**平移很重要**,纯旋转 SfM 很难恢复深度
135+
136+
### 2.5 三个铁律
137+
138+
```
139+
✗ 不要原地旋转手机(pan)—— 必须有平移
140+
✗ 不要快速摇晃 —— 模糊一帧 = 浪费一帧
141+
✗ 不要中途停下来又开始 —— 一气呵成
142+
```
143+
144+
---
145+
146+
## Part 3 — 拍完立刻做的检查
147+
148+
**离开现场之前**,回放一遍视频,检查:
149+
150+
- [ ] 视频长度 60~150 秒之间
151+
- [ ] 没有任何一段画面糊到看不清物体边缘
152+
- [ ] 整段亮度一致(没有忽暗忽亮)
153+
- [ ] 没有人或宠物入镜
154+
- [ ] 三个高度都拍到了
155+
156+
**任何一项不对就重拍**。回家后才发现就太晚了 —— 现场光线/物体位置回不去。
157+
158+
把视频用 **AirDrop / 数据线 / 微信传文件助手** 传到电脑,命名成
159+
比如 `lab_20260509.mp4`
160+
161+
---
162+
163+
## Part 4 — 视频转图片(电脑上)
164+
165+
### 4.1 抽帧命令
166+
167+
```bash
168+
# 假设视频在 ~/Downloads/lab_20260509.mp4
169+
SCENE=lab
170+
WORKDIR=/home/ununtu/metabot-workspace/mugs/data/custom/$SCENE
171+
mkdir -p $WORKDIR/input
172+
173+
ffmpeg -i ~/Downloads/lab_20260509.mp4 \
174+
-qscale:v 2 \
175+
-vf "fps=2" \
176+
$WORKDIR/input/frame_%04d.jpg
177+
```
178+
179+
参数解释:
180+
- `-qscale:v 2` JPEG 高质量(数字越小越好,2 是上限附近)
181+
- `-vf "fps=2"` 每秒抽 2 帧
182+
- 60s 视频 → 120 张
183+
- 90s 视频 → 180 张
184+
- 120s 视频 → 240 张
185+
- 文件名 `frame_0001.jpg`, `frame_0002.jpg`, ...
186+
187+
### 4.2 抽完检查
188+
189+
```bash
190+
ls $WORKDIR/input | wc -l # 应该在 100~300 之间
191+
ls $WORKDIR/input | head -5 # 文件名连续
192+
```
193+
194+
随便打开几张看一眼:
195+
- ✅ 清晰、不模糊
196+
- ✅ 亮度一致
197+
- ✅ 视角覆盖整个场景
198+
199+
### 4.3 调整抽帧密度
200+
201+
如果数量不在 100~300 之间,改 `fps`
202+
203+
| 视频长度 | 想要 ~150 张 | 命令 |
204+
|---------|------------|------|
205+
| 60s | 抽 2.5 帧/秒 | `-vf "fps=2.5"` |
206+
| 90s | 抽 1.7 帧/秒 | `-vf "fps=1.7"` |
207+
| 120s | 抽 1.25 帧/秒 | `-vf "fps=1.25"` |
208+
| 180s | 抽 0.83 帧/秒 | `-vf "fps=0.83"` |
209+
210+
也可以 **直接选总张数**
211+
212+
```bash
213+
# 不管视频多长,强制抽出 150 张
214+
ffmpeg -i input.mp4 -vf "select='not(mod(n\,N))'" -vsync vfr ...
215+
```
216+
217+
但简单起见 `fps=` 就够了。
218+
219+
---
220+
221+
## Part 5 — 接下来怎么办
222+
223+
抽完 100~300 张图后,剩下的全自动:
224+
225+
```bash
226+
# COLMAP 求相机位姿(10~60 分钟)
227+
git clone https://github.com/graphdeco-inria/gaussian-splatting ~/gs
228+
cd ~/gs
229+
python convert.py -s $WORKDIR
230+
231+
# 训练 3DGS(30~90 分钟)
232+
python train.py -s $WORKDIR -m $WORKDIR/output --iterations 30000
233+
234+
# 拷到 MuGS 期望的位置
235+
mkdir -p $WORKDIR/point_cloud/iteration_30000
236+
cp $WORKDIR/output/point_cloud/iteration_30000/point_cloud.ply \
237+
$WORKDIR/point_cloud/iteration_30000/
238+
cp $WORKDIR/output/cameras.json $WORKDIR/
239+
```
240+
241+
完整命令、训练参数、出错怎么办看
242+
[GS_DATA_COLLECTION.md](GS_DATA_COLLECTION.md) Part 3~5。
243+
244+
---
245+
246+
## 常见翻车 & 解决
247+
248+
| 现象 | 原因 | 下次怎么避免 |
249+
|------|------|-----------|
250+
| COLMAP 注册率 < 50% | 走太快、相邻帧没重叠 | 走慢一倍,或视频拍长一点 |
251+
| COLMAP reproj err > 2px | 整段视频模糊 / 手抖 | 用三脚架 / 稳定器,或锁高 ISO 用快快门 |
252+
| 训出来一片浮云 | 视角太单一(只拍了一个角度) | **三圈** 必须走完,别偷懒 |
253+
| 训出来一面墙是空的 | 那一面没拍到 | 检查圈是否真的绕了一周(360°) |
254+
| 训完渲染颜色诡异 | 白平衡飘了(比如经过窗户时被自动调整) | 用专业模式 App 锁死 WB |
255+
| 桌面物体边缘糊 | 那部分拍得太快 / 距离太远 | 给关键物体加 10~20s 特写贴近拍 |
256+
257+
---
258+
259+
## 一个最简单的"第一次"流程
260+
261+
如果你之前完全没拍过,建议第一次就先在 **自己工位** 试一下,因为:
262+
263+
1. 场景小,三圈很快走完(≤ 1 分钟)
264+
2. 失败了立刻能再拍
265+
3. 训练 1080p 大概只要 30 分钟,能快速看效果
266+
267+
具体步骤:
268+
269+
```
270+
Step 1 (5 min) 装一个 Open Camera (安卓) 或 Blackmagic Camera (iPhone)
271+
Step 2 (2 min) 设置 1080p / 30fps / 手动模式(按上面 1.1)
272+
Step 3 (1 min) 关空调风扇、屏幕静态、把椅子推开
273+
Step 4 (1 min) 录 90 秒视频:高、中、低 各 30 秒绕桌一圈
274+
Step 5 (3 min) 传电脑 → ffmpeg 抽帧 → 看一下图片质量
275+
Step 6 (待机) COLMAP + 训练(晚上挂着跑)
276+
Step 7 (10 min) 检查渲染结果,不行就回到 Step 4 重拍
277+
```
278+
279+
第一次预期 **不会一次成功**。多数人第二次或第三次能拍出可用的场景。
280+
281+
---
282+
283+
## 还需要帮助?
284+
285+
- 完整 pipeline:[GS_DATA_COLLECTION.md](GS_DATA_COLLECTION.md)
286+
- 公开数据集(如果不想自己拍):[3DGS_ROOM_DATASETS.md](3DGS_ROOM_DATASETS.md)
287+
- MuGS 上手:[QUICK_START.md](QUICK_START.md)
288+
- 拍完发我看一眼也行,我可以帮你看视频质量

0 commit comments

Comments
 (0)