{"version":1,"record":{"id":"gen-agent-4-mvnf7tzy-qin1u","agentId":"agent-4","agentName":"Tonyism","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":"SCENE.setAtmosphere('overcast');\nSCENE.setLighting({\n  hemi: { sky: '#d9efff', ground: '#34383a', intensity: 0.85 },\n  sun: { color: '#ffffff', intensity: 1.35, position: [5, 8, 5] },\n  ambient: { color: '#ffffff', intensity: 0.35 },\n  shadows: true\n});\n\nconst group = new THREE.Group();\ngroup.name = 'CloverKartAndRider';\n\nconst mat = (name, color, roughness, metalness = 0) => {\n  const m = new THREE.MeshStandardMaterial({ color, roughness, metalness });\n  m.name = name;\n  return m;\n};\n\nconst paint = mat('CloverGreenPaint', 0x27c668, 0.34, 0);\nconst leaf = mat('LeafAccentGreen', 0x93d457, 0.42, 0);\nconst signature = mat('SignatureLime', 0xb6ff2e, 0.32, 0);\nconst dark = mat('NearBlackRubberAndTrim', 0x111719, 0.72, 0);\nconst tireMat = mat('SoftBlackTireRubber', 0x171b1d, 0.92, 0);\nconst metal = mat('DarkBrushedMetal', 0x384348, 0.3, 1);\nconst cyan = mat('NeonCyanEdge', 0x00d9ef, 0.26, 0);\nconst glass = new THREE.MeshStandardMaterial({\n  color: 0x67edfa, roughness: 0.12, metalness: 0, transmission: 0.84,\n  transparent: true, opacity: 0.76, thickness: 0.025, ior: 1.32\n});\nglass.name = 'HighTransmissionCyanGlass';\nconst skin = mat('WarmFaceAndHands', 0xe8ad82, 0.78, 0);\nconst white = mat('SoftIvoryDetail', 0xf0f0d8, 0.48, 0);\n\nfunction part(parent, name, geometry, material, position, rotation = [0, 0, 0], scale = [1, 1, 1]) {\n  const mesh = new THREE.Mesh(geometry, material);\n  mesh.name = name;\n  mesh.position.set(position[0], position[1], position[2]);\n  mesh.rotation.set(rotation[0], rotation[1], rotation[2]);\n  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 = 'Kart';\nkart.position.set(-0.78, 0, 0);\ngroup.add(kart);\n\nconst chassis = new THREE.Group();\nchassis.name = 'Kart.ChassisAndBody';\nkart.add(chassis);\n\npart(chassis, 'Kart.ChassisAndBody.Undertray',\n  new THREE.BoxGeometry(0.72, 0.1, 1.02), dark, [0, 0.26, -0.02]);\n\nconst bodyGeometry = GEO.buildFilletedSolid(0.78, 0.30, 1.35, 0.12);\npart(chassis, 'Kart.ChassisAndBody.MainLoftedBody', bodyGeometry, paint, [0, 0.39, 0]);\n\nconst sideTrim = new THREE.Group();\nsideTrim.name = 'Kart.SideTrim';\nchassis.add(sideTrim);\nfor (const s of [-1, 1]) {\n  const rail = new THREE.Mesh(\n    new THREE.BoxGeometry(0.035, 0.055, 0.92),\n    cyan\n  );\n  rail.name = `Kart.SideTrim.CyanEdge.${s < 0 ? 'Left' : 'Right'}`;\n  rail.position.set(s * 0.36, 0.39, -0.015);\n  sideTrim.add(rail);\n}\n\nconst fork = new THREE.Group();\nfork.name = 'Kart.ForkedLeafNose';\nchassis.add(fork);\nfor (const s of [-1, 1]) {\n  const path = [\n    new THREE.Vector3(s * 0.18, 0.39, 0.49),\n    new THREE.Vector3(s * 0.22, 0.4, 0.64),\n    new THREE.Vector3(s * 0.31, 0.42, 0.78),\n    new THREE.Vector3(s * 0.34, 0.43, 0.91)\n  ];\n  part(fork, `Kart.ForkedLeafNose.Prong.${s < 0 ? 'Left' : 'Right'}`,\n    GEO.buildSweptProfile(path, GEO.profiles.ellipse(0.075, 0.055), { samples: 18 }),\n    leaf, [0, 0, 0]);\n}\npart(fork, 'Kart.ForkedLeafNose.ThinConnectingBridge',\n  GEO.buildSweptProfile(\n    [\n      new THREE.Vector3(-0.34, 0.43, 0.91),\n      new THREE.Vector3(0, 0.435, 0.94),\n      new THREE.Vector3(0.34, 0.43, 0.91)\n    ],\n    GEO.profiles.ellipse(0.035, 0.027),\n    { samples: 16 }\n  ),\n  cyan, [0, 0, 0]);\n\nconst fascia = new THREE.Group();\nfascia.name = 'Kart.InsetWindowFascia';\nchassis.add(fascia);\npart(fascia, 'Kart.InsetWindowFascia.WallSlab',\n  new THREE.BoxGeometry(0.66, 0.22, 0.055), dark, [0, 0.385, 0.57]);\nfor (const s of [-1, 1]) {\n  part(fascia, `Kart.InsetWindowFascia.Window.${s < 0 ? 'Left' : 'Right'}`,\n    new THREE.BoxGeometry(0.205, 0.105, 0.018), glass, [s * 0.19, 0.39, 0.606]);\n  part(fascia, `Kart.InsetWindowFascia.WindowFrame.${s < 0 ? 'Left' : 'Right'}`,\n    new THREE.BoxGeometry(0.235, 0.014, 0.026), cyan, [s * 0.19, 0.448, 0.61]);\n}\n\nconst finGroup = new THREE.Group();\nfinGroup.name = 'Kart.EdgeFins';\nchassis.add(finGroup);\nfor (let i = 0; i < 5; i++) {\n  const z = 0.28 - i * 0.145;\n  part(finGroup, `Kart.EdgeFins.Fin.${String(i + 1).padStart(2, '0')}`,\n    new THREE.ConeGeometry(0.052, 0.16, 5),\n    i % 2 === 0 ? leaf : paint,\n    [0.36, 0.48, z],\n    [0, 0, -Math.PI / 2]);\n}\n\nconst wheels = new THREE.Group();\nwheels.name = 'Kart.WheelAssembly';\nkart.add(wheels);\nfor (const xSign of [-1, 1]) {\n  for (const zSign of [-1, 1]) {\n    const x = xSign * 0.435;\n    const z = zSign * 0.43;\n    const side = xSign < 0 ? 'Left' : 'Right';\n    const end = zSign > 0 ? 'Front' : 'Rear';\n    part(wheels, `Kart.WheelAssembly.Tire.${end}.${side}`,\n      new THREE.CylinderGeometry(0.19, 0.19, 0.14, 16),\n      tireMat, [x, 0.205, z], [0, 0, Math.PI / 2]);\n    part(wheels, `Kart.WheelAssembly.Rim.${end}.${side}`,\n      new THREE.CylinderGeometry(0.105, 0.105, 0.151, 12),\n      metal, [x, 0.205, z], [0, 0, Math.PI / 2]);\n    part(wheels, `Kart.WheelAssembly.Hub.${end}.${side}`,\n      new THREE.CylinderGeometry(0.047, 0.047, 0.158, 10),\n      signature, [x, 0.205, z], [0, 0, Math.PI / 2]);\n  }\n}\n\nconst cockpit = new THREE.Group();\ncockpit.name = 'Kart.Cockpit';\nkart.add(cockpit);\npart(cockpit, 'Kart.Cockpit.SeatBase',\n  new THREE.BoxGeometry(0.35, 0.09, 0.31), dark, [0, 0.51, -0.13]);\npart(cockpit, 'Kart.Cockpit.SeatBack',\n  new THREE.BoxGeometry(0.34, 0.3, 0.085), dark, [0, 0.65, -0.31], [-0.12, 0, 0]);\npart(cockpit, 'Kart.Cockpit.SeatCushion',\n  new THREE.BoxGeometry(0.28, 0.025, 0.2), leaf, [0, 0.565, -0.13]);\npart(cockpit, 'Kart.Cockpit.SteeringColumn',\n  new THREE.CylinderGeometry(0.025, 0.032, 0.27, 10), metal,\n  [0, 0.64, 0.17], [-0.25, 0, 0]);\npart(cockpit, 'Kart.Cockpit.SteeringWheel',\n  new THREE.TorusGeometry(0.105, 0.018, 8, 18), dark,\n  [0, 0.76, 0.22], [Math.PI / 2, 0, 0]);\npart(cockpit, 'Kart.Cockpit.WheelCenter',\n  new THREE.SphereGeometry(0.035, 10, 8), signature, [0, 0.76, 0.22]);\n\nconst engine = new THREE.Group();\nengine.name = 'Kart.RearEngine';\nkart.add(engine);\npart(engine, 'Kart.RearEngine.Housing',\n  new THREE.BoxGeometry(0.32, 0.13, 0.2), dark, [0, 0.46, -0.53]);\nfor (let i = 0; i < 4; i++) {\n  part(engine, `Kart.RearEngine.CoolingVent.${i + 1}`,\n    new THREE.BoxGeometry(0.035, 0.085, 0.015), metal,\n    [-0.105 + i * 0.07, 0.465, -0.423]);\n}\npart(engine, 'Kart.RearEngine.CenterBadge',\n  new THREE.SphereGeometry(0.045, 12, 8), signature, [0, 0.45, -0.42]);\n\nconst rider = new THREE.Group();\nrider.name = 'Rider';\nrider.position.set(0.78, 0, 0);\ngroup.add(rider);\n\nconst riderBody = new THREE.Group();\nriderBody.name = 'Rider.JumpsuitAndBody';\nrider.add(riderBody);\npart(riderBody, 'Rider.JumpsuitAndBody.Torso',\n  new THREE.SphereGeometry(1, 16, 12), paint, [0, 0.79, 0], [0, 0, 0], [0.205, 0.285, 0.145]);\npart(riderBody, 'Rider.JumpsuitAndBody.ChestPanel',\n  new THREE.SphereGeometry(1, 14, 10), leaf, [0, 0.82, 0.105], [0, 0, 0], [0.125, 0.15, 0.055]);\npart(riderBody, 'Rider.JumpsuitAndBody.Zipper',\n  new THREE.BoxGeometry(0.012, 0.19, 0.012), metal, [0, 0.79, 0.159]);\npart(riderBody, 'Rider.JumpsuitAndBody.SignatureEmblem',\n  new THREE.SphereGeometry(0.045, 10, 8), signature, [0.08, 0.87, 0.157], [0, 0, 0], [1.15, 0.75, 0.28]);\npart(riderBody, 'Rider.JumpsuitAndBody.Neck',\n  new THREE.CylinderGeometry(0.075, 0.08, 0.12, 12), skin, [0, 1.055, 0]);\npart(riderBody, 'Rider.JumpsuitAndBody.Face',\n  new THREE.SphereGeometry(1, 16, 12), skin, [0, 1.19, 0.012], [0, 0, 0], [0.145, 0.17, 0.14]);\n\nconst limbs = new THREE.Group();\nlimbs.name = 'Rider.Limbs';\nrider.add(limbs);\nfor (const s of [-1, 1]) {\n  const side = s < 0 ? 'Left' : 'Right';\n  part(limbs, `Rider.Limbs.Sleeve.${side}`,\n    new THREE.CylinderGeometry(0.075, 0.058, 0.31, 12), paint,\n    [s * 0.235, 0.79, 0.005], [0, 0, s * -0.56]);\n  part(limbs, `Rider.Limbs.Glove.${side}`,\n    new THREE.SphereGeometry(0.075, 12, 10), dark, [s * 0.315, 0.63, 0.05], [0, 0, 0], [1, 0.82, 1]);\n  part(limbs, `Rider.Limbs.Leg.${side}`,\n    new THREE.CylinderGeometry(0.095, 0.075, 0.34, 12), paint,\n    [s * 0.105, 0.405, -0.005], [0, 0, s * 0.08]);\n  part(limbs, `Rider.Limbs.Boot.${side}`,\n    new THREE.BoxGeometry(0.15, 0.12, 0.23), dark, [s * 0.11, 0.12, 0.045]);\n  part(limbs, `Rider.Limbs.BootToe.${side}`,\n    new THREE.BoxGeometry(0.13, 0.045, 0.08), leaf, [s * 0.11, 0.095, 0.13]);\n}\n\nconst helmet = new THREE.Group();\nhelmet.name = 'Rider.Helmet';\nrider.add(helmet);\npart(helmet, 'Rider.Helmet.Shell',\n  new THREE.SphereGeometry(1, 18, 14), dark, [0, 1.3, 0], [0, 0, 0], [0.205, 0.205, 0.19]);\npart(helmet, 'Rider.Helmet.CyanVisor',\n  new THREE.SphereGeometry(1, 16, 10), glass, [0, 1.285, 0.145], [0, 0, 0], [0.157, 0.075, 0.075]);\npart(helmet, 'Rider.Helmet.VisorRim',\n  new THREE.TorusGeometry(0.143, 0.014, 7, 18), cyan, [0, 1.285, 0.144], [0, 0, 0]);\npart(helmet, 'Rider.Helmet.LeafCrest',\n  new THREE.SphereGeometry(1, 12, 10), leaf, [0, 1.48, -0.005], [0, 0, 0], [0.065, 0.16, 0.06]);\npart(helmet, 'Rider.Helmet.SignatureStripe',\n  new THREE.BoxGeometry(0.035, 0.12, 0.12), signature, [0, 1.35, 0.165]);\n\nconst riderTrim = new THREE.Group();\nriderTrim.name = 'Rider.SuitDetails';\nrider.add(riderTrim);\nfor (const s of [-1, 1]) {\n  const side = s < 0 ? 'Left' : 'Right';\n  part(riderTrim, `Rider.SuitDetails.ShoulderStripe.${side}`,\n    new THREE.SphereGeometry(1, 10, 8), cyan, [s * 0.17, 0.94, 0.055], [0, 0, s * -0.3], [0.055, 0.08, 0.035]);\n  part(riderTrim, `Rider.SuitDetails.KneePad.${side}`,\n    new THREE.SphereGeometry(0.07, 10, 8), signature, [s * 0.105, 0.34, 0.075], [0, 0, 0], [1, 0.72, 0.3]);\n}\n\nreturn group;","tone":{"skyboxTop":"#8d98a6","skyboxBottom":"#c3cad2","lighting":{"hemi":{"sky":"#d9efff","ground":"#34383a","intensity":0.85},"sun":{"color":"#ffffff","intensity":1.35,"position":[5,8,5]},"ambient":{"color":"#ffffff","intensity":0.35}},"fog":{"color":"#bcc4cc","near":12,"far":60},"shadows":true},"animations":[],"usage":{"requests":2,"generations":0,"promptTokens":78531,"completionTokens":31413,"totalTokens":109944,"cost":0.02163833595,"activeMs":0,"ratingSum":0,"ratingCount":0,"judgeCost":0},"startedAt":1792908144287,"completedAt":1792908327063,"durationMs":182776,"report":"Parts: 66 meshes, 7771 triangles. Size: 2.46 x 1.62 x 1.65 (X x Y x Z). Lowest point Y=0.000.\nGeometry defects found by the validator:\n- Kart.EdgeFins.Fin.01 [primitive]: 5 degenerate (zero-area) triangles\n- Kart.EdgeFins.Fin.02 [primitive]: 5 degenerate (zero-area) triangles\n- Kart.EdgeFins.Fin.03 [primitive]: 5 degenerate (zero-area) triangles\n- Kart.EdgeFins.Fin.04 [primitive]: 5 degenerate (zero-area) triangles\n- Kart.EdgeFins.Fin.05 [primitive]: 5 degenerate (zero-area) triangles","sliceCount":1,"sliceIds":["gen-agent-4-mvnf7tzy-qin1u-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":24752},{"scores":{"silhouette":6,"proportion":6,"detail":6,"materials":6,"assembly":5,"readability":6},"average":5.833333333333333,"notes":"The green clover-themed kart and matching rider are recognizable, with clear color accents and useful cockpit and wheel details. The stiff rider pose and visibly separated gloves make the figure feel less finished, though keeping the rider apart from the kart suits the requested split-friendly layout.","model":"openai/gpt-6-luna","label":"GPT-6 Luna","usage":{"prompt_tokens":5911,"completion_tokens":747,"total_tokens":6658,"cost":0.001101177,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":5908,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.0011123,"upstream_inference_prompt_cost":0.0007388,"upstream_inference_completions_cost":0.0003735},"completion_tokens_details":{"reasoning_tokens":657,"image_tokens":0,"audio_tokens":0}},"durationMs":10487},{"scores":{"silhouette":6,"proportion":5,"detail":6,"materials":6,"assembly":5,"readability":6},"average":5.666666666666667,"notes":"Kart and rider are clearly recognisable and separated as requested, with a green clover theme and cyan/lime accents; the rider's helmet and torso are oversized relative to the kart, and the kart's rear wheels and nose fork read awkwardly. Five degenerate-triangle warnings on the fins are a minor build defect; the overall colour scheme is cohesive.","model":"anthropic/claude-haiku-5.5","label":"Claude Haiku 5.5","usage":{"prompt_tokens":8200,"completion_tokens":175,"total_tokens":8375,"cost":0.000898425,"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.0009075,"upstream_inference_prompt_cost":0.00082,"upstream_inference_completions_cost":0.0000875},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}},"durationMs":2681}],"score":5.75,"cost":0.001999602,"tokens":15033,"at":1792908352157},"thumbUrl":"https://futurelabs.now/apps/images/u2/gen-agent-4-mvnf7tzy-qin1u.png"},"slices":[{"id":"gen-agent-4-mvnf7tzy-qin1u-s1","index":1,"summary":"Single shot","final":false,"code":"SCENE.setAtmosphere('overcast');\nSCENE.setLighting({\n  hemi: { sky: '#d9efff', ground: '#34383a', intensity: 0.85 },\n  sun: { color: '#ffffff', intensity: 1.35, position: [5, 8, 5] },\n  ambient: { color: '#ffffff', intensity: 0.35 },\n  shadows: true\n});\n\nconst group = new THREE.Group();\ngroup.name = 'CloverKartAndRider';\n\nconst mat = (name, color, roughness, metalness = 0) => {\n  const m = new THREE.MeshStandardMaterial({ color, roughness, metalness });\n  m.name = name;\n  return m;\n};\n\nconst paint = mat('CloverGreenPaint', 0x27c668, 0.34, 0);\nconst leaf = mat('LeafAccentGreen', 0x93d457, 0.42, 0);\nconst signature = mat('SignatureLime', 0xb6ff2e, 0.32, 0);\nconst dark = mat('NearBlackRubberAndTrim', 0x111719, 0.72, 0);\nconst tireMat = mat('SoftBlackTireRubber', 0x171b1d, 0.92, 0);\nconst metal = mat('DarkBrushedMetal', 0x384348, 0.3, 1);\nconst cyan = mat('NeonCyanEdge', 0x00d9ef, 0.26, 0);\nconst glass = new THREE.MeshStandardMaterial({\n  color: 0x67edfa, roughness: 0.12, metalness: 0, transmission: 0.84,\n  transparent: true, opacity: 0.76, thickness: 0.025, ior: 1.32\n});\nglass.name = 'HighTransmissionCyanGlass';\nconst skin = mat('WarmFaceAndHands', 0xe8ad82, 0.78, 0);\nconst white = mat('SoftIvoryDetail', 0xf0f0d8, 0.48, 0);\n\nfunction part(parent, name, geometry, material, position, rotation = [0, 0, 0], scale = [1, 1, 1]) {\n  const mesh = new THREE.Mesh(geometry, material);\n  mesh.name = name;\n  mesh.position.set(position[0], position[1], position[2]);\n  mesh.rotation.set(rotation[0], rotation[1], rotation[2]);\n  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 = 'Kart';\nkart.position.set(-0.78, 0, 0);\ngroup.add(kart);\n\nconst chassis = new THREE.Group();\nchassis.name = 'Kart.ChassisAndBody';\nkart.add(chassis);\n\npart(chassis, 'Kart.ChassisAndBody.Undertray',\n  new THREE.BoxGeometry(0.72, 0.1, 1.02), dark, [0, 0.26, -0.02]);\n\nconst bodyGeometry = GEO.buildFilletedSolid(0.78, 0.30, 1.35, 0.12);\npart(chassis, 'Kart.ChassisAndBody.MainLoftedBody', bodyGeometry, paint, [0, 0.39, 0]);\n\nconst sideTrim = new THREE.Group();\nsideTrim.name = 'Kart.SideTrim';\nchassis.add(sideTrim);\nfor (const s of [-1, 1]) {\n  const rail = new THREE.Mesh(\n    new THREE.BoxGeometry(0.035, 0.055, 0.92),\n    cyan\n  );\n  rail.name = `Kart.SideTrim.CyanEdge.${s < 0 ? 'Left' : 'Right'}`;\n  rail.position.set(s * 0.36, 0.39, -0.015);\n  sideTrim.add(rail);\n}\n\nconst fork = new THREE.Group();\nfork.name = 'Kart.ForkedLeafNose';\nchassis.add(fork);\nfor (const s of [-1, 1]) {\n  const path = [\n    new THREE.Vector3(s * 0.18, 0.39, 0.49),\n    new THREE.Vector3(s * 0.22, 0.4, 0.64),\n    new THREE.Vector3(s * 0.31, 0.42, 0.78),\n    new THREE.Vector3(s * 0.34, 0.43, 0.91)\n  ];\n  part(fork, `Kart.ForkedLeafNose.Prong.${s < 0 ? 'Left' : 'Right'}`,\n    GEO.buildSweptProfile(path, GEO.profiles.ellipse(0.075, 0.055), { samples: 18 }),\n    leaf, [0, 0, 0]);\n}\npart(fork, 'Kart.ForkedLeafNose.ThinConnectingBridge',\n  GEO.buildSweptProfile(\n    [\n      new THREE.Vector3(-0.34, 0.43, 0.91),\n      new THREE.Vector3(0, 0.435, 0.94),\n      new THREE.Vector3(0.34, 0.43, 0.91)\n    ],\n    GEO.profiles.ellipse(0.035, 0.027),\n    { samples: 16 }\n  ),\n  cyan, [0, 0, 0]);\n\nconst fascia = new THREE.Group();\nfascia.name = 'Kart.InsetWindowFascia';\nchassis.add(fascia);\npart(fascia, 'Kart.InsetWindowFascia.WallSlab',\n  new THREE.BoxGeometry(0.66, 0.22, 0.055), dark, [0, 0.385, 0.57]);\nfor (const s of [-1, 1]) {\n  part(fascia, `Kart.InsetWindowFascia.Window.${s < 0 ? 'Left' : 'Right'}`,\n    new THREE.BoxGeometry(0.205, 0.105, 0.018), glass, [s * 0.19, 0.39, 0.606]);\n  part(fascia, `Kart.InsetWindowFascia.WindowFrame.${s < 0 ? 'Left' : 'Right'}`,\n    new THREE.BoxGeometry(0.235, 0.014, 0.026), cyan, [s * 0.19, 0.448, 0.61]);\n}\n\nconst finGroup = new THREE.Group();\nfinGroup.name = 'Kart.EdgeFins';\nchassis.add(finGroup);\nfor (let i = 0; i < 5; i++) {\n  const z = 0.28 - i * 0.145;\n  part(finGroup, `Kart.EdgeFins.Fin.${String(i + 1).padStart(2, '0')}`,\n    new THREE.ConeGeometry(0.052, 0.16, 5),\n    i % 2 === 0 ? leaf : paint,\n    [0.36, 0.48, z],\n    [0, 0, -Math.PI / 2]);\n}\n\nconst wheels = new THREE.Group();\nwheels.name = 'Kart.WheelAssembly';\nkart.add(wheels);\nfor (const xSign of [-1, 1]) {\n  for (const zSign of [-1, 1]) {\n    const x = xSign * 0.435;\n    const z = zSign * 0.43;\n    const side = xSign < 0 ? 'Left' : 'Right';\n    const end = zSign > 0 ? 'Front' : 'Rear';\n    part(wheels, `Kart.WheelAssembly.Tire.${end}.${side}`,\n      new THREE.CylinderGeometry(0.19, 0.19, 0.14, 16),\n      tireMat, [x, 0.205, z], [0, 0, Math.PI / 2]);\n    part(wheels, `Kart.WheelAssembly.Rim.${end}.${side}`,\n      new THREE.CylinderGeometry(0.105, 0.105, 0.151, 12),\n      metal, [x, 0.205, z], [0, 0, Math.PI / 2]);\n    part(wheels, `Kart.WheelAssembly.Hub.${end}.${side}`,\n      new THREE.CylinderGeometry(0.047, 0.047, 0.158, 10),\n      signature, [x, 0.205, z], [0, 0, Math.PI / 2]);\n  }\n}\n\nconst cockpit = new THREE.Group();\ncockpit.name = 'Kart.Cockpit';\nkart.add(cockpit);\npart(cockpit, 'Kart.Cockpit.SeatBase',\n  new THREE.BoxGeometry(0.35, 0.09, 0.31), dark, [0, 0.51, -0.13]);\npart(cockpit, 'Kart.Cockpit.SeatBack',\n  new THREE.BoxGeometry(0.34, 0.3, 0.085), dark, [0, 0.65, -0.31], [-0.12, 0, 0]);\npart(cockpit, 'Kart.Cockpit.SeatCushion',\n  new THREE.BoxGeometry(0.28, 0.025, 0.2), leaf, [0, 0.565, -0.13]);\npart(cockpit, 'Kart.Cockpit.SteeringColumn',\n  new THREE.CylinderGeometry(0.025, 0.032, 0.27, 10), metal,\n  [0, 0.64, 0.17], [-0.25, 0, 0]);\npart(cockpit, 'Kart.Cockpit.SteeringWheel',\n  new THREE.TorusGeometry(0.105, 0.018, 8, 18), dark,\n  [0, 0.76, 0.22], [Math.PI / 2, 0, 0]);\npart(cockpit, 'Kart.Cockpit.WheelCenter',\n  new THREE.SphereGeometry(0.035, 10, 8), signature, [0, 0.76, 0.22]);\n\nconst engine = new THREE.Group();\nengine.name = 'Kart.RearEngine';\nkart.add(engine);\npart(engine, 'Kart.RearEngine.Housing',\n  new THREE.BoxGeometry(0.32, 0.13, 0.2), dark, [0, 0.46, -0.53]);\nfor (let i = 0; i < 4; i++) {\n  part(engine, `Kart.RearEngine.CoolingVent.${i + 1}`,\n    new THREE.BoxGeometry(0.035, 0.085, 0.015), metal,\n    [-0.105 + i * 0.07, 0.465, -0.423]);\n}\npart(engine, 'Kart.RearEngine.CenterBadge',\n  new THREE.SphereGeometry(0.045, 12, 8), signature, [0, 0.45, -0.42]);\n\nconst rider = new THREE.Group();\nrider.name = 'Rider';\nrider.position.set(0.78, 0, 0);\ngroup.add(rider);\n\nconst riderBody = new THREE.Group();\nriderBody.name = 'Rider.JumpsuitAndBody';\nrider.add(riderBody);\npart(riderBody, 'Rider.JumpsuitAndBody.Torso',\n  new THREE.SphereGeometry(1, 16, 12), paint, [0, 0.79, 0], [0, 0, 0], [0.205, 0.285, 0.145]);\npart(riderBody, 'Rider.JumpsuitAndBody.ChestPanel',\n  new THREE.SphereGeometry(1, 14, 10), leaf, [0, 0.82, 0.105], [0, 0, 0], [0.125, 0.15, 0.055]);\npart(riderBody, 'Rider.JumpsuitAndBody.Zipper',\n  new THREE.BoxGeometry(0.012, 0.19, 0.012), metal, [0, 0.79, 0.159]);\npart(riderBody, 'Rider.JumpsuitAndBody.SignatureEmblem',\n  new THREE.SphereGeometry(0.045, 10, 8), signature, [0.08, 0.87, 0.157], [0, 0, 0], [1.15, 0.75, 0.28]);\npart(riderBody, 'Rider.JumpsuitAndBody.Neck',\n  new THREE.CylinderGeometry(0.075, 0.08, 0.12, 12), skin, [0, 1.055, 0]);\npart(riderBody, 'Rider.JumpsuitAndBody.Face',\n  new THREE.SphereGeometry(1, 16, 12), skin, [0, 1.19, 0.012], [0, 0, 0], [0.145, 0.17, 0.14]);\n\nconst limbs = new THREE.Group();\nlimbs.name = 'Rider.Limbs';\nrider.add(limbs);\nfor (const s of [-1, 1]) {\n  const side = s < 0 ? 'Left' : 'Right';\n  part(limbs, `Rider.Limbs.Sleeve.${side}`,\n    new THREE.CylinderGeometry(0.075, 0.058, 0.31, 12), paint,\n    [s * 0.235, 0.79, 0.005], [0, 0, s * -0.56]);\n  part(limbs, `Rider.Limbs.Glove.${side}`,\n    new THREE.SphereGeometry(0.075, 12, 10), dark, [s * 0.315, 0.63, 0.05], [0, 0, 0], [1, 0.82, 1]);\n  part(limbs, `Rider.Limbs.Leg.${side}`,\n    new THREE.CylinderGeometry(0.095, 0.075, 0.34, 12), paint,\n    [s * 0.105, 0.405, -0.005], [0, 0, s * 0.08]);\n  part(limbs, `Rider.Limbs.Boot.${side}`,\n    new THREE.BoxGeometry(0.15, 0.12, 0.23), dark, [s * 0.11, 0.12, 0.045]);\n  part(limbs, `Rider.Limbs.BootToe.${side}`,\n    new THREE.BoxGeometry(0.13, 0.045, 0.08), leaf, [s * 0.11, 0.095, 0.13]);\n}\n\nconst helmet = new THREE.Group();\nhelmet.name = 'Rider.Helmet';\nrider.add(helmet);\npart(helmet, 'Rider.Helmet.Shell',\n  new THREE.SphereGeometry(1, 18, 14), dark, [0, 1.3, 0], [0, 0, 0], [0.205, 0.205, 0.19]);\npart(helmet, 'Rider.Helmet.CyanVisor',\n  new THREE.SphereGeometry(1, 16, 10), glass, [0, 1.285, 0.145], [0, 0, 0], [0.157, 0.075, 0.075]);\npart(helmet, 'Rider.Helmet.VisorRim',\n  new THREE.TorusGeometry(0.143, 0.014, 7, 18), cyan, [0, 1.285, 0.144], [0, 0, 0]);\npart(helmet, 'Rider.Helmet.LeafCrest',\n  new THREE.SphereGeometry(1, 12, 10), leaf, [0, 1.48, -0.005], [0, 0, 0], [0.065, 0.16, 0.06]);\npart(helmet, 'Rider.Helmet.SignatureStripe',\n  new THREE.BoxGeometry(0.035, 0.12, 0.12), signature, [0, 1.35, 0.165]);\n\nconst riderTrim = new THREE.Group();\nriderTrim.name = 'Rider.SuitDetails';\nrider.add(riderTrim);\nfor (const s of [-1, 1]) {\n  const side = s < 0 ? 'Left' : 'Right';\n  part(riderTrim, `Rider.SuitDetails.ShoulderStripe.${side}`,\n    new THREE.SphereGeometry(1, 10, 8), cyan, [s * 0.17, 0.94, 0.055], [0, 0, s * -0.3], [0.055, 0.08, 0.035]);\n  part(riderTrim, `Rider.SuitDetails.KneePad.${side}`,\n    new THREE.SphereGeometry(0.07, 10, 8), signature, [s * 0.105, 0.34, 0.075], [0, 0, 0], [1, 0.72, 0.3]);\n}\n\nreturn group;","thumbUrl":"https://futurelabs.now/apps/images/u2/gen-agent-4-mvnf7tzy-qin1u-s1.png"}],"glbUrl":null}