Remix.run Logo
WizardK 2 hours ago

Nice to see someone else doing physics in the browser. And this looks well put together, keeping the engine dependency free and separate from the renderer is a good call, that is what makes it easy to reuse in Three or Babylon.

One question: how does it hold up when the framerate changes? Spring jiggle like this usually either blows up or feels different when the timestep moves around. Are you using a fixed timestep, or just relying on the damping to keep it stable?

bruce343434 2 hours ago | parent | next [-]

The accumulator pattern keeps simulations stable in the face of variable frame rate. Accumulate the frame dt into an accum variable. If accum>fixed_physics_dt then step_physics until false. I'm assuming the author did something like that because it's standard practise.

https://www.gafferongames.com/post/fix_your_timestep/

saltcured 15 minutes ago | parent [-]

Well, as long as the step rate remains well above the Nyquist limit? Otherwise, your simulation will start to have something akin to aliasing errors.

That is one place where an analytical solution is a benefit, even if it is a bit less realistic. You just have a position(t) parametric function you can evaluate when rendering sporadically.

embedding-shape 2 hours ago | parent | prev [-]

> when the timestep moves around

Why would the physics timestep move around? Typically you keep that fixed and separate, especially not locked to the display framerate, physics get really wonky then regardless of what you do.