fogón

← AnimalesObjeto 3Dfogon/loro

Loro

de fogonCC012131 bloques
LoroArrastrá para girarlo
// «Loro» · gpt-6-sol (medium)
// A bright cartoon parrot perched upright facing front (-y): green body, red head and chest, a big curved hooked beak in pale grey, white eye patches with black eyes, blue and yellow wing feathers folded at the sides, and a long red and blue tail hanging down behind. Grey feet gripping a short wooden perch bar.

// Wooden stand and short perch
box(15, 24, 0, 33, 28, 2, "#80502b");
box(18, 24, 2, 30, 28, 3, "#a66a36");
box(22, 24, 3, 26, 28, 8, "#8a552e");
cylinder(7, 25, 9, 2, 35, "#a96c38", "x");
line(9, 25, 10, 39, 25, 10, 0, "#ca8749");

// Long tail feathers hang down behind the perch
for (const [x, y, z, color] of [
  [20, 34, 14, "#bd273a"], [23, 36, 12, "#e33745"],
  [27, 36, 12, "#2874cc"], [30, 34, 14, "#1759ad"]
]) {
  line(x, 31, 22, x, y + 2, z - 8, 2, color);
  line(x, y, z - 3, x, y + 2, z - 8, 1, color);
}
line(23, 35, 15, 24, 40, 4, 1, "#f05257");
line(28, 35, 15, 30, 39, 5, 1, "#46a2e5");

// Chunky green body, with a subtly mottled surface
ellipsoid(24, 24, 21, 10, 8, 12, "#308d43");
ellipsoid(24, 24, 24, 10, 8, 10, "#40b954");
ellipsoid(24, 22, 28, 8, 7, 6, "#55cb60");
forEach((x, y, z, color) => {
  if (color === "#40b954" && rand() < 0.065)
    set(x, y, z, z > 25 ? "#58c962" : "#319e49");
});

// Rounded red bib and oversized head
ellipsoid(24, 16.7, 23, 7, 3, 9, "#bc3039");
ellipsoid(24, 15.5, 25, 6, 2, 7, "#ed4548");
ellipsoid(24, 20, 35, 9, 8, 9, "#cf303a");
ellipsoid(24, 19, 37, 8, 7, 7, "#ed4148");
ellipsoid(24, 18, 41, 6, 5, 2, "#f45b58");

// Folded wings, each hinged at its shoulder
part("leftWing", [15, 23, 30]);
ellipsoid(11, 23, 25, 5, 5, 9, "#1462ad");
ellipsoid(9, 22, 22, 5, 4, 8, "#237fd0");
ellipsoid(12, 19, 29, 3, 2, 5, "#f5cf3d");
line(9, 19, 27, 7, 19, 17, 2, "#f1c735");
line(12, 18, 25, 10, 19, 15, 2, "#ffdf54");
line(7, 22, 22, 6, 24, 13, 1, "#12559f");
animate("leftWing", { type: "swing", axis: "y", speed: 4, amplitude: 0.4 });

part("rightWing", [33, 23, 30]);
ellipsoid(37, 23, 25, 5, 5, 9, "#1462ad");
ellipsoid(39, 22, 22, 5, 4, 8, "#237fd0");
ellipsoid(36, 19, 29, 3, 2, 5, "#f5cf3d");
line(39, 19, 27, 41, 19, 17, 2, "#f1c735");
line(36, 18, 25, 38, 19, 15, 2, "#ffdf54");
line(41, 22, 22, 42, 24, 13, 1, "#12559f");
animate("rightWing", { type: "swing", axis: "y", speed: -4, amplitude: 0.4 });

part("body");

// White eye patches and simple, shiny black dot eyes
for (const x of [18, 30]) {
  ellipsoid(x, 11.5, 37, 3, 2, 3, "#fff5e4");
  ellipsoid(x, 9.7, 37, 1.3, 1, 1.5, "#151b24");
  set(x - 1, 8, 38, "#ffffff");
}

// Big pale hooked beak: broad at the top, curling down to a point
ellipsoid(24, 9, 33, 5, 5, 4, "#b5bec1");
ellipsoid(24, 7, 34, 4, 3, 2, "#e4e9e5");
ellipsoid(24, 7, 30, 3, 2.5, 4, "#cbd3d2");
ellipsoid(24, 8, 27, 1.7, 1.7, 3, "#a1aaad");
set(24, 8, 24, "#929da1");
line(21, 6, 31, 27, 6, 31, 0, "#818c91");
set(20, 11, 33, "#555d61");
set(28, 11, 33, "#555d61");

// Little grey legs and toes curled over the wooden bar
for (const x of [19, 29]) {
  box(x - 1, 22, 10, x + 1, 25, 15, "#848d91");
  box(x - 2, 20, 10, x + 2, 24, 12, "#abb3b4");
  for (const dx of [-2, 0, 2]) {
    line(x + dx, 21, 11, x + dx, 19, 9, 0, "#778186");
  }
}