fogón

← BásicoObjeto 3Dfogon/farol-v4

Farol

de fogonCC018405 bloques
FarolArrastrá para girarlo
// «Farol» · gpt-6-sol (medium)
// Lantern («Farol»). One of several variations of this object: follow the reference picture closely.

// Blackened steel lantern with a warm candle and clear glass panels.
const iron = "#29323a";
const dark = "#1d252c";
const steel = "#394650";
const lightSteel = "#53616a";
const gold = "#ad7430";
const goldLight = "#dda34c";

// Foot and inset, warm-toned floor.
box(8, 8, 0, 40, 40, 1, dark);
box(7, 7, 1, 41, 41, 3, iron);
box(8, 8, 3, 40, 40, 4, steel);
box(11, 11, 4, 37, 37, 4, "#a8753b");
box(12, 12, 4, 36, 36, 4, "#be8849");
box(9, 9, 4, 39, 9, 5, iron);
box(9, 39, 4, 39, 39, 5, iron);
box(9, 10, 4, 9, 38, 5, iron);
box(39, 10, 4, 39, 38, 5, iron);

// Thin bright rims on the metal plinth.
box(9, 7, 2, 39, 7, 2, lightSteel);
box(7, 9, 2, 7, 39, 2, steel);
box(40, 9, 3, 40, 39, 3, "#46535b");

// Four substantial, square corner posts.
for (const x of [9, 38]) for (const y of [9, 38]) {
  box(x, y, 5, x + 2, y + 2, 30, dark);
  box(x + 1, y + 1, 6, x + 2, y + 2, 29, iron);
  box(x, y, 7, x, y, 27, steel);
  box(x, y, 5, x + 2, y + 2, 6, "#493f32");
  box(x, y, 27, x + 2, y + 2, 29, iron);
  set(x, y, 7, gold);
  set(x, y, 28, gold);
}

// Restrained glass reflections: leave the panels open and see-through.
for (let z = 10; z <= 24; z++) {
  set(15, 11, z, z % 5 === 0 ? "#a8d7d0" : "#d4e5d8");
  set(36, 11, z, z % 4 === 0 ? "#86bdc0" : "#b8ded7");
  set(38, 17, z, "#a5d2ca");
  if (z >= 14 && z <= 22) set(11, 34, z, "#b3d6d0");
}
for (let z = 13; z <= 20; z++) {
  set(16, 11, z, "#e4e8d9");
  set(38, 18, z, "#d6e7da");
}
line(13, 12, 8, 18, 12, 8, 0, "#8fbbb6");
line(32, 12, 9, 36, 12, 9, 0, "#8fbbb6");
line(38, 29, 9, 38, 35, 9, 0, "#8fb7b1");

// Octagonal-looking brass candle socket on the floor.
box(19, 19, 5, 29, 29, 6, gold);
box(17, 21, 5, 31, 27, 6, "#bc873a");
box(21, 17, 5, 27, 31, 6, "#bc873a");
box(19, 20, 7, 29, 28, 7, goldLight);
box(21, 18, 7, 27, 30, 7, goldLight);
box(21, 21, 8, 27, 27, 9, "#e0ac53");
box(22, 22, 9, 26, 26, 10, "#9a682e");
for (const [x, y] of [[18, 22], [18, 27], [30, 22], [30, 27],
                       [22, 18], [27, 18], [22, 30], [27, 30]]) {
  set(x, y, 7, "#f1bc64");
}

// Cream candle, with a small luminous flame.
box(22, 22, 10, 26, 26, 18, "#d4c9a7");
box(22, 22, 12, 22, 26, 18, "#fff2c9");
box(23, 22, 11, 25, 22, 17, "#f5e8c6");
box(26, 23, 11, 26, 26, 17, "#b7a484");
box(23, 23, 19, 25, 25, 20, "#f7ce72");
box(24, 23, 21, 24, 25, 22, "#fff0ac");
set(24, 24, 23, "#fff6cc");

// Heavy roof: broad overhanging eaves and shallow stepped crown.
box(5, 5, 29, 43, 43, 30, dark);
box(4, 4, 31, 44, 44, 32, steel);
box(5, 5, 33, 43, 43, 33, iron);
box(8, 8, 34, 40, 40, 34, steel);
box(11, 11, 35, 37, 37, 35, iron);
box(15, 15, 36, 33, 33, 36, steel);
box(19, 19, 37, 29, 29, 37, iron);

// Crisp dark bands and lit lips along the front and side edges.
box(4, 4, 31, 44, 4, 31, lightSteel);
box(4, 4, 30, 44, 4, 30, dark);
box(4, 44, 31, 44, 44, 31, "#55636c");
box(44, 5, 31, 44, 43, 31, dark);
box(8, 8, 34, 40, 8, 34, "#53616a");
box(8, 40, 34, 40, 40, 34, dark);
box(11, 11, 35, 37, 11, 35, "#46535b");
box(15, 15, 36, 33, 15, 36, "#546069");

// Slight mottling in exposed slate, kept subtle.
for (let i = 0; i < 180; i++) {
  const x = 6 + Math.floor(rand() * 37);
  const y = 6 + Math.floor(rand() * 37);
  const z = x >= 19 && x <= 29 && y >= 19 && y <= 29 ? 37 :
            x >= 15 && x <= 33 && y >= 15 && y <= 33 ? 36 :
            x >= 11 && x <= 37 && y >= 11 && y <= 37 ? 35 :
            x >= 8 && x <= 40 && y >= 8 && y <= 40 ? 34 : 33;
  if (rand() < 0.32) set(x, y, z, rand() < 0.5 ? "#414e56" : "#344049");
}

// Little brass pins on the stepped roof.
for (const [x, y, z] of [
  [11, 11, 35], [24, 10, 35], [37, 11, 35],
  [10, 24, 35], [38, 24, 35],
  [11, 37, 35], [24, 38, 35], [37, 37, 35],
  [16, 16, 37], [24, 15, 37], [32, 16, 37],
  [16, 32, 37], [24, 33, 37], [32, 32, 37],
  [20, 20, 38], [28, 20, 38], [20, 28, 38], [28, 28, 38]
]) {
  set(x, y, z, gold);
  if (rand() < 0.7) set(x, y, z + 1, goldLight);
}

// Riveted handle mounting and squared, forged hanging loop.
box(19, 21, 38, 29, 27, 39, "#534534");
box(21, 22, 39, 27, 26, 40, gold);
box(20, 22, 40, 22, 26, 44, dark);
box(26, 22, 40, 28, 26, 44, dark);
box(21, 22, 44, 27, 26, 45, dark);
box(22, 22, 45, 26, 26, 45, steel);
box(20, 22, 41, 20, 26, 43, lightSteel);
box(26, 22, 42, 26, 22, 44, "#58636a");
box(22, 22, 44, 26, 22, 44, "#687178");
set(19, 21, 40, goldLight);
set(29, 21, 40, goldLight);