fix: display.txt 缺少渲染参数导致盒子不透明

外部引擎(C/C++)直接写 display.txt 时只输出基础物理参数
(DT/NSTEP/method 等),缺少 alpha/ball_color/box_color
等渲染参数,draw.py 读取不到 alpha 回退默认 0.2。

修复:
1. param.json 新增渲染参数(alpha/ball_color/box_color/...)
2. C/C++ 引擎 SimParams 新增对应字段 & JSON 读取
3. C/C++ write_display_txt 写入所有渲染参数 header
4. param.json ball_color/box_color 用数组统一存储
This commit is contained in:
2026-06-12 15:05:46 +08:00
parent dc7bc00616
commit e40393d793
3 changed files with 102 additions and 1 deletions
+13
View File
@@ -895,6 +895,19 @@ def run_engine(engine, input_dir, output_dir, config):
"gravity_strength": float(config.get("gravity_strength", 1.0)),
"driving_force": int(config.get("driving_force", 0)),
"save_trajectory": int(config.get("save_trajectory", 0)),
# 渲染参数(用于 display.txt header
"alpha": config.get("alpha", 0.2),
"ball_radius": float(config.get("ball_radius", 0.5)),
"ball_color": [float(config.get("ball_color_r", 0.9)),
float(config.get("ball_color_g", 0.2)),
float(config.get("ball_color_b", 0.2))],
"box_color": [float(config.get("box_color_r", 0.8)),
float(config.get("box_color_g", 0.8)),
float(config.get("box_color_b", 0.85))],
"use_marker": int(config.get("use_marker", 0)),
"camera_distance": float(config.get("camera_distance", 40.0)),
"camera_elevation": float(config.get("camera_elevation", 0)),
"camera_azimuth": float(config.get("camera_azimuth", 0)),
}
param_path = os.path.join(script_dir, "engines", engine, "param.json")
os.makedirs(os.path.dirname(param_path), exist_ok=True)