Three.js Gravity-Driven Animation with Python Docker

Job ID: 40598844

Budget: $30 – $250 USD

I’m building a browser-based WebGL scene that relies on Three.js for all the rendering and a small Python service for asset preparation and data flow. The core of the job is to craft a smooth, interactive animation where every movement is governed by gravity—objects should accelerate naturally, settle, or orbit according to the forces we define. There’s no manual clicking or dragging required from the user; instead, the animation must look alive on its own, reacting only to the physics engine you wire in.

You’ll start by setting up the Three.js stage, loading a handful of simple meshes (think spheres, cubes, or particles) and wiring gravity so the bodies fall, collide softly, and stabilise without obvious jitter. The Python side is straightforward: a script that supplies initial object positions and can be re-run to randomise the scene, served through a tiny Flask or FastAPI endpoint. No heavy backend logic—just clean data interchange in JSON.

I want clean, commented code that I can extend later, plus a short readme explaining how to spin everything up locally. If you have a favourite physics helper library for Three.js, feel free to use it, as long as it keeps the bundle lightweight.

Acceptance criteria
• Scene renders in modern browsers without warnings
• Gravity behaves consistently at 60 fps on a mid-range laptop
• Python endpoint returns positions and launches with a single command
• All source files, build steps, and instructions are included in the final hand-off