fix: display.txt 丢失 use_marker 导致强制使用 Sphere 渲染模式

新格式 display.txt 未包含 use_marker 字段,draw.py 中
USE_MARKER 被硬编码为 0(Sphere 模式),对 120 个原子
每帧更新 120 次 STTransform 极慢。

修复:将 use_marker 加入 display.txt header,draw.py 从
header 读取而非硬编码。case06 配置 use_marker: 1 会
自动启用 Marker(GPU 实例化)模式,动画流畅。
This commit is contained in:
2026-06-12 07:04:29 +08:00
parent 7417d47658
commit 6b5e12da46
3 changed files with 10 additions and 3 deletions
+7 -1
View File
@@ -64,6 +64,7 @@ ball_color_b = None
box_color_r = None
box_color_g = None
box_color_b = None
use_marker = 0
# 力开关
GRAVITY_FIELD = 1 # 均匀重力场
@@ -641,10 +642,13 @@ def run_from_config(config, out_dir=None):
global X_MIN, X_MAX, Y_MIN, Y_MAX, Z_MIN, Z_MAX
global ball_radius, ball_color_r, ball_color_g, ball_color_b
global box_color_r, box_color_g, box_color_b
global use_marker
global warmup_steps, sample_start, sample_end
global GRAVITY_FIELD, GRAVITY_INTERACTION, ELASTIC_FORCE, DAMPING_FORCE, GRAVITY_STRENGTH
global DRIVING_FORCE, DRIVER_DATA
global use_marker
...
box_a = float(config.get("box_a", 10.0))
raw_alpha = config.get("alpha", 0.2)
if isinstance(raw_alpha, (list, tuple)):
@@ -701,6 +705,7 @@ def run_from_config(config, out_dir=None):
box_color_r = float(config.get("box_color_r", 0.8))
box_color_g = float(config.get("box_color_g", 0.8))
box_color_b = float(config.get("box_color_b", 0.85))
use_marker = int(config.get("use_marker", 0))
# 力开关
global GRAVITY_FIELD, GRAVITY_INTERACTION, ELASTIC_FORCE, DAMPING_FORCE, GRAVITY_STRENGTH
@@ -1453,7 +1458,8 @@ def run_simulation(save_trajectory=0):
"elastic_force": str(ELASTIC_FORCE),
"damping_force": str(DAMPING_FORCE),
"gravity_strength": str(GRAVITY_STRENGTH),
"driving_force": str(DRIVING_FORCE)}
"driving_force": str(DRIVING_FORCE),
"use_marker": str(use_marker)}
)
print(f"[compute] display.txt 已保存至: {disp_path} ({n_frames_actual} 帧)")