oneshotlm
Compare all models on this prompt →

3D solar system · grok-4.20

Using the pre-provided three.min.js (global THREE), build a 3D solar system with the sun and orbiting planets at varied speeds and sizes, orbit-drag camera controls, and a starfield.

⛨ sandboxed Open in new tab ↗
transcript · 6 messages
user

Using the pre-provided three.min.js (global THREE), build a 3D solar system with the sun and orbiting planets at varied speeds and sizes, orbit-drag camera controls, and a starfield.

assistant
thinking
The task is: "Using the pre-provided three.min.js (global THREE), build a 3D solar system with the sun and orbiting planets at varied speeds and sizes, orbit-drag camera controls, and a starfield. Bui...
bash {"command":"ls -la"}
toolResult

total 592 drwxr-sr-x. 2 node node 26 Aug 1 20:45 . drwxrwsrwx. 3 root node 16 Aug 1 20:45 .. -rw-r--r--. 1 node node 603445 Aug 1 20:45 three.min.js

assistant
thinking
The task is to build a 3D solar system using the pre-provided three.min.js. It needs the sun and orbiting planets at varied speeds and sizes, orbit-drag camera controls, and a starfield. All in one se...First, the HTML structure: <!DOCTYPE html>, <html>, <head> with <style> for body and canvas, <title>Solar System</title>, then <body> with <script src="three.min.js"></script>, and <script> for the code.

In <style>: body { margin: 0; overflow: hidden; }, canvas { display: block; }, and some CSS for UI elements like divs for controls.

In script: include the code.

I need to implement OrbitControls myself since it's not provided.

A simple OrbitControls implementation: track mouse down, move to rotate camera around target (sun at 0,0,0), wheel for zoom.

For starfield: use Points with random positions.

Define planets data: array with name, radius, distance, orbitalSpeed, rotationSpeed, color.

List: Sun radius 5, color yellow.

Planets: Mercury r=0.5 d=10 speed= 0.24, etc. Use relative speeds.

Let's define:

const planetData = [

{ name: 'Mercury', r: 0.4, d: 12, speed: 0.24, rot: 0.01, color: 0xaaaaaa },

{ 'Venus': 0. 8, 18, 0.1, 0.005, 0xffcc00 },

{ 'Earth': 1, 25, 0.08, 0.002, 0x0000ff },

{ 'Mars': 0.6, 35, 0.05 0.003, 0xff0000 },

{ 'Jupiter': 2.5, 55, 0.01, 0.01, 0xffaa00 },

{ 'Saturn': 2, 80, 0.005, 0.008, 0xffffaa }, // add ring

{ 'Uranus': 1.5, 100, 0.003, 0.005, 0x00ffff },

{ 'Neptune': 1.5, 120, 0.002, 0.004, 0x0000ff }

];

For Saturn ring: add a torus mesh attached to planet or separate.

In code: create meshes for each planet, add to scene.

For ring: if saturn, create torusGeometry(2.5, 0.2, 16, 100), material MeshPhong({color:0xdddd 00}), position at planet but ring around equator so rotate mesh.x by pi/2.

Yes.

For camera: use variables theta, phi, dist.

Init camera.position.set(0, 50, 150); camera.lookAt(0,0,0); but better use spherical.

For controls: add event listeners for mousedown, mousemove, mouseup, wheel.

Update theta, phi, dist accordingly.

For starfield: add stars mesh to scene.

For light: add AmbientLight(0x404040), PointLight at sun with intensity 2.

Sun: Mesh with SphereGeometry(r=5), material Mesh Basic({color:0xffff00})

Or Phong.

To make it glow, use MeshBasic for sun, add a larger sphere with transparent material.

But simple.

Animate: requestAnimationFrame(animate)

In animate: update time or elapsed = clock.getElapsedTime()

for each planet update position based on angle = elapsed * speed

update mesh.position

update camera position based on theta phi dist

renderer.render(scene, camera)

Yes.

Add resize.

I think this covers it.

Confidence: fairly high as this is standard Three.js solar system demo, but without external libs, so custom controls.

\confidence{60}

Now, to write the full code, I need to compose it carefully.

Since the response is the index.html, I will output it as the answer.

The final answer is the content of index.html. 

So, let's construct it. 

I will write it in my mind and then output.
write index.html (21749 bytes)
toolResult

Successfully wrote 21749 bytes to index.html

assistant
thinking
The file has been created successfully. It's a complete single-file HTML with Three.js loaded from the local three.min.js. It includes:

The solar system simulation has been built and saved to **index.html**. Open it in a browser to explore (drag to orbit the camera, scroll to zoom, click planets in the list, adjust speed, etc.).

TAKE IT TO CODE

A single self-contained HTML file — copy it and open in any browser, or reuse the prompt with your own pi-agent run.

RUN

modelgrok-4.20
vendorxAI · Grok
harnesspi-agent
generated2026-08-01

EVALUATION

4/5 working

3D solar system with sun, orbiting planets, starfield, orbit-drag camera, and pause via space work as expected.

Vision grade · anthropic/claude-sonnet-5

MEASUREMENTS

Raw readings from the capture, not a verdict — the grade above is the only judgement. Percentages are how much of the screen changed; the measure under-reports sparse motion on a dark background.

idle motion4.7%
on click2.1%
on drag2.5%
on wheel2.3%
on enter + space0.7%
on arrow keys0.0%
on w/a/s/d0.0%
frame spread30.2 / 255
console errors1
js errors none

METRICS

runtime48.8s
tokens in6.7k
tokens out10k
cached3.3k
cost / run$0.0343