fogón

← BásicoObjeto 3Dfogon/farol-v3

Farol

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

const iron = "#303b43";
const ironDark = "#202930";
const ironLight = "#52616a";
const ironEdge = "#697780";
const gold = "#bb8738";
const goldLight = "#e4b65b";

// Solid, stepped base.
box(10, 10, 0, 38, 38, 2, ironDark);
box(11, 11, 3, 37, 37, 4, iron);
box(13, 13, 5, 35, 35, 5, "#776443");
box(15, 15, 6, 33, 33, 6, "#94784b");

for (let i = 10; i <= 38; i++) {
  for (const j of [10, 38]) {
    set(i, j, 1, "#39464e");
    set(i, j, 2, ironLight);
  }
  for (const j of [10, 38]) {
    set(j, i, 1, "#39464e");
    set(j, i, 2, ironLight);
  }
}
for (let i = 11; i <= 37; i++) {
  for (const j of [11, 37]) {
    set(i, j, 4, ironLight);
    set(j, i, 4, ironLight);
  }
}

// Slender corner uprights leave the panes open so the candle is visible.
for (const x of [11, 35]) for (const y of [11, 35]) {
  box(x, y, 5, x + 2, y + 2, 28, ironDark);
  box(x + 1, y, 7, x + 2, y, 27, iron);
  box(x, y + 1, 7, x, y + 2, 27, ironLight);
  for (const z of [7, 19, 27]) {
    set(x + 1, y, z, gold);
    set(x + 1, y + 1, z, goldLight);
  }
}

// Subtle blue-green glass edges and a few reflected glints.
for (const x of [14, 34]) for (const y of [14, 34]) {
  box(x, y, 7, x, y, 25, "#648b8e");
  for (const z of [12, 23]) set(x, y, z, "#a8c6bf");
}
for (const z of [13, 22]) {
  line(17, 11, z, 18, 11, z + 2, 0, "#b6cfca");
  line(37, 17, z, 37, 18, z + 2, 0, "#9dbbb8");
}
for (const z of [6, 27]) {
  box(14, 11, z, 34, 11, z, "#53686c");
  box(14, 37, z, 34, 37, z, "#344a50");
  box(11, 14, z, 11, 34, z, "#53686c");
  box(37, 14, z, 37, 34, z, "#53686c");
}

// Warm candle holder, candle, wick, and flame.
box(19, 19, 7, 29, 29, 7, "#795729");
box(20, 20, 8, 28, 28, 8, gold);
box(21, 21, 9, 27, 27, 9, goldLight);
box(22, 22, 10, 26, 26, 10, "#906321");
box(23, 23, 10, 25, 25, 18, "#e1bb69");
box(23, 23, 12, 23, 25, 17, "#f5db99");
box(24, 22, 11, 25, 22, 17, "#fff0b9");
box(24, 24, 19, 24, 24, 19, "#67441f");
set(24, 24, 20, "#ef9a38");
set(24, 24, 21, "#ffe28a");
set(24, 24, 22, "#fff1b5");
set(23, 24, 20, "#ffc65a");

// Deep overhanging eave and shallow, tiered pyramidal roof.
box(8, 8, 28, 40, 40, 29, ironDark);
for (let i = 8; i <= 40; i++) {
  set(i, 8, 29, ironLight);
  set(8, i, 29, ironLight);
  set(i, 40, 29, "#354049");
  set(40, i, 29, "#354049");
}
const tiers = [
  [9, 39, 30], [11, 37, 31], [13, 35, 32],
  [15, 33, 33], [17, 31, 34], [19, 29, 35]
];
for (const [lo, hi, z] of tiers) {
  box(lo, lo, z, hi, hi, z, iron);
  for (let i = lo; i <= hi; i++) {
    set(i, lo, z, rand() < 0.15 ? ironEdge : ironLight);
    set(lo, i, z, rand() < 0.12 ? ironEdge : "#46545d");
    set(i, hi, z, "#253039");
    set(hi, i, z, "#2b363e");
  }
  for (let k = 0; k < 8; k++) {
    const x = lo + Math.floor(rand() * (hi - lo + 1));
    const y = lo + Math.floor(rand() * (hi - lo + 1));
    set(x, y, z, rand() < 0.5 ? "#46535b" : "#38464e");
  }
}
box(21, 21, 36, 27, 27, 36, "#303a42");
box(22, 22, 37, 26, 26, 37, ironLight);
set(24, 21, 37, goldLight);

// Squared forged-metal hanging ring, upright above the roof.
box(20, 23, 38, 22, 25, 42, ironDark);
box(26, 23, 38, 28, 25, 42, ironDark);
box(21, 23, 43, 22, 25, 44, ironDark);
box(26, 23, 43, 27, 25, 44, ironDark);
box(22, 23, 44, 26, 25, 45, ironDark);
box(20, 23, 40, 20, 23, 42, ironLight);
box(22, 23, 45, 25, 23, 45, "#58636a");
set(27, 23, 41, "#4d5960");