feat: move_camera.txt 支持 all 关键词表示全程执行

在帧位置写 all 表示该段对所有帧生效:
  all  vx=0.1  ry=0.5    # 全程缓慢平移 + 旋转

等同于 start=0, end=INF,与普通区间段一样支持时间交叠。
This commit is contained in:
2026-06-12 08:08:36 +08:00
parent b4fed4fbb8
commit b95a3579fc
4 changed files with 26 additions and 15 deletions
+4 -1
View File
@@ -108,7 +108,10 @@ def _load_camera_motion(path):
line = line.strip()
if not line or line.startswith("#"):
continue
# 解析帧范围
# 解析帧范围:支持 "all"(全程)或 "N-M"(区间)
if line.lower().startswith("all") or re.match(r'^\s*all\s', line, re.IGNORECASE):
start, end = 0, 10**9
else:
m = re.match(r'(\d+)\s*-\s*(\d+)', line)
if not m:
continue
+4
View File
@@ -570,6 +570,10 @@ def _load_move_camera_txt():
line = line.strip()
if not line or line.startswith("#"):
continue
# 解析帧范围:支持 "all"(全程)或 "N-M"(区间)
if line.lower().startswith("all") or _re.match(r'^\s*all\s', line, _re.IGNORECASE):
start, end = 0, 10**9 # 用极大值表示全程
else:
m = _re.match(r'(\d+)\s*-\s*(\d+)', line)
if not m:
continue
+4
View File
@@ -50,6 +50,10 @@ def _load_camera_kf(config, runtime_base):
line = line.strip()
if not line or line.startswith("#"):
continue
# 解析帧范围:支持 "all"(全程)或 "N-M"(区间)
if line.lower().startswith("all") or re.match(r'^\s*all\s', line, re.IGNORECASE):
start, end = 0, 10**9
else:
m = re.match(r'(\d+)\s*-\s*(\d+)', line)
if not m:
continue
+2 -2
View File
@@ -5,5 +5,5 @@
# rx → elevation(俯仰), ry → azimuth(方位), rz → (预留)
#
# 示例:前60帧向右平移+绕x旋转,30-90帧向上平移+绕y绕z旋转
1-60 vx=0.02 rx=1
30-90 vy=0.02 ry=1 rz=1
all vx=0.02
# 30-90 vy=0.02 ry=1 rz=1