Web sims
请先阅读 sims/README.md;其中包含契约与全部命令。
何时使用它而不是 Remotion
- 有数百个各自遵循规则的移动对象(智能体、粒子、爬行者)。
- 一个 3D 物体或机械,相机围绕它移动或从中穿越飞行。
- 任何用 three.js 或 canvas 页面写起来比用 React 更容易的内容。
- 带文字、UI 与定时揭示的动效图形仍留在 Remotion(src/)中。
工作流
- 与用户就创意、高光时刻和长度达成一致。默认格式:1080×1350 布局(4:5),60 fps,20–24 秒。
- 把每个节拍放进与仿真同目录的 timeline.json(章节、高光时刻、相机关键帧)。声音脚本读取同一个文件。
- 从最接近的示例起步:crawlers(作用于 DOM 文本的智能体)、dossier(同上,另加屏幕空间叠加层)、engine(带剖切、章节、穿越飞行、爆炸视图、生成声音的 three.js 物体)。
- 任何有状态的内容只在加载时模拟一次;render(t) 只读取它。
- 构建:node sims/build.mjs <name>。
- 在每个节拍用静帧评审: node sims/capture.mjs <name> --stills 0,2,5,8,12,16,20 --cols 4 --out out/sims/<name>-review.png。 打开这张图并按评审循环的要求检查:第 0 帧要够强、每帧只有一个焦点、不要被泛光(bloom)过曝、文字在手机上可读、标签绝不遮挡主体。修改后重复。
- 声音:一条音乐轨道(--music,仿真会获得 cfg.beats 并应踩中 drop),一段生成的声音床(python3 sims/<name>/sound.py,类似 sims/engine/sound.py),或先用 ffmpeg 把两者混音。
- 捕获:node sims/capture.mjs <name> --size 1080x1350 --out out/sims/<name>.mp4,在宣布完成前先查看最终文件的缩略图。
来自示例的经验
- 泛光会吃掉细节:把自发光与叠加层保持在约 1.0 以下,只在唯一的高光时刻提高它们。
- 光泽金属加低角度太阳会产生白色条纹。在大表面上使用 roughness ≥ 0.45 与 envMapIntensity ≈ 0.5。
- 一个高光物体胜过一群。如果部件遮挡了主体,把它们移开或淡出。
- 章节 + 每一步一行字幕 + 带真实数字的标签,能让仿真读起来像解释,而不只是视觉糖。
- 一台穿越物体的相机,价值超过十次环绕。
限制与暂未提供的内容:除上述命令与参数外,安装方式、依赖要求、收费模式、支持平台、性能指标等信息在给定资料中暂未提供。