fogón

← BásicoObjeto 3Dfogon/silla-ergonomica-de-rodillas

Silla ergonómica de rodillas

de fogonCC07584 bloques
Silla ergonómica de rodillasArrastrá para girarlo
// «Silla ergonómica de rodillas» · gpt-6-sol (medium)
// Kneeling chair («Silla ergonómica de rodillas»). Be faithful to the reference: keep thin parts thin (1–2 blocks: strings, necks, handles, legs, rods), keep its exact proportions and silhouette, and every visible detail (books on shelves, sound holes, tuning pegs, valves). Don't make it chunkier than the reference.

// Kneeling chair: pale wooden frame, slatted teal seat, and two knee cushions.
const wood = "#c79b5b";
const woodLight = "#eed393";
const woodTop = "#f6dfa0";
const woodShadow = "#9a7040";
const teal = "#08777e";
const tealDark = "#07545c";
const tealEdge = "#08656c";
const tealLight = "#159096";

function beam(x0, y0, z0, x1, y1, z1) {
  line(x0, y0, z0, x1, y1, z1, 0, woodShadow);
  line(x0 + 1, y0, z0, x1 + 1, y1, z1, 0, wood);
  line(x0, y0, z0 + 1, x1, y1, z1 + 1, 0, woodLight);
}

// Two long, slim floor runners.
for (const x of [8, 39]) {
  box(x, 4, 0, x + 2, 43, 1, wood);
  box(x, 4, 2, x + 2, 43, 2, woodTop);
  box(x, 4, 0, x, 43, 0, woodShadow);
  box(x - 1, 4, 0, x + 3, 7, 1, woodLight);
  box(x - 1, 40, 0, x + 3, 43, 1, woodLight);
  box(x, 4, 2, x + 2, 7, 2, woodTop);
}
// Low crosspieces connecting the runners.
box(10, 10, 1, 40, 12, 2, wood);
box(10, 10, 3, 40, 11, 3, woodLight);
box(10, 36, 1, 40, 38, 2, wood);
box(10, 36, 3, 40, 37, 3, woodTop);

// Open triangular sides: slender raked supports and braces.
for (const x of [10, 38]) {
  beam(x, 16, 3, x, 30, 29);
  beam(x, 16, 4, x, 39, 4);
  beam(x, 16, 3, x, 12, 15);

  // Short, regularly spaced golden facets on the exposed seat supports.
  for (let i = 0; i < 12; i++) {
    const z = 7 + i * 2;
    const y = Math.round(18 + (z - 7) * 14 / 24);
    set(x, y, z + 1, i % 3 === 0 ? woodTop : woodLight);
    set(x + 1, y, z, i % 3 === 0 ? woodShadow : woodTop);
  }
  // Pale end grain and little feet below the knee-pad mounts.
  box(x, 12, 13, x + 1, 17, 14, woodLight);
  box(x, 11, 15, x + 1, 18, 15, woodTop);
}

// Timber immediately beneath the seat, visible along its front and ends.
box(8, 26, 29, 40, 27, 30, woodLight);
box(8, 40, 29, 40, 41, 30, wood);
box(8, 27, 29, 9, 40, 30, wood);
box(39, 27, 29, 40, 40, 30, wood);
box(9, 26, 31, 40, 27, 31, woodTop);

// Seat cushion: thin, square-edged, with distinct transverse teal ribs.
box(6, 25, 32, 42, 43, 34, tealDark);
box(6, 25, 34, 42, 43, 34, tealEdge);
box(6, 25, 32, 42, 25, 33, "#064c53");
box(6, 43, 32, 42, 43, 33, teal);
for (let y = 26; y <= 42; y += 3) {
  box(7, y, 35, 41, y + 1, 35, teal);
  box(8, y + 1, 36, 40, y + 1, 36, tealLight);
  box(7, y, 36, 41, y, 36, "#096b72");
  box(7, y + 2, 35, 41, y + 2, 35, "#075d65");
}
box(6, 25, 34, 42, 25, 35, "#075e66");

// Two separate, low knee cushions and their narrow wooden carriers.
for (const [xa, xb] of [[8, 23], [26, 41]]) {
  box(xa + 1, 8, 14, xb - 1, 17, 15, wood);
  box(xa + 1, 8, 15, xb - 1, 17, 15, woodTop);
  box(xa, 7, 16, xb, 19, 18, tealDark);
  box(xa + 1, 7, 17, xb - 1, 18, 19, teal);
  box(xa + 2, 9, 20, xb - 2, 17, 20, tealLight);
  box(xa, 7, 16, xb, 7, 17, "#064e56");
  box(xa, 8, 18, xa, 18, 18, tealEdge);
  box(xb, 8, 18, xb, 18, 18, tealEdge);

  // Small seams and flecks in the upholstery, kept subtle.
  for (let x = xa + 3; x < xb - 1; x += 4) {
    set(x, 10, 20, "#087078");
    set(x + 1, 16, 20, "#0a7d83");
  }
}