fogón

← Animals3D assetfogon/aguila

Águila

by fogonCC07675 blocks
ÁguilaDrag to turn it
// «Águila» · gpt-6-sol (medium)
// A cartoon bald eagle with wings spread, facing front (-y): a dark brown body and wings, a white head and white tail, a big hooked yellow beak, fierce yellow eyes and yellow talons.

const brown = "#64351e";
const brownLight = "#80502b";
const brownDark = "#442717";
const featherDark = "#382319";
const white = "#f5f2df";
const whiteShade = "#d9ded5";
const whiteLight = "#fffdf1";
const yellow = "#ffc83c";
const yellowLight = "#ffe069";
const yellowDark = "#df9223";
const black = "#191919";

// Short legs and broad, forward-reaching talons.
for (const x of [19, 29]) {
  ellipsoid(x, 24, 5, 2.5, 2.5, 5, brownDark);
  ellipsoid(x, 20, 2, 2.6, 4, 2, yellowDark);
  for (const dx of [-2, 0, 2]) {
    line(x, 19, 2, x + dx, 14, 1, 1.3, yellow);
    set(x + dx, 13, 0, yellowLight);
  }
}

// A fan of white tail feathers behind the body.
for (let i = -3; i <= 3; i++) {
  line(24 + i * 0.5, 29, 17, 24 + i * 1.5, 39, 12, 1.6, whiteShade);
  line(24 + i * 0.5, 30, 18, 24 + i * 1.5, 38, 14, 0, whiteLight);
}

// Plump brown body, with a softly mottled upper surface.
ellipsoid(24, 24, 20, 9, 7.5, 11, brownDark);
ellipsoid(24, 23, 22, 8.5, 7, 9, brown);
forEach((x, y, z, color) => {
  if (color === brown && z > 19 && rand() < 0.13)
    set(x, y, z, rand() < 0.65 ? brownLight : brownDark);
});
ellipsoid(24, 17, 19, 5, 1.2, 6, brownLight);

// Bold white neck and oversized, rounded head.
ellipsoid(24, 22, 29, 7, 6, 5, whiteShade);
ellipsoid(24, 21, 35, 8, 7, 8, whiteShade);
ellipsoid(24, 20, 36, 7.5, 6.5, 7, white);
ellipsoid(24, 19, 40, 5.5, 4, 2.5, whiteLight);

// Fierce yellow eyes with simple black pupils and white glints.
for (const x of [20, 28]) {
  ellipsoid(x, 14, 36, 2.2, 1.1, 2.2, yellowDark);
  ellipsoid(x, 13, 36.5, 1.7, 0.8, 1.7, yellowLight);
  ellipsoid(x, 12, 36, 0.9, 0.6, 1.1, black);
  set(x, 11, 37, whiteLight);
}
// Sloping white brows give the little eagle its determined expression.
line(17, 12, 39, 22, 12, 38, 0, whiteLight);
line(26, 12, 38, 31, 12, 39, 0, whiteLight);

// Oversized hooked beak, projecting toward the viewer.
ellipsoid(24, 12, 33, 3.3, 4, 3.1, yellowDark);
ellipsoid(24, 11, 34, 3, 3.3, 2.5, yellow);
ellipsoid(24, 9, 31, 1.8, 1.7, 2.5, yellow);
set(24, 8, 28, yellowDark);
set(22, 9, 34, brownDark);
set(26, 9, 34, brownDark);

// Each broad wing is its own flapping part, hinged at the shoulder.
function wing(name, side, pivotX, speed) {
  part(name, [pivotX, 24, 29]);

  ellipsoid(pivotX + side, 24, 29, 3.5, 5, 3.5, brown);
  for (let u = 1; u <= 12; u++) {
    const x = pivotX + side * u;
    const taper = u / 12;
    ellipsoid(x, 24 + taper, 29 + taper,
              2, 4.5 - taper, 2.5 - taper * 0.5, brownDark);
    ellipsoid(x, 23 + taper, 31 + taper,
              1.6, 2.8 - taper * 0.5, 0.8, brownLight);
  }

  // Separate rounded flight feathers along the trailing edge.
  for (let u = 2; u <= 12; u += 2) {
    const x = pivotX + side * u;
    ellipsoid(x, 29 + u * 0.12, 27.5, 1.5, 4, 1.4, featherDark);
    ellipsoid(x, 28 + u * 0.12, 28.5, 1.1, 2.6, 0.6, brown);
  }
  for (let u = 9; u <= 12; u++) {
    const x = pivotX + side * u;
    line(x, 26, 29, x + side, 32 + (u - 9), 27, 0, brownDark);
  }

  animate(name, { type: "swing", axis: "y", speed, amplitude: 0.4 });
}

wing("leftWing", -1, 16, 3);
wing("rightWing", 1, 32, -3);
part("body", [24, 24, 20]);