fogón

← Whole house3D assetfogon/silla-gamer

Silla gamer

by fogonCC011152 blocks
Silla gamerDrag to turn it
// «Silla gamer» · gpt-6-sol (medium)
// A gaming chair: a tall racing-style seat in black with red side panels and stitching, a headrest pillow and a lumbar pillow, padded armrests, on a five-star base with little wheels.

// A cozy, toy-like racing chair, facing -y.
const black = "#292a30";
const deep = "#1c1e23";
const charcoal = "#383a40";
const soft = "#46474d";
const red = "#d95859";
const redLight = "#ed7974";
const redDark = "#ab414b";
const stitch = "#f4b7a5";
const steel = "#aeb5b9";
const chrome = "#d9dedc";

// Five-star base and little caster wheels.
for (let i = 0; i < 5; i++) {
  const a = -Math.PI / 2 + i * Math.PI * 2 / 5;
  const ex = Math.round(24 + 15 * Math.cos(a));
  const ey = Math.round(25 + 15 * Math.sin(a));
  line(24, 25, 4, ex, ey, 3, 2, black);
  line(25, 24, 5, ex, ey, 4, 0, soft);
  box(ex - 2, ey - 1, 0, ex + 2, ey + 1, 2, deep);
  box(ex - 1, ey - 2, 1, ex + 1, ey + 2, 3, charcoal);
  set(ex, ey - 2, 2, chrome);
}
cylinder(24, 25, 4, 3, 10, steel);
cylinder(24, 25, 7, 2, 6, charcoal);
box(20, 21, 12, 28, 29, 15, deep);

// Seat chassis and thick red side bolsters.
box(12, 14, 14, 36, 33, 18, deep);
box(12, 14, 17, 16, 31, 20, redDark);
box(32, 14, 17, 36, 31, 20, redDark);
box(13, 14, 19, 16, 29, 21, red);
box(32, 14, 19, 35, 29, 21, red);
box(17, 14, 17, 31, 31, 19, charcoal);
ellipsoid(24, 23, 19, 9, 10, 2, black);
box(18, 15, 20, 30, 27, 20, charcoal);
box(19, 16, 20, 29, 25, 20, soft);
box(17, 13, 15, 31, 14, 18, charcoal);
box(18, 13, 18, 30, 14, 19, redLight);

// The tall back has a narrow waist, broad racing shoulders and tapered head.
for (let z = 19; z <= 43; z++) {
  let half;
  if (z < 28) half = 10;
  else if (z < 31) half = 11;
  else if (z < 36) half = 13;
  else if (z < 39) half = 11;
  else if (z < 42) half = 9;
  else half = 7;

  box(24 - half, 29, z, 24 + half, 34, z, deep);
  box(25 - half, 28, z, 23 + half, 29, z, charcoal);
  box(26 - half, 27, z, 22 + half, 27, z, black);

  // Raised red side panels, narrowing with the silhouette.
  if (z < 41) {
    box(24 - half, 26, z, 26 - half, 31, z, redDark);
    box(22 + half, 26, z, 24 + half, 31, z, redDark);
    set(26 - half, 25, z, z % 5 === 0 ? redLight : red);
    set(22 + half, 25, z, z % 5 === 0 ? redLight : red);
  }
}
box(18, 26, 39, 30, 28, 41, charcoal);
box(20, 26, 42, 28, 31, 43, black);

// Soft central upholstery and stitched red racing seams.
box(18, 26, 28, 30, 27, 34, charcoal);
for (let z = 29; z <= 34; z += 2) {
  set(18, 25, z, stitch);
  set(30, 25, z, stitch);
}
for (let y = 17; y <= 28; y += 2) {
  set(17, y, 20, stitch);
  set(31, y, 20, stitch);
}

// Rounded headrest and lumbar pillows.
ellipsoid(24, 24, 37, 7, 3, 3, deep);
ellipsoid(24, 22, 37, 6, 2, 2, charcoal);
line(20, 20, 37, 28, 20, 37, 0, redLight);
set(24, 19, 37, stitch);

ellipsoid(24, 25, 25, 8, 3, 4, deep);
ellipsoid(24, 22, 25, 7, 2, 3, charcoal);
for (let x = 19; x <= 29; x += 2) set(x, 20, 25, stitch);
set(17, 22, 25, red);
set(31, 22, 25, red);

// Chunky padded armrests, with visible supports.
for (const x of [9, 35]) {
  box(x + 1, 17, 16, x + 3, 19, 23, charcoal);
  box(x + 1, 27, 17, x + 3, 29, 23, charcoal);
  box(x, 15, 22, x + 5, 30, 24, deep);
  box(x, 15, 24, x + 5, 29, 25, black);
  box(x + 1, 16, 25, x + 4, 27, 25, soft);
  box(x + 1, 15, 23, x + 4, 16, 24, redDark);
  set(x + 2, 15, 25, stitch);
}

// A few gentle upholstered highlights.
for (let i = 0; i < 75; i++) {
  const x = 19 + Math.floor(rand() * 11);
  const z = 28 + Math.floor(rand() * 7);
  if (get(x, 27, z) === charcoal && rand() < 0.36)
    set(x, 26, z, soft);
}