fogón

← MedievalObjeto 3Dfogon/bufon

Bufón

de fogonCC06834 bloques
BufónArrastrá para girarlo
// «Bufón» · gpt-6-sol (medium)
// A chunky cartoon court jester: a two-color outfit split down the middle (red and yellow) with diamond patterns, pointed curly shoes with little bells, a jester hat with three floppy points each ending in a gold bell, a big grinning round face, and a stick with a small puppet head in one hand.

const red = "#ae3434", redLight = "#cd4940", redDark = "#81282d";
const yellow = "#e9ba49", yellowLight = "#f7d674", yellowDark = "#b98230";
const gold = "#e5ae40", goldLight = "#ffe08a", goldDark = "#a66e28";
const blue = "#344f83", blueLight = "#5373a1";
const brown = "#51352c", brownLight = "#79503a";
const ink = "#32282b", cream = "#fff0c5", skin = "#f2bd91";

function diamond(cx, zc, radius, y, color) {
  for (let x = cx - radius; x <= cx + radius; x++)
    for (let z = zc - radius; z <= zc + radius; z++)
      if (Math.abs(x - cx) + Math.abs(z - zc) <= radius)
        set(x, y, z, color);
}
function bell(x, y, z) {
  sphere(x, y, z, 1.5, gold);
  box(x - 1, y - 1, z - 1, x + 1, y + 1, z - 1, goldDark);
  set(x, y - 2, z, goldLight);
  set(x, y, z - 2, ink);
}

// Split tunic and broad, sturdy shoulders.
box(18, 20, 18, 23, 29, 29, red);
box(24, 20, 18, 29, 29, 29, yellow);
box(16, 21, 25, 23, 29, 28, red);
box(24, 21, 25, 31, 29, 28, yellow);

// Uneven hand-dyed highlights on the cloth.
forEach((x, y, z, color) => {
  if (color === red && rand() < 0.055) set(x, y, z, redLight);
  if (color === yellow && rand() < 0.055) set(x, y, z, yellowLight);
});
box(23, 19, 19, 24, 19, 29, goldDark);
box(18, 19, 28, 22, 19, 28, redLight);
box(25, 19, 28, 29, 19, 28, yellowLight);

// Diamonds are large enough to read from a distance.
diamond(20, 23, 2, 19, yellowLight);
diamond(27, 23, 2, 19, red);
diamond(20, 27, 1, 19, gold);
diamond(27, 27, 1, 19, redDark);

// Belt, square buckle and pointed jester skirt.
box(17, 19, 18, 30, 30, 19, brown);
box(22, 18, 18, 25, 19, 20, gold);
box(23, 17, 19, 24, 17, 19, goldLight);
set(23, 17, 18, brown);
set(24, 17, 18, brown);
for (let x = 16; x <= 31; x++) {
  const c = x < 24 ? red : yellow;
  const tip = 14 + Math.min((x - 16) % 4, 3);
  box(x, 20, tip, x, 29, 17, c);
  set(x, 19, tip, x < 24 ? redDark : yellowDark);
}
bell(17, 19, 14);
bell(30, 19, 14);

// Ruffled collar beneath the oversized face.
for (let x = 18; x <= 30; x += 2) {
  box(x, 18, 29, x + 1, 26, 30, cream);
  set(x, 17, 29, gold);
}

// Round, warmly shaded face and ears.
ellipsoid(24, 23, 35, 6, 5.5, 5.7, skin);
ellipsoid(18, 23, 34, 1.6, 1.6, 2, "#dc9879");
ellipsoid(30, 23, 34, 1.6, 1.6, 2, "#dc9879");
box(19, 16, 36, 22, 17, 37, cream);
box(26, 16, 36, 29, 17, 37, cream);
box(21, 15, 36, 22, 15, 37, ink);
box(27, 15, 36, 28, 15, 37, ink);
set(21, 14, 37, "#ffffff");
set(27, 14, 37, "#ffffff");
box(19, 16, 38, 22, 17, 38, brown);
box(26, 16, 38, 29, 17, 38, brown);
sphere(24, 16, 34, 1.7, "#e99878");
set(24, 14, 35, "#ffd4a4");
box(20, 17, 32, 28, 17, 33, ink);
box(21, 16, 32, 27, 16, 32, cream);
box(22, 16, 31, 26, 16, 31, redDark);
set(19, 17, 34, ink);
set(29, 17, 34, ink);
box(18, 17, 33, 19, 17, 33, "#d98179");
box(29, 17, 33, 30, 17, 33, "#d98179");

// Three floppy hat points, each with its own bell.
box(18, 19, 40, 23, 28, 42, red);
box(24, 19, 40, 29, 28, 42, yellow);
box(17, 18, 40, 23, 29, 40, redDark);
box(24, 18, 40, 30, 29, 40, yellowDark);
box(19, 18, 41, 22, 18, 41, redLight);
box(25, 18, 41, 28, 18, 41, yellowLight);

line(20, 23, 42, 15, 24, 45, 2, red);
line(15, 24, 45, 10, 24, 41, 1.7, redLight);
line(24, 23, 42, 23, 23, 46, 1.5, blue);
line(23, 23, 46, 27, 22, 44, 1, blueLight);
line(28, 23, 42, 34, 24, 45, 2, yellow);
line(34, 24, 45, 39, 24, 41, 1.7, yellowDark);
bell(10, 24, 40);
bell(27, 22, 43);
bell(39, 24, 40);
box(22, 17, 40, 25, 17, 41, gold);
set(23, 16, 41, goldLight);

// Independent walking legs: pointed shoes curl upward at the toes.
part("leftLeg", [20, 24, 17]);
box(17, 21, 7, 22, 28, 17, red);
box(17, 20, 6, 22, 29, 7, redDark);
box(18, 20, 10, 21, 20, 11, yellow);
box(17, 17, 0, 23, 29, 4, brown);
box(17, 13, 1, 22, 19, 3, brownLight);
line(20, 15, 2, 20, 10, 5, 1.5, brown);
set(20, 9, 5, gold);
bell(20, 9, 6);
box(18, 16, 4, 22, 25, 4, goldDark);
animate("leftLeg", { type: "swing", axis: "x", speed: 5, amplitude: 0.3 });

part("rightLeg", [27, 24, 17]);
box(25, 21, 7, 30, 28, 17, yellow);
box(25, 20, 6, 30, 29, 7, yellowDark);
box(26, 20, 10, 29, 20, 11, red);
box(24, 17, 0, 30, 29, 4, brown);
box(25, 13, 1, 30, 19, 3, brownLight);
line(27, 15, 2, 27, 10, 5, 1.5, brown);
set(27, 9, 5, gold);
bell(27, 9, 6);
box(25, 16, 4, 29, 25, 4, goldDark);
animate("rightLeg", { type: "swing", axis: "x", speed: -5, amplitude: 0.3 });

// Arms swing opposite their respective legs.
part("leftArm", [16, 24, 27]);
ellipsoid(15, 24, 26, 3, 3, 2.5, redLight);
line(15, 23, 26, 13, 20, 19, 2.1, red);
box(12, 18, 18, 15, 22, 20, cream);
box(12, 18, 17, 15, 21, 18, skin);
box(12, 17, 16, 14, 19, 17, skin);
box(12, 17, 20, 14, 18, 20, gold);
animate("leftArm", { type: "swing", axis: "x", speed: -5, amplitude: 0.25 });

part("rightArm", [31, 24, 27]);
ellipsoid(32, 24, 26, 3, 3, 2.5, yellowLight);
line(32, 23, 26, 35, 19, 20, 2.1, yellow);
box(34, 17, 19, 37, 21, 21, cream);
box(35, 16, 18, 38, 19, 20, skin);
box(36, 16, 20, 38, 18, 21, skin);

// Wooden puppet-stick held in this hand.
line(37, 18, 14, 37, 17, 36, 0.8, brown);
box(36, 16, 15, 38, 18, 16, goldDark);
box(36, 16, 27, 38, 18, 27, gold);
ellipsoid(37, 17, 37, 2.7, 2.5, 3, cream);
box(35, 14, 37, 36, 14, 38, ink);
box(38, 14, 37, 39, 14, 38, ink);
set(36, 13, 38, "#ffffff");
set(39, 13, 38, "#ffffff");
box(36, 14, 35, 38, 14, 35, redDark);
set(37, 13, 36, red);
line(35, 17, 39, 33, 17, 41, 1, blue);
line(39, 17, 39, 41, 17, 41, 1, red);
bell(33, 17, 41);
bell(41, 17, 41);
animate("rightArm", { type: "swing", axis: "x", speed: 5, amplitude: 0.25 });

part("body", [24, 24, 24]);