snapshot method
The authored plane, captured: params and the node tree, deep-copied. The fx plane is NOT part of a snapshot — it is evaluated state owned by its writers, and restoring authored values must not cancel a playing motion (the same law as Save never reading fx).
Implementation
SceneSnapshot snapshot() =>
SceneSnapshot._([...params], deepCopyNode(root) as FrameNode);