{"version":1,"record":{"id":"gen-agent-7-mvnf7ury-zqmzr","agentId":"agent-7","agentName":"Big Red","prompt":"Mario Kart styled KART and RIDER. Keep distance between for easy splitting. Rider should be wearing a uniquly themed racing jumpsuit (styled after the character). The Kart should have a unique body shape again, artistically themed around character. Super high details but mid poly range-- Smart use of colors, Have fun with it.","model":"openai/gpt-6-luna-pro","agentic":false,"slices":1,"sliceSteps":4,"code":"const group = new THREE.Group();\ngroup.name = 'Violet Comet Kart and Racer';\n\nSCENE.setLighting({\n  hemi: { sky: '#fff0d5', ground: '#34302c', intensity: 0.62 },\n  sun: { color: '#ffcf91', intensity: 2.5, position: [-7, 5, 3] },\n  ambient: { color: '#fff7ea', intensity: 0.28 },\n  shadows: true\n});\n\nconst mat = (name, color, roughness, metalness) => {\n  const m = new THREE.MeshStandardMaterial({ color, roughness, metalness });\n  m.name = name;\n  return m;\n};\n\nconst purple = mat('Anodized Plum', 0x733576, 0.29, 1);\nconst blue = mat('Cobalt Anodized Metal', 0x334ad3, 0.27, 1);\nconst sand = mat('Sun Bleached Sand', 0xcbb88b, 0.7, 0);\nconst charcoal = mat('Charcoal Rubber and Trim', 0x25272b, 0.9, 0);\nconst rust = mat('Rust Bronze Metal', 0x9a5135, 0.36, 1);\nconst red = mat('Signature Racing Red', 0xdd0303, 0.32, 0);\nconst glass = mat('Smoky Visor', 0x283743, 0.22, 1);\nconst skin = mat('Warm Skin', 0xc98d62, 0.78, 0);\nconst ivory = mat('Warm Ivory', 0xf1e5c5, 0.6, 0);\nconst white = mat('Eye White', 0xf3eee1, 0.45, 0);\nconst gold = mat('Brushed Brass', 0xd5a94f, 0.28, 1);\n\nconst makeMesh = (name, geometry, material, parent, position, rotation, scale) => {\n  const mesh = new THREE.Mesh(geometry, material);\n  mesh.name = name;\n  if (position) mesh.position.set(position[0], position[1], position[2]);\n  if (rotation) mesh.rotation.set(rotation[0], rotation[1], rotation[2]);\n  if (scale) mesh.scale.set(scale[0], scale[1], scale[2]);\n  parent.add(mesh);\n  return mesh;\n};\n\nconst kart = new THREE.Group();\nkart.name = 'Comet Kart';\nkart.position.set(-0.92, 0.4, 0);\ngroup.add(kart);\n\nconst anchors = [\n  { t: 0.00, beam: 0.035, chine: 0.030, chineY: 0.42, keelY: 0.36, gunY: 0.46 },\n  { t: 0.10, beam: 0.220, chine: 0.180, chineY: 0.28, keelY: 0.23, gunY: 0.52 },\n  { t: 0.22, beam: 0.420, chine: 0.340, chineY: 0.22, keelY: 0.18, gunY: 0.58 },\n  { t: 0.45, beam: 0.530, chine: 0.440, chineY: 0.20, keelY: 0.16, gunY: 0.55 },\n  { t: 0.72, beam: 0.510, chine: 0.420, chineY: 0.19, keelY: 0.16, gunY: 0.53 },\n  { t: 0.90, beam: 0.420, chine: 0.340, chineY: 0.20, keelY: 0.17, gunY: 0.51 },\n  { t: 1.00, beam: 0.360, chine: 0.300, chineY: 0.21, keelY: 0.18, gunY: 0.50 }\n];\nconst stations = Array.from({ length: 17 }, (_, i) => {\n  const t = i / 16;\n  let a = anchors[0], b = anchors[anchors.length - 1];\n  for (let j = 0; j < anchors.length - 1; j++) {\n    if (t >= anchors[j].t && t <= anchors[j + 1].t) {\n      a = anchors[j]; b = anchors[j + 1]; break;\n    }\n  }\n  const f = (t - a.t) / (b.t - a.t);\n  const smooth = f * f * (3 - 2 * f);\n  return {\n    t,\n    beam: a.beam + (b.beam - a.beam) * smooth,\n    chine: a.chine + (b.chine - a.chine) * smooth,\n    chineY: a.chineY + (b.chineY - a.chineY) * smooth,\n    keelY: a.keelY + (b.keelY - a.keelY) * smooth,\n    gunY: a.gunY + (b.gunY - a.gunY) * smooth\n  };\n});\nconst hull = GEO.createHull({ length: 1.75, stations, chine: 'hard', keel: 'sharp', samples: 32 });\nmakeMesh('Kart Hull Shell', hull.geometry, purple, kart, [0, 0, 0]);\n\nconst deckGeo = hull.buildDeck({ y: 0.49, inset: 0.055, thickness: 0.025 });\nmakeMesh('Inset Sand Deck', deckGeo, sand, kart, [0, 0, 0]);\n\nmakeMesh('Cockpit Seat Cushion', new THREE.BoxGeometry(0.46, 0.10, 0.40), charcoal, kart, [0, 0.54, -0.22], [0, 0, 0], [1, 1, 1]);\nmakeMesh('Cockpit Seat Back', new THREE.BoxGeometry(0.44, 0.34, 0.10), purple, kart, [0, 0.69, -0.44], [-0.13, 0, 0], [1, 1, 1]);\nmakeMesh('Seat Back Inlay', new THREE.BoxGeometry(0.23, 0.20, 0.018), blue, kart, [0, 0.70, -0.382]);\n\nconst tireGeo = new THREE.CylinderGeometry(0.245, 0.245, 0.17, 20, 1);\nconst hubGeo = new THREE.CylinderGeometry(0.145, 0.145, 0.184, 16, 1);\nconst hubCapGeo = new THREE.CylinderGeometry(0.075, 0.075, 0.192, 12, 1);\nconst wheelPositions = [\n  [-0.52, 0.26, 0.53], [0.52, 0.26, 0.53],\n  [-0.52, 0.26, -0.55], [0.52, 0.26, -0.55]\n];\nfor (let i = 0; i < wheelPositions.length; i++) {\n  const p = wheelPositions[i];\n  const side = p[0] < 0 ? 'Left' : 'Right';\n  const end = p[2] > 0 ? 'Front' : 'Rear';\n  const label = `${end} ${side}`;\n  makeMesh(`${label} Tire`, tireGeo, charcoal, kart, p, [0, 0, Math.PI / 2]);\n  makeMesh(`${label} Blue Alloy Wheel`, hubGeo, blue, kart, p, [0, 0, Math.PI / 2]);\n  makeMesh(`${label} Brass Hub`, hubCapGeo, gold, kart, p, [0, 0, Math.PI / 2]);\n  const treadGeo = new THREE.BoxGeometry(0.19, 0.038, 0.055);\n  for (let k = 0; k < 6; k++) {\n    const a = (k / 6) * Math.PI * 2;\n    makeMesh(`${label} Tread ${String(k + 1).padStart(2, '0')}`, treadGeo, charcoal, kart,\n      [p[0], p[1] + Math.sin(a) * 0.238, p[2] + Math.cos(a) * 0.238],\n      [a, 0, Math.PI / 2]);\n  }\n}\n\nconst railProfile = GEO.profiles.circle(0.022, 8);\nconst addSweep = (name, path, profile, material, parent, options = {}) => {\n  const curve = new THREE.CatmullRomCurve3(path.map(p => new THREE.Vector3(p[0], p[1], p[2])));\n  const geo = GEO.buildSweptProfile(path, profile, { samples: 20, caps: true, ...options });\n  return makeMesh(name, geo, material, parent);\n};\nfor (const s of [-1, 1]) {\n  addSweep(`Forked Nose Rail ${s < 0 ? 'Left' : 'Right'}`,\n    [[s * 0.14, 0.52, 0.84], [s * 0.17, 0.54, 0.61], [s * 0.20, 0.53, 0.32], [s * 0.22, 0.48, 0.10]],\n    railProfile, blue, kart);\n}\naddSweep('Thin Bridge Across Fork Tips',\n  [[-0.14, 0.52, 0.81], [0, 0.54, 0.84], [0.14, 0.52, 0.81]],\n  GEO.profiles.circle(0.018, 8), rust, kart);\n\nconst hoopPath = [\n  [-0.38, 0.49, -0.44], [-0.39, 0.72, -0.45], [-0.37, 0.98, -0.44],\n  [-0.30, 1.12, -0.43], [0, 1.16, -0.42],\n  [0.30, 1.12, -0.43], [0.37, 0.98, -0.44],\n  [0.39, 0.72, -0.45], [0.38, 0.49, -0.44]\n];\naddSweep('Arch Roll Bar with Twin Piers', hoopPath, GEO.profiles.circle(0.026, 10), charcoal, kart);\nfor (const s of [-1, 1]) {\n  makeMesh(`Roll Bar Foot ${s < 0 ? 'Left' : 'Right'}`, new THREE.BoxGeometry(0.12, 0.055, 0.12), rust, kart, [s * 0.36, 0.48, -0.43]);\n  makeMesh(`Roll Bar Brass Collar ${s < 0 ? 'Left' : 'Right'}`, new THREE.CylinderGeometry(0.044, 0.044, 0.045, 10), gold, kart, [s * 0.38, 0.72, -0.45]);\n}\n\nmakeMesh('Steering Column', new THREE.CylinderGeometry(0.025, 0.025, 0.30, 10), rust, kart, [0, 0.64, 0.22], [0.62, 0, 0]);\nmakeMesh('Steering Wheel Rim', new THREE.TorusGeometry(0.13, 0.018, 8, 20), charcoal, kart, [0, 0.77, 0.31]);\nmakeMesh('Steering Wheel Boss', new THREE.CylinderGeometry(0.043, 0.043, 0.045, 10), gold, kart, [0, 0.77, 0.31], [Math.PI / 2, 0, 0]);\nfor (let i = 0; i < 3; i++) {\n  const a = i * Math.PI * 2 / 3;\n  makeMesh(`Steering Spoke ${i + 1}`, new THREE.BoxGeometry(0.014, 0.12, 0.018), blue, kart,\n    [Math.sin(a) * 0.055, 0.77 + Math.cos(a) * 0.055, 0.31], [0, 0, -a]);\n}\nmakeMesh('Dash Pod', new THREE.BoxGeometry(0.32, 0.09, 0.10), charcoal, kart, [0, 0.62, 0.16]);\nmakeMesh('Dash Instrument Face', new THREE.BoxGeometry(0.19, 0.045, 0.012), ivory, kart, [0, 0.65, 0.213]);\nfor (let i = 0; i < 3; i++) {\n  makeMesh(`Dash Indicator ${i + 1}`, new THREE.SphereGeometry(0.018, 8, 6), i === 1 ? red : gold, kart,\n    [-0.055 + i * 0.055, 0.655, 0.224], null, [1, 0.65, 0.45]);\n}\nfor (const s of [-1, 1]) {\n  makeMesh(`Front Rust Skid Plate ${s < 0 ? 'Left' : 'Right'}`, new THREE.BoxGeometry(0.22, 0.035, 0.18), rust, kart, [s * 0.25, 0.41, 0.73], [0, 0, -0.12]);\n  makeMesh(`Front Sand Lamp ${s < 0 ? 'Left' : 'Right'}`, new THREE.SphereGeometry(0.052, 12, 8), ivory, kart, [s * 0.27, 0.59, 0.72], null, [1, 0.72, 0.45]);\n}\nmakeMesh('Signature Red Nose Inlay', new THREE.BoxGeometry(0.055, 0.022, 0.22), red, kart, [0, 0.586, 0.55], [0.15, 0, 0]);\nfor (const s of [-1, 1]) {\n  makeMesh(`Sensor Stalk ${s < 0 ? 'Left' : 'Right'}`, new THREE.CylinderGeometry(0.009, 0.012, 0.17, 8), rust, kart, [s * 0.23, 0.69, -0.63], [0.16, 0, s * 0.1]);\n  makeMesh(`Sensor Tip ${s < 0 ? 'Left' : 'Right'}`, new THREE.SphereGeometry(0.024, 10, 8), blue, kart, [s * 0.245, 0.775, -0.64]);\n}\nmakeMesh('Rear Antenna Stalk', new THREE.CylinderGeometry(0.008, 0.012, 0.22, 8), charcoal, kart, [0, 0.68, -0.78], [0.15, 0, 0]);\nmakeMesh('Rear Antenna Rust Tip', new THREE.SphereGeometry(0.026, 10, 8), rust, kart, [0, 0.795, -0.80]);\n\nconst rider = new THREE.Group();\nrider.name = 'Plum Comet Racer';\nrider.position.set(1.02, 0.4, 0.02);\ngroup.add(rider);\n\nconst capsule = (name, a, b, radius, material, parent, radius2 = radius) => {\n  const av = new THREE.Vector3(...a);\n  const bv = new THREE.Vector3(...b);\n  const d = new THREE.Vector3().subVectors(bv, av);\n  const geo = new THREE.CapsuleGeometry(radius, Math.max(0.01, d.length() - radius * 2), 5, 10);\n  const mesh = new THREE.Mesh(geo, material);\n  mesh.name = name;\n  mesh.position.copy(av.add(bv).multiplyScalar(0.5));\n  mesh.quaternion.setFromUnitVectors(new THREE.Vector3(0, 1, 0), d.normalize());\n  if (radius2 !== radius) mesh.scale.set(radius2 / radius, 1, 1);\n  parent.add(mesh);\n  return mesh;\n};\n\nmakeMesh('Racer Pelvis', new THREE.SphereGeometry(0.22, 14, 10), blue, rider, [0, 0.92, 0], null, [1.05, 0.72, 0.78]);\nmakeMesh('Racer Suit Torso', new THREE.SphereGeometry(0.30, 16, 12), purple, rider, [0, 1.22, 0], [0.10, 0, 0], [0.84, 1.18, 0.64]);\nmakeMesh('Sand Chest Panel', new THREE.BoxGeometry(0.28, 0.33, 0.025), sand, rider, [0, 1.27, 0.193], [0.10, 0, 0]);\nmakeMesh('Cobalt Chest Harness', new THREE.BoxGeometry(0.085, 0.44, 0.045), blue, rider, [0, 1.23, 0.215], [0.10, 0, 0]);\nmakeMesh('Signature Red Chest Badge', new THREE.SphereGeometry(0.055, 12, 8), red, rider, [0.12, 1.30, 0.225], null, [1, 1, 0.42]);\nmakeMesh('Racer Belt', new THREE.BoxGeometry(0.36, 0.075, 0.34), charcoal, rider, [0, 1.00, 0]);\nmakeMesh('Brass Belt Buckle', new THREE.BoxGeometry(0.10, 0.065, 0.035), gold, rider, [0, 1.00, 0.177]);\n\ncapsule('Left Trouser Leg', [-0.12, 0.93, 0], [-0.19, 0.54, 0.055], 0.105, blue, rider);\ncapsule('Right Trouser Leg', [0.12, 0.93, 0], [0.19, 0.54, 0.055], 0.105, blue, rider);\nmakeMesh('Left Racing Boot', new THREE.BoxGeometry(0.22, 0.13, 0.30), charcoal, rider, [-0.20, 0.48, 0.11], [0, 0.08, 0]);\nmakeMesh('Right Racing Boot', new THREE.BoxGeometry(0.22, 0.13, 0.30), charcoal, rider, [0.20, 0.48, 0.11], [0, -0.08, 0]);\nfor (const s of [-1, 1]) {\n  makeMesh(`Boot Sand Toe ${s < 0 ? 'Left' : 'Right'}`, new THREE.BoxGeometry(0.16, 0.055, 0.06), sand, rider, [s * 0.20, 0.46, 0.25]);\n}\n\ncapsule('Left Upper Sleeve', [-0.23, 1.39, 0], [-0.39, 1.20, 0.04], 0.105, purple, rider);\ncapsule('Left Forearm', [-0.39, 1.20, 0.04], [-0.43, 1.02, 0.12], 0.078, blue, rider);\nmakeMesh('Left Glove', new THREE.SphereGeometry(0.095, 12, 8), charcoal, rider, [-0.43, 0.99, 0.13], null, [0.9, 0.85, 1.1]);\ncapsule('Right Upper Sleeve', [0.23, 1.39, 0], [0.40, 1.55, 0.02], 0.105, purple, rider);\ncapsule('Right Forearm Raised', [0.40, 1.55, 0.02], [0.48, 1.72, 0.04], 0.078, blue, rider);\nmakeMesh('Right Glove Raised', new THREE.SphereGeometry(0.10, 12, 8), charcoal, rider, [0.49, 1.76, 0.04], null, [0.9, 1.0, 0.75]);\nfor (let i = 0; i < 3; i++) {\n  capsule(`Glove Finger ${i + 1}`, [0.46 + i * 0.025, 1.79, 0.06], [0.45 + i * 0.04, 1.84, 0.06], 0.025, charcoal, rider);\n}\n\nmakeMesh('Racer Neck', new THREE.CylinderGeometry(0.09, 0.10, 0.13, 12), skin, rider, [0, 1.50, 0]);\nmakeMesh('Racer Face', new THREE.SphereGeometry(0.19, 16, 12), skin, rider, [0, 1.66, 0.035], null, [0.92, 1.0, 0.82]);\nmakeMesh('Racer Helmet Shell', new THREE.SphereGeometry(0.255, 18, 14), purple, rider, [0, 1.78, -0.005], null, [1.08, 0.88, 0.96]);\nmakeMesh('Helmet Sand Crown Stripe', new THREE.BoxGeometry(0.075, 0.34, 0.035), sand, rider, [0, 1.82, 0.232], [0.08, 0, 0]);\nmakeMesh('Helmet Signature Red Pinstripe', new THREE.BoxGeometry(0.027, 0.28, 0.016), red, rider, [0.065, 1.83, 0.249], [0.08, 0, 0]);\nmakeMesh('Helmet Visor Rim', new THREE.BoxGeometry(0.38, 0.115, 0.075), charcoal, rider, [0, 1.69, 0.199], [0.10, 0, 0]);\nmakeMesh('Smoky Racing Visor', new THREE.BoxGeometry(0.32, 0.078, 0.045), glass, rider, [0, 1.70, 0.242], [0.10, 0, 0]);\nfor (const s of [-1, 1]) {\n  makeMesh(`Racer Eye ${s < 0 ? 'Left' : 'Right'}`, new THREE.SphereGeometry(0.040, 10, 8), white, rider, [s * 0.072, 1.655, 0.194], null, [0.78, 1, 0.5]);\n  makeMesh(`Racer Pupil ${s < 0 ? 'Left' : 'Right'}`, new THREE.SphereGeometry(0.018, 8, 6), charcoal, rider, [s * 0.069, 1.65, 0.218]);\n}\nmakeMesh('Racer Nose', new THREE.SphereGeometry(0.052, 12, 8), skin, rider, [0, 1.60, 0.218], null, [1.0, 0.75, 0.75]);\nfor (const s of [-1, 1]) {\n  makeMesh(`Racer Moustache ${s < 0 ? 'Left' : 'Right'}`, new THREE.SphereGeometry(0.078, 12, 8), charcoal, rider,\n    [s * 0.063, 1.574, 0.223], [0, 0, s * 0.16], [1.0, 0.55, 0.55]);\n}\nmakeMesh('Helmet Brass Ear Stud Left', new THREE.CylinderGeometry(0.035, 0.035, 0.028, 10), gold, rider, [-0.25, 1.78, 0], [0, 0, Math.PI / 2]);\nmakeMesh('Helmet Brass Ear Stud Right', new THREE.CylinderGeometry(0.035, 0.035, 0.028, 10), gold, rider, [0.25, 1.78, 0], [0, 0, Math.PI / 2]);\n\nreturn group;","tone":{"lighting":{"hemi":{"sky":"#fff0d5","ground":"#34302c","intensity":0.62},"sun":{"color":"#ffcf91","intensity":2.5,"position":[-7,5,3]},"ambient":{"color":"#fff7ea","intensity":0.28}},"shadows":true},"animations":[],"usage":{"requests":2,"generations":0,"promptTokens":83484,"completionTokens":29221,"totalTokens":112705,"cost":0.0206453511,"activeMs":0,"ratingSum":0,"ratingCount":0,"judgeCost":0},"startedAt":1792908145294,"completedAt":1792908295749,"durationMs":150455,"report":"Parts: 109 meshes, 11593 triangles. Size: 3.14 x 2.02 x 1.75 (X x Y x Z). Lowest point Y=0.000.\nGeometry defects found by the validator:\n- Arch Roll Bar with Twin Piers [sweep]: 20 edges with inconsistent triangle winding\n- Left Trouser Leg [primitive]: 20 degenerate (zero-area) triangles\n- Right Trouser Leg [primitive]: 20 degenerate (zero-area) triangles\n- Left Upper Sleeve [primitive]: 20 degenerate (zero-area) triangles\n- Left Forearm [primitive]: 20 degenerate (zero-area) triangles\n- Right Upper Sleeve [primitive]: 20 degenerate (zero-area) triangles","sliceCount":1,"sliceIds":["gen-agent-7-mvnf7ury-zqmzr-s1"],"judging":{"status":"done","judges":[{"model":"deepseek/deepseek-v4.1-flash-1017","label":"DeepSeek v4.1 Flash","error":"The judge did not return valid JSON scores.","durationMs":25284},{"scores":{"silhouette":6,"proportion":5,"detail":5,"materials":5,"assembly":4,"readability":5},"average":5,"notes":"The kart and helmeted racer are recognizable, with a clear purple, sand, and red theme and several purposeful kart details. The rider appears to float rather than sit or stand naturally, some limbs and boots look disconnected, and the very dark render obscures much of the build.","model":"openai/gpt-6-luna","label":"GPT-6 Luna","usage":{"prompt_tokens":7264,"completion_tokens":742,"total_tokens":8006,"cost":0.00126613575,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":7261,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.001278925,"upstream_inference_prompt_cost":0.000907925,"upstream_inference_completions_cost":0.000371},"completion_tokens_details":{"reasoning_tokens":649,"image_tokens":0,"audio_tokens":0}},"durationMs":10152},{"scores":{"silhouette":5,"proportion":5,"detail":6,"materials":4,"assembly":5,"readability":4},"average":4.833333333333333,"notes":"The kart reads as a buggy with a roll bar and the rider as a helmeted figure, but the renders are so dark that the materials and colour scheme barely show. The rider's torso and limbs look chunky and disjointed, and the lighting leaves much of the model in near-black.","model":"anthropic/claude-haiku-5.5","label":"Claude Haiku 5.5","usage":{"prompt_tokens":9795,"completion_tokens":143,"total_tokens":9938,"cost":0.00104049,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.001051,"upstream_inference_prompt_cost":0.0009795,"upstream_inference_completions_cost":0.0000715},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}},"durationMs":11970}],"score":4.916666666666666,"cost":0.00230662575,"tokens":17944,"at":1792908321289},"thumbUrl":"https://futurelabs.now/apps/images/u2/gen-agent-7-mvnf7ury-zqmzr.png"},"slices":[{"id":"gen-agent-7-mvnf7ury-zqmzr-s1","index":1,"summary":"Single shot","final":false,"code":"const group = new THREE.Group();\ngroup.name = 'Violet Comet Kart and Racer';\n\nSCENE.setLighting({\n  hemi: { sky: '#fff0d5', ground: '#34302c', intensity: 0.62 },\n  sun: { color: '#ffcf91', intensity: 2.5, position: [-7, 5, 3] },\n  ambient: { color: '#fff7ea', intensity: 0.28 },\n  shadows: true\n});\n\nconst mat = (name, color, roughness, metalness) => {\n  const m = new THREE.MeshStandardMaterial({ color, roughness, metalness });\n  m.name = name;\n  return m;\n};\n\nconst purple = mat('Anodized Plum', 0x733576, 0.29, 1);\nconst blue = mat('Cobalt Anodized Metal', 0x334ad3, 0.27, 1);\nconst sand = mat('Sun Bleached Sand', 0xcbb88b, 0.7, 0);\nconst charcoal = mat('Charcoal Rubber and Trim', 0x25272b, 0.9, 0);\nconst rust = mat('Rust Bronze Metal', 0x9a5135, 0.36, 1);\nconst red = mat('Signature Racing Red', 0xdd0303, 0.32, 0);\nconst glass = mat('Smoky Visor', 0x283743, 0.22, 1);\nconst skin = mat('Warm Skin', 0xc98d62, 0.78, 0);\nconst ivory = mat('Warm Ivory', 0xf1e5c5, 0.6, 0);\nconst white = mat('Eye White', 0xf3eee1, 0.45, 0);\nconst gold = mat('Brushed Brass', 0xd5a94f, 0.28, 1);\n\nconst makeMesh = (name, geometry, material, parent, position, rotation, scale) => {\n  const mesh = new THREE.Mesh(geometry, material);\n  mesh.name = name;\n  if (position) mesh.position.set(position[0], position[1], position[2]);\n  if (rotation) mesh.rotation.set(rotation[0], rotation[1], rotation[2]);\n  if (scale) mesh.scale.set(scale[0], scale[1], scale[2]);\n  parent.add(mesh);\n  return mesh;\n};\n\nconst kart = new THREE.Group();\nkart.name = 'Comet Kart';\nkart.position.set(-0.92, 0.4, 0);\ngroup.add(kart);\n\nconst anchors = [\n  { t: 0.00, beam: 0.035, chine: 0.030, chineY: 0.42, keelY: 0.36, gunY: 0.46 },\n  { t: 0.10, beam: 0.220, chine: 0.180, chineY: 0.28, keelY: 0.23, gunY: 0.52 },\n  { t: 0.22, beam: 0.420, chine: 0.340, chineY: 0.22, keelY: 0.18, gunY: 0.58 },\n  { t: 0.45, beam: 0.530, chine: 0.440, chineY: 0.20, keelY: 0.16, gunY: 0.55 },\n  { t: 0.72, beam: 0.510, chine: 0.420, chineY: 0.19, keelY: 0.16, gunY: 0.53 },\n  { t: 0.90, beam: 0.420, chine: 0.340, chineY: 0.20, keelY: 0.17, gunY: 0.51 },\n  { t: 1.00, beam: 0.360, chine: 0.300, chineY: 0.21, keelY: 0.18, gunY: 0.50 }\n];\nconst stations = Array.from({ length: 17 }, (_, i) => {\n  const t = i / 16;\n  let a = anchors[0], b = anchors[anchors.length - 1];\n  for (let j = 0; j < anchors.length - 1; j++) {\n    if (t >= anchors[j].t && t <= anchors[j + 1].t) {\n      a = anchors[j]; b = anchors[j + 1]; break;\n    }\n  }\n  const f = (t - a.t) / (b.t - a.t);\n  const smooth = f * f * (3 - 2 * f);\n  return {\n    t,\n    beam: a.beam + (b.beam - a.beam) * smooth,\n    chine: a.chine + (b.chine - a.chine) * smooth,\n    chineY: a.chineY + (b.chineY - a.chineY) * smooth,\n    keelY: a.keelY + (b.keelY - a.keelY) * smooth,\n    gunY: a.gunY + (b.gunY - a.gunY) * smooth\n  };\n});\nconst hull = GEO.createHull({ length: 1.75, stations, chine: 'hard', keel: 'sharp', samples: 32 });\nmakeMesh('Kart Hull Shell', hull.geometry, purple, kart, [0, 0, 0]);\n\nconst deckGeo = hull.buildDeck({ y: 0.49, inset: 0.055, thickness: 0.025 });\nmakeMesh('Inset Sand Deck', deckGeo, sand, kart, [0, 0, 0]);\n\nmakeMesh('Cockpit Seat Cushion', new THREE.BoxGeometry(0.46, 0.10, 0.40), charcoal, kart, [0, 0.54, -0.22], [0, 0, 0], [1, 1, 1]);\nmakeMesh('Cockpit Seat Back', new THREE.BoxGeometry(0.44, 0.34, 0.10), purple, kart, [0, 0.69, -0.44], [-0.13, 0, 0], [1, 1, 1]);\nmakeMesh('Seat Back Inlay', new THREE.BoxGeometry(0.23, 0.20, 0.018), blue, kart, [0, 0.70, -0.382]);\n\nconst tireGeo = new THREE.CylinderGeometry(0.245, 0.245, 0.17, 20, 1);\nconst hubGeo = new THREE.CylinderGeometry(0.145, 0.145, 0.184, 16, 1);\nconst hubCapGeo = new THREE.CylinderGeometry(0.075, 0.075, 0.192, 12, 1);\nconst wheelPositions = [\n  [-0.52, 0.26, 0.53], [0.52, 0.26, 0.53],\n  [-0.52, 0.26, -0.55], [0.52, 0.26, -0.55]\n];\nfor (let i = 0; i < wheelPositions.length; i++) {\n  const p = wheelPositions[i];\n  const side = p[0] < 0 ? 'Left' : 'Right';\n  const end = p[2] > 0 ? 'Front' : 'Rear';\n  const label = `${end} ${side}`;\n  makeMesh(`${label} Tire`, tireGeo, charcoal, kart, p, [0, 0, Math.PI / 2]);\n  makeMesh(`${label} Blue Alloy Wheel`, hubGeo, blue, kart, p, [0, 0, Math.PI / 2]);\n  makeMesh(`${label} Brass Hub`, hubCapGeo, gold, kart, p, [0, 0, Math.PI / 2]);\n  const treadGeo = new THREE.BoxGeometry(0.19, 0.038, 0.055);\n  for (let k = 0; k < 6; k++) {\n    const a = (k / 6) * Math.PI * 2;\n    makeMesh(`${label} Tread ${String(k + 1).padStart(2, '0')}`, treadGeo, charcoal, kart,\n      [p[0], p[1] + Math.sin(a) * 0.238, p[2] + Math.cos(a) * 0.238],\n      [a, 0, Math.PI / 2]);\n  }\n}\n\nconst railProfile = GEO.profiles.circle(0.022, 8);\nconst addSweep = (name, path, profile, material, parent, options = {}) => {\n  const curve = new THREE.CatmullRomCurve3(path.map(p => new THREE.Vector3(p[0], p[1], p[2])));\n  const geo = GEO.buildSweptProfile(path, profile, { samples: 20, caps: true, ...options });\n  return makeMesh(name, geo, material, parent);\n};\nfor (const s of [-1, 1]) {\n  addSweep(`Forked Nose Rail ${s < 0 ? 'Left' : 'Right'}`,\n    [[s * 0.14, 0.52, 0.84], [s * 0.17, 0.54, 0.61], [s * 0.20, 0.53, 0.32], [s * 0.22, 0.48, 0.10]],\n    railProfile, blue, kart);\n}\naddSweep('Thin Bridge Across Fork Tips',\n  [[-0.14, 0.52, 0.81], [0, 0.54, 0.84], [0.14, 0.52, 0.81]],\n  GEO.profiles.circle(0.018, 8), rust, kart);\n\nconst hoopPath = [\n  [-0.38, 0.49, -0.44], [-0.39, 0.72, -0.45], [-0.37, 0.98, -0.44],\n  [-0.30, 1.12, -0.43], [0, 1.16, -0.42],\n  [0.30, 1.12, -0.43], [0.37, 0.98, -0.44],\n  [0.39, 0.72, -0.45], [0.38, 0.49, -0.44]\n];\naddSweep('Arch Roll Bar with Twin Piers', hoopPath, GEO.profiles.circle(0.026, 10), charcoal, kart);\nfor (const s of [-1, 1]) {\n  makeMesh(`Roll Bar Foot ${s < 0 ? 'Left' : 'Right'}`, new THREE.BoxGeometry(0.12, 0.055, 0.12), rust, kart, [s * 0.36, 0.48, -0.43]);\n  makeMesh(`Roll Bar Brass Collar ${s < 0 ? 'Left' : 'Right'}`, new THREE.CylinderGeometry(0.044, 0.044, 0.045, 10), gold, kart, [s * 0.38, 0.72, -0.45]);\n}\n\nmakeMesh('Steering Column', new THREE.CylinderGeometry(0.025, 0.025, 0.30, 10), rust, kart, [0, 0.64, 0.22], [0.62, 0, 0]);\nmakeMesh('Steering Wheel Rim', new THREE.TorusGeometry(0.13, 0.018, 8, 20), charcoal, kart, [0, 0.77, 0.31]);\nmakeMesh('Steering Wheel Boss', new THREE.CylinderGeometry(0.043, 0.043, 0.045, 10), gold, kart, [0, 0.77, 0.31], [Math.PI / 2, 0, 0]);\nfor (let i = 0; i < 3; i++) {\n  const a = i * Math.PI * 2 / 3;\n  makeMesh(`Steering Spoke ${i + 1}`, new THREE.BoxGeometry(0.014, 0.12, 0.018), blue, kart,\n    [Math.sin(a) * 0.055, 0.77 + Math.cos(a) * 0.055, 0.31], [0, 0, -a]);\n}\nmakeMesh('Dash Pod', new THREE.BoxGeometry(0.32, 0.09, 0.10), charcoal, kart, [0, 0.62, 0.16]);\nmakeMesh('Dash Instrument Face', new THREE.BoxGeometry(0.19, 0.045, 0.012), ivory, kart, [0, 0.65, 0.213]);\nfor (let i = 0; i < 3; i++) {\n  makeMesh(`Dash Indicator ${i + 1}`, new THREE.SphereGeometry(0.018, 8, 6), i === 1 ? red : gold, kart,\n    [-0.055 + i * 0.055, 0.655, 0.224], null, [1, 0.65, 0.45]);\n}\nfor (const s of [-1, 1]) {\n  makeMesh(`Front Rust Skid Plate ${s < 0 ? 'Left' : 'Right'}`, new THREE.BoxGeometry(0.22, 0.035, 0.18), rust, kart, [s * 0.25, 0.41, 0.73], [0, 0, -0.12]);\n  makeMesh(`Front Sand Lamp ${s < 0 ? 'Left' : 'Right'}`, new THREE.SphereGeometry(0.052, 12, 8), ivory, kart, [s * 0.27, 0.59, 0.72], null, [1, 0.72, 0.45]);\n}\nmakeMesh('Signature Red Nose Inlay', new THREE.BoxGeometry(0.055, 0.022, 0.22), red, kart, [0, 0.586, 0.55], [0.15, 0, 0]);\nfor (const s of [-1, 1]) {\n  makeMesh(`Sensor Stalk ${s < 0 ? 'Left' : 'Right'}`, new THREE.CylinderGeometry(0.009, 0.012, 0.17, 8), rust, kart, [s * 0.23, 0.69, -0.63], [0.16, 0, s * 0.1]);\n  makeMesh(`Sensor Tip ${s < 0 ? 'Left' : 'Right'}`, new THREE.SphereGeometry(0.024, 10, 8), blue, kart, [s * 0.245, 0.775, -0.64]);\n}\nmakeMesh('Rear Antenna Stalk', new THREE.CylinderGeometry(0.008, 0.012, 0.22, 8), charcoal, kart, [0, 0.68, -0.78], [0.15, 0, 0]);\nmakeMesh('Rear Antenna Rust Tip', new THREE.SphereGeometry(0.026, 10, 8), rust, kart, [0, 0.795, -0.80]);\n\nconst rider = new THREE.Group();\nrider.name = 'Plum Comet Racer';\nrider.position.set(1.02, 0.4, 0.02);\ngroup.add(rider);\n\nconst capsule = (name, a, b, radius, material, parent, radius2 = radius) => {\n  const av = new THREE.Vector3(...a);\n  const bv = new THREE.Vector3(...b);\n  const d = new THREE.Vector3().subVectors(bv, av);\n  const geo = new THREE.CapsuleGeometry(radius, Math.max(0.01, d.length() - radius * 2), 5, 10);\n  const mesh = new THREE.Mesh(geo, material);\n  mesh.name = name;\n  mesh.position.copy(av.add(bv).multiplyScalar(0.5));\n  mesh.quaternion.setFromUnitVectors(new THREE.Vector3(0, 1, 0), d.normalize());\n  if (radius2 !== radius) mesh.scale.set(radius2 / radius, 1, 1);\n  parent.add(mesh);\n  return mesh;\n};\n\nmakeMesh('Racer Pelvis', new THREE.SphereGeometry(0.22, 14, 10), blue, rider, [0, 0.92, 0], null, [1.05, 0.72, 0.78]);\nmakeMesh('Racer Suit Torso', new THREE.SphereGeometry(0.30, 16, 12), purple, rider, [0, 1.22, 0], [0.10, 0, 0], [0.84, 1.18, 0.64]);\nmakeMesh('Sand Chest Panel', new THREE.BoxGeometry(0.28, 0.33, 0.025), sand, rider, [0, 1.27, 0.193], [0.10, 0, 0]);\nmakeMesh('Cobalt Chest Harness', new THREE.BoxGeometry(0.085, 0.44, 0.045), blue, rider, [0, 1.23, 0.215], [0.10, 0, 0]);\nmakeMesh('Signature Red Chest Badge', new THREE.SphereGeometry(0.055, 12, 8), red, rider, [0.12, 1.30, 0.225], null, [1, 1, 0.42]);\nmakeMesh('Racer Belt', new THREE.BoxGeometry(0.36, 0.075, 0.34), charcoal, rider, [0, 1.00, 0]);\nmakeMesh('Brass Belt Buckle', new THREE.BoxGeometry(0.10, 0.065, 0.035), gold, rider, [0, 1.00, 0.177]);\n\ncapsule('Left Trouser Leg', [-0.12, 0.93, 0], [-0.19, 0.54, 0.055], 0.105, blue, rider);\ncapsule('Right Trouser Leg', [0.12, 0.93, 0], [0.19, 0.54, 0.055], 0.105, blue, rider);\nmakeMesh('Left Racing Boot', new THREE.BoxGeometry(0.22, 0.13, 0.30), charcoal, rider, [-0.20, 0.48, 0.11], [0, 0.08, 0]);\nmakeMesh('Right Racing Boot', new THREE.BoxGeometry(0.22, 0.13, 0.30), charcoal, rider, [0.20, 0.48, 0.11], [0, -0.08, 0]);\nfor (const s of [-1, 1]) {\n  makeMesh(`Boot Sand Toe ${s < 0 ? 'Left' : 'Right'}`, new THREE.BoxGeometry(0.16, 0.055, 0.06), sand, rider, [s * 0.20, 0.46, 0.25]);\n}\n\ncapsule('Left Upper Sleeve', [-0.23, 1.39, 0], [-0.39, 1.20, 0.04], 0.105, purple, rider);\ncapsule('Left Forearm', [-0.39, 1.20, 0.04], [-0.43, 1.02, 0.12], 0.078, blue, rider);\nmakeMesh('Left Glove', new THREE.SphereGeometry(0.095, 12, 8), charcoal, rider, [-0.43, 0.99, 0.13], null, [0.9, 0.85, 1.1]);\ncapsule('Right Upper Sleeve', [0.23, 1.39, 0], [0.40, 1.55, 0.02], 0.105, purple, rider);\ncapsule('Right Forearm Raised', [0.40, 1.55, 0.02], [0.48, 1.72, 0.04], 0.078, blue, rider);\nmakeMesh('Right Glove Raised', new THREE.SphereGeometry(0.10, 12, 8), charcoal, rider, [0.49, 1.76, 0.04], null, [0.9, 1.0, 0.75]);\nfor (let i = 0; i < 3; i++) {\n  capsule(`Glove Finger ${i + 1}`, [0.46 + i * 0.025, 1.79, 0.06], [0.45 + i * 0.04, 1.84, 0.06], 0.025, charcoal, rider);\n}\n\nmakeMesh('Racer Neck', new THREE.CylinderGeometry(0.09, 0.10, 0.13, 12), skin, rider, [0, 1.50, 0]);\nmakeMesh('Racer Face', new THREE.SphereGeometry(0.19, 16, 12), skin, rider, [0, 1.66, 0.035], null, [0.92, 1.0, 0.82]);\nmakeMesh('Racer Helmet Shell', new THREE.SphereGeometry(0.255, 18, 14), purple, rider, [0, 1.78, -0.005], null, [1.08, 0.88, 0.96]);\nmakeMesh('Helmet Sand Crown Stripe', new THREE.BoxGeometry(0.075, 0.34, 0.035), sand, rider, [0, 1.82, 0.232], [0.08, 0, 0]);\nmakeMesh('Helmet Signature Red Pinstripe', new THREE.BoxGeometry(0.027, 0.28, 0.016), red, rider, [0.065, 1.83, 0.249], [0.08, 0, 0]);\nmakeMesh('Helmet Visor Rim', new THREE.BoxGeometry(0.38, 0.115, 0.075), charcoal, rider, [0, 1.69, 0.199], [0.10, 0, 0]);\nmakeMesh('Smoky Racing Visor', new THREE.BoxGeometry(0.32, 0.078, 0.045), glass, rider, [0, 1.70, 0.242], [0.10, 0, 0]);\nfor (const s of [-1, 1]) {\n  makeMesh(`Racer Eye ${s < 0 ? 'Left' : 'Right'}`, new THREE.SphereGeometry(0.040, 10, 8), white, rider, [s * 0.072, 1.655, 0.194], null, [0.78, 1, 0.5]);\n  makeMesh(`Racer Pupil ${s < 0 ? 'Left' : 'Right'}`, new THREE.SphereGeometry(0.018, 8, 6), charcoal, rider, [s * 0.069, 1.65, 0.218]);\n}\nmakeMesh('Racer Nose', new THREE.SphereGeometry(0.052, 12, 8), skin, rider, [0, 1.60, 0.218], null, [1.0, 0.75, 0.75]);\nfor (const s of [-1, 1]) {\n  makeMesh(`Racer Moustache ${s < 0 ? 'Left' : 'Right'}`, new THREE.SphereGeometry(0.078, 12, 8), charcoal, rider,\n    [s * 0.063, 1.574, 0.223], [0, 0, s * 0.16], [1.0, 0.55, 0.55]);\n}\nmakeMesh('Helmet Brass Ear Stud Left', new THREE.CylinderGeometry(0.035, 0.035, 0.028, 10), gold, rider, [-0.25, 1.78, 0], [0, 0, Math.PI / 2]);\nmakeMesh('Helmet Brass Ear Stud Right', new THREE.CylinderGeometry(0.035, 0.035, 0.028, 10), gold, rider, [0.25, 1.78, 0], [0, 0, Math.PI / 2]);\n\nreturn group;","thumbUrl":"https://futurelabs.now/apps/images/u2/gen-agent-7-mvnf7ury-zqmzr-s1.png"}],"glbUrl":null}