fogón

← Animals3D assetfogon/paloma

Paloma

by fogonCC018370 blocks
PalomaDrag to turn it
// «Paloma» · gpt-6-sol (medium)
// A plump cartoon pigeon standing facing front (-y): a grey body with darker wing bars, an iridescent green and purple neck, a small dark beak with a white bump, orange eyes and pink feet.

// A plump pigeon, facing -y.
const grey = "#929ba5";
const lightGrey = "#b4bdc4";
const wingGrey = "#78838f";
const darkGrey = "#48515e";

// Short pink legs, each swinging from its own hip.
for (const [name, x, speed] of [
  ["leftLeg", 19, 5],
  ["rightLeg", 29, -5],
]) {
  part(name, [x, 25, 10]);
  ellipsoid(x, 25, 7, 2.5, 2.5, 4, "#d98396");
  box(x - 2, 23, 2, x + 2, 27, 7, "#dc8b9b");
  ellipsoid(x, 21, 2, 3, 5, 2, "#e596a3");
  for (const dx of [-2, 0, 2]) {
    ellipsoid(x + dx, 16, 1, 1.5, 4, 1.5, "#f0a4ad");
    set(x + dx, 13, 1, "#f4b4b9");
  }
  animate(name, { type: "swing", axis: "x", speed, amplitude: 0.3 });
}

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

// Tail feathers peek out behind the round body.
for (const [x, color] of [
  [19, "#727e89"], [22, "#929da6"], [25, "#a1aab2"],
  [28, "#89949e"], [31, "#687581"],
]) {
  ellipsoid(x, 38, 18, 2.5, 7, 3, color);
}

// Big, solid pear-shaped body and pale breast.
ellipsoid(24, 26, 18, 14, 13, 15, grey);
forEach((x, y, z, color) => {
  if (color !== grey) return;
  if (z > 27) set(x, y, z, "#a7b0b8");
  else if (z < 11) set(x, y, z, "#7e8994");
  else if (rand() < 0.045) set(x, y, z, "#9fa9b1");
});
ellipsoid(24, 14, 18, 10, 3, 11, lightGrey);
ellipsoid(24, 12, 17, 7, 1.5, 8, "#c3c9ca");

// Chunky folded wings, with two bold bars on each outside face.
for (const [x, side] of [[12, -1], [36, 1]]) {
  ellipsoid(x, 27, 21, 4, 9, 10, wingGrey);
  ellipsoid(x + side, 25, 24, 2, 7, 6, "#929da7");
  for (const [z, shade] of [[24, darkGrey], [19, "#535d69"]]) {
    line(x + side * 3, 20, z + 2,
         x + side * 3, 33, z - 2, 1.2, shade);
  }
  ellipsoid(x + side * 2, 33, 16, 2, 3, 2, "#66727e");
}

// An iridescent neck: purple at the sides, green across the front.
ellipsoid(24, 17, 27, 8, 8, 8, "#65497f");
ellipsoid(24, 14, 26, 7, 5, 6, "#318b78");
ellipsoid(24, 10, 25, 5, 1.5, 3, "#53ad80");
for (const x of [18, 30]) {
  ellipsoid(x, 13, 28, 2, 2, 3, "#85619b");
}
ellipsoid(24, 13, 29, 5, 2, 1.5, "#497e92");

// The whole head, including its face and beak, bobs at the neck joint.
part("head", [24, 18, 29]);
ellipsoid(24, 17, 34, 10, 9, 9, "#a3adb6");
ellipsoid(24, 15, 38, 8, 7, 4, "#b8c1c7");
ellipsoid(24, 9, 32, 7, 2, 5, "#aeb7bf");

// Oversized orange eyes with simple black dot pupils.
for (const x of [19, 29]) {
  sphere(x, 9, 35, 2.5, "#db743f");
  sphere(x, 7, 35, 1.65, "#f5a34d");
  sphere(x, 5.5, 35, 1.15, "#202936");
  set(x - 1, 5, 36, "#ffffff");
}

// White cere above a small, tapered charcoal beak.
ellipsoid(24, 8, 31, 3, 2, 2, "#f2eee6");
ellipsoid(22, 8, 31, 1.5, 2, 1.5, "#ffffff");
ellipsoid(26, 8, 31, 1.5, 2, 1.5, "#ffffff");
box(22, 5, 28, 26, 8, 30, "#404550");
box(23, 3, 28, 25, 5, 29, "#303540");
set(24, 3, 27, "#262c36");

animate("head", { type: "swing", axis: "x", speed: 6, amplitude: 0.25 });
part("body", [24, 25, 18]);