fogón

← Pirates and sea3D assetfogon/loro-pirata

Loro pirata

by fogonCC05950 blocks
Loro pirataDrag to turn it
// «Loro pirata» · gpt-6-sol (medium)
// A bright cartoon parrot perched on a short wooden perch stand: red body, blue and yellow wing feathers, a long red tail hanging down, a curved white and black beak, white eye patches with black dot eyes, and a tiny black pirate hat on its head.

// Short wooden perch stand
box(8, 20, 0, 40, 28, 2, "#89502d");
box(9, 20, 2, 39, 21, 2, "#bd8050");
box(9, 27, 2, 39, 28, 2, "#6e3b24");
box(22, 22, 3, 26, 26, 14, "#92552e");
box(22, 22, 3, 23, 26, 14, "#b67642");
box(22, 22, 9, 26, 22, 9, "#c88c53");
box(22, 22, 12, 26, 22, 12, "#c88c53");

cylinder(10, 24, 16, 2, 29, "#93572f", "x");
box(11, 22, 17, 38, 22, 17, "#c58a50");
for (let x = 13; x <= 36; x += 5) {
  set(x, 21, 16, "#deb078");
  set(x + 1, 21, 16, "#6e3b24");
}

// Long, layered tail feathers hanging behind the perch
line(22, 28, 23, 19, 32, 6, 1.6, "#b81826");
line(24, 29, 23, 24, 34, 5, 1.7, "#ed2934");
line(26, 28, 23, 29, 32, 7, 1.5, "#cf1c2c");
line(23, 31, 17, 22, 34, 6, 0, "#ff6860");
line(27, 30, 17, 29, 32, 8, 0, "#ff6860");

// Claws curled over the perch
for (const x of [21, 27]) {
  box(x - 1, 21, 17, x + 1, 25, 19, "#edb840");
  for (let dx = -1; dx <= 1; dx++) {
    line(x + dx, 21, 18, x + dx, 19, 16, 0, "#fbd56a");
    set(x + dx, 19, 15, "#8d5729");
  }
}

// Plump red body and sunny chest
ellipsoid(24, 24, 26, 7.5, 6, 8.5, "#c91e2b");
ellipsoid(24, 19.5, 26, 6, 2.5, 7, "#ef3139");
ellipsoid(24, 17.7, 27, 4.5, 0.8, 5, "#ff5650");
ellipsoid(24, 25, 32, 5, 4, 3, "#df2733");

// Individually flapping wings
for (const side of [-1, 1]) {
  const shoulder = 24 + side * 6;
  const name = side < 0 ? "leftWing" : "rightWing";
  part(name, [shoulder, 22, 29]);

  ellipsoid(24 + side * 10.5, 22, 27.5, 5.5, 2.5, 3.4, "#0876cb");
  ellipsoid(24 + side * 7, 20.5, 30, 3.2, 2, 2.4, "#ef3840");

  // Yellow coverts over chunky blue flight feathers
  ellipsoid(24 + side * 10.5, 19.5, 29.4, 4.3, 1.3, 1.6, "#ffd43d");
  line(24 + side * 8, 18, 29, 24 + side * 13, 18, 29, 0, "#fff18a");
  for (let i = 0; i < 4; i++) {
    line(
      24 + side * (11 + i * 0.5), 22, 27 - i,
      24 + side * (17 + i * 0.4), 22, 25 - i * 1.3,
      1.1, i % 2 ? "#075bae" : "#168fe0"
    );
  }
  line(24 + side * 15, 20, 25, 24 + side * 18, 20, 23, 0, "#61b8f2");

  animate(name, { type: "swing", axis: "y", speed: side < 0 ? 6 : -6, amplitude: 0.5 });
}

part("body");

// Head bobs gently from the neck
part("head", [24, 21, 33]);
ellipsoid(24, 21, 36, 6.3, 5.8, 6, "#e62934");
ellipsoid(24, 16.7, 36.5, 4.5, 1.7, 4, "#ff4b48");

// Big white eye patches and tiny forward-facing pupils
for (const x of [21, 27]) {
  ellipsoid(x, 15.8, 37.4, 2.15, 1.3, 2.3, "#fff9eb");
  box(x, 14, 37, x, 14, 38, "#161b24");
  set(x - 1, 13, 39, "#ffffff");
}

// Curved ivory upper beak, dark lower hook
ellipsoid(24, 12.8, 33.7, 3.2, 3.3, 2.7, "#f9f6e9");
ellipsoid(24, 11.2, 32.4, 2.4, 2.4, 2.8, "#e4e1d9");
box(23, 9, 30, 25, 11, 32, "#262631");
box(23, 11, 30, 25, 13, 31, "#292933");
set(22, 11, 34, "#46414a");
set(26, 11, 34, "#46414a");

// Tiny toy-like pirate hat: raised corners, broad brim, white skull
box(18, 16, 41, 30, 25, 42, "#161b23");
box(20, 17, 43, 28, 24, 44, "#242a32");
box(18, 17, 43, 19, 23, 44, "#10151d");
box(29, 17, 43, 30, 23, 44, "#10151d");
box(21, 16, 42, 27, 16, 42, "#b88c36");
box(23, 15, 43, 25, 15, 44, "#fff8df");
set(23, 14, 43, "#17202a");
set(25, 14, 43, "#17202a");
set(24, 14, 42, "#fff8df");
set(22, 15, 42, "#fff8df");
set(26, 15, 42, "#fff8df");

animate("head", { type: "bob", axis: "x", speed: 3, amplitude: 0.2 });
part("body");