I think we are also having confusion about where the symbolic side mechanics changes to numerics. I don't see why VizFrame should have any numerical values. So if there are no numeric values then generating a json file will only have metadata at the VizFrame level.

This is what I'm imagining:

```python
# the viz frame has symbolics and the main purpose is to provide a symbolic transformation matrix
viz_frame = VisualizationFrame(shape, shape_reference_frame, shape_point)
# the we add these to the scene so we have all the info for all shapes in the scen
scene = Scene(newtonian_reference_frame, origin_point, viz_frames=(viz_frame,))
# now when we simulate the system we can tell it there is an animation scene associated with this
data = scene.simulate(kane, and_any_other_stuff_thats_needed)
# the simulation data is numerical time series for everything that we need for the three.js
jsonified_data = scene.jsonify(data)
# it uses the data in the json description to pass to the js code and three.js
scene.show()
```

```