fogón

← MedievalObjeto 3Dfogon/bardo

Bardo

de fogonCC05860 bloques
BardoArrastrá para girarlo
// «Bardo» · gpt-6-sol (medium)
// A chunky cartoon medieval bard: a green and yellow tunic, a feathered floppy red hat, a round smiling face with black dot eyes and a small mustache, playing a wooden lute held across his body.

const green = "#347447", greenDark = "#285a3a", greenLight = "#498c52";
const gold = "#e5bb50", goldLight = "#f5d879";
const red = "#aa3840", redDark = "#792b34", redLight = "#c85451";
const skin = "#e9b780", skinLight = "#f5cc96", skinShade = "#ce986b";
const leather = "#66402b", leatherDark = "#432c23";
const wood = "#a76536", woodLight = "#d59652", woodDark = "#724326";

// Tapping legs, each hinged at the hip.
part("leftLeg", [20, 24, 17]);
box(18, 22, 5, 22, 27, 17, greenDark);
box(18, 20, 1, 23, 27, 5, leather);
box(18, 19, 0, 23, 25, 2, leatherDark);
box(19, 20, 4, 22, 20, 4, woodLight);
animate("leftLeg", { type: "swing", axis: "x", speed: 3, amplitude: 0.15 });

part("rightLeg", [28, 24, 17]);
box(26, 22, 5, 30, 27, 17, greenDark);
box(25, 20, 1, 30, 27, 5, leather);
box(25, 19, 0, 30, 25, 2, leatherDark);
box(26, 20, 4, 29, 20, 4, woodLight);
animate("rightLeg", { type: "swing", axis: "x", speed: -3, amplitude: 0.15 });

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

// Broad, rounded tunic with a scalloped yellow hem.
ellipsoid(24, 24, 24, 9, 6, 8, greenDark);
ellipsoid(24, 23, 25, 8, 6, 7, green);
forEach((x, y, z, color) => {
  if ((color === green || color === greenDark) && z >= 20 && z <= 30) {
    if (y <= 21 && rand() < 0.09) set(x, y, z, greenLight);
    if (z <= 22 && rand() < 0.05) set(x, y, z, greenDark);
  }
});
for (let x = 18; x <= 30; x++) {
  for (let y = 18; y <= 28; y++) {
    if (get(x, y, 17) && (x + 2 * y) % 4 < 2) set(x, y, 17, gold);
  }
}
box(18, 18, 19, 30, 29, 20, leather);
box(23, 17, 19, 25, 18, 21, gold);
set(24, 17, 20, goldLight);

// Yellow tunic panels and a little embroidered diamond.
for (let z = 21; z <= 29; z++) {
  for (let y = 17; y <= 20; y++) {
    if (get(23, y, z)) set(23, y, z, gold);
    if (get(25, y, z)) set(25, y, z, gold);
  }
}
set(24, 17, 25, goldLight);
set(23, 17, 24, goldLight);
set(25, 17, 24, goldLight);
set(24, 17, 23, goldLight);

// Collar, neck, hair, and round face.
box(21, 19, 30, 27, 26, 32, gold);
box(22, 20, 30, 26, 24, 33, skinShade);
ellipsoid(24, 22, 35, 6, 5, 5, leather);
ellipsoid(24, 21, 34, 6, 5, 5, skin);
ellipsoid(24, 19, 35, 5, 3, 4, skinLight);
ellipsoid(18, 21, 34, 1, 2, 2, skinShade);
ellipsoid(30, 21, 34, 1, 2, 2, skinShade);
box(18, 18, 32, 19, 20, 36, leather);
box(29, 18, 32, 30, 20, 36, leather);

// Tiny black eyes, rounded nose, curled mustache, smiling mouth.
box(21, 15, 36, 22, 16, 37, "#251f20");
box(26, 15, 36, 27, 16, 37, "#251f20");
set(21, 14, 37, "#fff4d8");
set(26, 14, 37, "#fff4d8");
ellipsoid(24, 15, 33, 1, 2, 2, skinShade);
set(24, 13, 34, skinLight);
box(21, 14, 32, 23, 15, 32, leather);
box(25, 14, 32, 27, 15, 32, leather);
set(20, 15, 33, leather);
set(28, 15, 33, leather);
box(22, 15, 30, 26, 15, 30, "#763d38");
set(21, 15, 31, "#763d38");
set(27, 15, 31, "#763d38");

// Floppy red hat: wide brim, slouched crown, and drooping left tip.
ellipsoid(23, 22, 40, 10, 7, 1, redDark);
ellipsoid(23, 21, 41, 9, 6, 1, red);
ellipsoid(23, 23, 42, 6, 5, 2, red);
ellipsoid(20, 23, 43, 5, 4, 1, redLight);
ellipsoid(16, 22, 40, 4, 4, 2, red);
box(18, 17, 40, 27, 18, 40, redLight);
box(20, 18, 41, 26, 19, 41, gold);
set(24, 17, 41, goldLight);

// Cream feather rising from the right side of the band.
line(28, 18, 41, 34, 20, 44, 0, "#e9dfb7");
ellipsoid(32, 19, 44, 3, 1, 1, "#fff0c9");
set(34, 19, 44, "#fff8df");

// Supporting sleeve reaches behind the lute toward its neck.
line(17, 20, 29, 15, 16, 25, 2, greenDark);
line(15, 16, 25, 23, 14, 25, 2, green);
box(20, 12, 24, 23, 14, 26, gold);

// Wooden lute held diagonally across the front of the tunic.
ellipsoid(20, 13, 22, 6, 3, 7, woodDark);
ellipsoid(20, 11, 22, 5, 2, 6, wood);
ellipsoid(20, 10, 22, 4, 1, 5, woodLight);
for (let z = 18; z <= 26; z++) {
  set(16, 10, z, woodDark);
  set(24, 10, z, woodDark);
}
ellipsoid(20, 9, 23, 2, 1, 2, leatherDark);
set(20, 8, 23, "#241f1a");
box(18, 8, 18, 22, 9, 19, woodDark);
box(18, 8, 19, 22, 8, 19, gold);

// Long neck and pegged headstock.
line(23, 12, 25, 35, 12, 32, 1, woodDark);
line(24, 11, 26, 35, 11, 32, 0, woodLight);
ellipsoid(36, 12, 32, 2, 2, 2, woodDark);
for (let i = 0; i < 4; i++) {
  const x = 29 + i * 2;
  const z = 28 + Math.round(i * 0.6);
  set(x, 10, z, goldLight);
}
set(35, 9, 33, woodLight);
set(37, 10, 33, woodLight);
set(36, 14, 32, woodLight);

// Fine strings run from bridge to headstock.
for (let i = -1; i <= 1; i++) {
  line(20 + i, 8, 19, 35 + i, 9, 32, 0, "#e9d397");
}

// Supporting hand curls around the neck.
ellipsoid(27, 10, 27, 2, 2, 2, skinShade);
box(26, 8, 27, 28, 9, 28, skinLight);

// Strumming arm pivots at the shoulder, in front of the instrument.
part("strummingArm", [31, 21, 29]);
ellipsoid(31, 20, 29, 3, 3, 3, greenDark);
line(30, 18, 28, 28, 14, 25, 2, green);
box(27, 12, 24, 29, 14, 25, gold);
line(28, 13, 24, 23, 9, 22, 1, skinShade);
ellipsoid(22, 8, 22, 2, 1, 2, skinLight);
set(20, 8, 21, skinLight);
animate("strummingArm", { type: "swing", axis: "z", speed: 8, amplitude: 0.2 });