fogón

← Casa completaObjeto 3Dfogon/rack-de-tele

Rack de tele

de fogonCC012154 bloques
Rack de teleArrastrá para girarlo
// «Rack de tele» · gpt-6-sol (medium)
// A low wide TV cabinet in light oak: long and low, with two sliding doors with round holes as handles on the sides and an open middle niche holding a black game console and a small plant. Thin black metal legs.

const oak = "#d9a965";
const oakLight = "#edc382";
const oakMid = "#c99656";
const oakShade = "#ad7945";
const walnut = "#795338";
const recess = "#594b3c";
const metal = "#292d30";

// Four slim, slightly splayed black metal legs.
for (const x of [7, 39]) {
  for (const y of [18, 29]) {
    box(x, y, 0, x + 1, y + 1, 6, metal);
    box(x, y, 0, x + 1, y + 1, 1, "#414447");
    set(x, y, 5, "#55585a");
  }
}

// Solid cabinet carcass, with a recessed open middle compartment.
box(3, 15, 7, 44, 32, 20, oak);
box(18, 15, 10, 29, 29, 18, null);

box(18, 29, 10, 29, 29, 18, recess);
box(18, 16, 9, 29, 29, 9, oakLight);
box(18, 16, 19, 29, 29, 19, oakShade);
for (let y = 16; y <= 29; y++) {
  for (let z = 10; z <= 18; z++) {
    set(18, y, z, oakShade);
    set(29, y, z, oakShade);
  }
}
box(19, 29, 11, 28, 29, 17, "#78644c");

// Two chunky sliding door panels.
for (const [x0, x1] of [[4, 17], [30, 43]]) {
  box(x0, 14, 9, x1, 15, 19, oakMid);
  box(x0 + 1, 13, 10, x1 - 1, 14, 18, oakLight);
  box(x0 + 1, 13, 10, x1 - 1, 10, oak);
  box(x0 + 1, 13, 18, x1 - 1, 18, "#f2ce91");
  for (let x = x0 + 2; x < x1; x++) {
    if (rand() < 0.38) {
      const z = 11 + Math.floor(rand() * 7);
      box(x, 12, z, Math.min(x + 1, x1 - 1), 12, z, "#dfb474");
    }
  }
}

// Round finger holes: dark wooden rims and genuinely open centers.
for (const cx of [14, 33]) {
  const cz = 14;
  for (let dx = -3; dx <= 3; dx++) {
    for (let dz = -3; dz <= 3; dz++) {
      const d = Math.sqrt(dx * dx + dz * dz);
      if (d <= 2.7 && d > 1.65) set(cx + dx, 12, cz + dz, oakShade);
      if (d <= 1.65) {
        for (let y = 12; y <= 18; y++) set(cx + dx, y, cz + dz, null);
        set(cx + dx, 19, cz + dz, "#504735");
      }
    }
  }
}

// Small grooves mark the sliding tracks and frame the central opening.
box(3, 13, 8, 44, 15, 8, oakShade);
box(3, 13, 20, 44, 16, 20, oakLight);
box(17, 13, 10, 17, 13, 18, oakShade);
box(30, 13, 10, 30, 13, 18, oakShade);
box(18, 14, 9, 29, 15, 9, "#e8bc7a");

// Broad, lightly grained top with a softly contrasting front lip.
box(2, 13, 21, 45, 33, 22, oakLight);
box(2, 13, 21, 45, 13, 21, oakMid);
for (let i = 0; i < 34; i++) {
  const x = 4 + Math.floor(rand() * 39);
  const y = 15 + Math.floor(rand() * 17);
  const length = 1 + Math.floor(rand() * 4);
  for (let j = 0; j < length; j++) {
    set(Math.min(x + j, 44), y, 22, rand() < 0.65 ? "#e8b979" : "#f2cc90");
  }
}

// Compact black game console in the left half of the niche.
box(19, 19, 10, 25, 26, 12, "#25292b");
box(19, 19, 12, 25, 26, 12, "#41464a");
box(19, 18, 10, 25, 18, 11, "#303437");
box(20, 18, 11, 23, 18, 11, "#17191b");
set(24, 17, 11, "#80c6b4");
box(20, 21, 13, 24, 25, 13, "#34383b");

// Tiny potted plant on the right.
box(27, 21, 10, 29, 23, 11, "#cc8265");
box(27, 21, 12, 29, 23, 13, "#e9a381");
box(27, 20, 13, 29, 23, 13, "#f1b394");
set(28, 21, 14, "#554435");
line(28, 21, 14, 28, 21, 17, 0, "#597d4e");
for (const [x, y, z, c] of [
  [27, 21, 16, "#84aa69"], [26, 21, 17, "#a5c981"],
  [27, 20, 18, "#78a663"], [28, 20, 17, "#b4d38b"],
  [29, 21, 16, "#72975c"], [30, 21, 17, "#9cc47c"],
  [29, 22, 18, "#7ca963"], [28, 22, 18, "#a7cb80"],
  [27, 22, 15, "#658e58"]
]) set(x, y, z, c);