fogón

← AnimalesObjeto 3Dfogon/foca

Foca

de fogonCC09088 bloques
FocaArrastrá para girarlo
// «Foca» · gpt-6-sol (medium)
// A cute cartoon grey seal lying on its belly, horizontal along y, head at the front (-y): a smooth rounded body tapering to rear flippers, two front flippers, a round head with big black shiny eyes, a black nose and whiskers. A red ball balanced on its nose.

const fur = "#9aa3aa";
const furLight = "#b3bcc2";
const furDark = "#77828b";
const belly = "#cbd1d2";

// Low, rounded body and pale belly.
ellipsoid(24, 27, 9, 11, 14, 8, fur);
ellipsoid(24, 25, 5, 9, 11, 5, belly);

// Two little rear flippers, splayed behind the body.
line(21, 38, 5, 17, 44, 3, 2, furDark);
ellipsoid(16, 44, 3, 4, 2, 2, fur);
line(27, 38, 5, 31, 44, 3, 2, furDark);
ellipsoid(32, 44, 3, 4, 2, 2, fur);

// Front flippers stretch out beside the seal.
line(16, 23, 6, 9, 20, 3, 2, furDark);
ellipsoid(9, 20, 3, 5, 3, 2, fur);
line(32, 23, 6, 39, 20, 3, 2, furDark);
ellipsoid(39, 20, 3, 5, 3, 2, fur);

// Oversized round head.
ellipsoid(24, 16, 13, 10, 9, 10, fur);

// Give the grey surfaces a softly varied, lighter-on-top finish.
forEach((x, y, z, color) => {
  if (color === fur) {
    if (z >= 16) set(x, y, z, rand() < 0.22 ? "#a5afb6" : furLight);
    else if (z <= 5) set(x, y, z, rand() < 0.25 ? "#858f97" : furDark);
    else if (rand() < 0.09) set(x, y, z, "#aab3b9");
  }
});

// Pale cheeks and a plump muzzle.
ellipsoid(19, 9, 11, 4, 3, 3, "#cbd1d2");
ellipsoid(29, 9, 11, 4, 3, 3, "#cbd1d2");
ellipsoid(24, 8, 11, 5, 3, 3, "#d8dcda");

// Big shiny eyes on the forward face.
sphere(18, 9, 17, 2, "#171d23");
sphere(30, 9, 17, 2, "#171d23");
set(17, 7, 18, "#ffffff");
set(29, 7, 18, "#ffffff");

// Tiny smile and whisker roots.
line(24, 5, 12, 24, 5, 10, 0, "#515960");
line(24, 5, 10, 22, 6, 9, 0, "#515960");
line(24, 5, 10, 26, 6, 9, 0, "#515960");
set(20, 5, 12, "#6e777b");
set(28, 5, 12, "#6e777b");

// Fine whiskers fan outward from either cheek.
line(19, 5, 12, 12, 3, 14, 0, "#535c62");
line(19, 5, 11, 11, 3, 11, 0, "#535c62");
line(19, 6, 10, 13, 4, 8, 0, "#535c62");
line(29, 5, 12, 36, 3, 14, 0, "#535c62");
line(29, 5, 11, 37, 3, 11, 0, "#535c62");
line(29, 6, 10, 35, 4, 8, 0, "#535c62");

// Nose directly beneath the balanced ball.
ellipsoid(24, 6, 16, 2, 2, 2, "#202429");
set(23, 4, 17, "#45494b");

// The ball is its own moving part.
part("ball", [24, 5, 23]);
sphere(24, 5, 23, 4, "#dc3440");
for (let x = 20; x <= 28; x++)
  for (let y = 1; y <= 9; y++)
    for (let z = 19; z <= 27; z++)
      if (get(x, y, z) === "#dc3440") {
        if (z >= 25) set(x, y, z, "#f05a5d");
        else if (z <= 21) set(x, y, z, "#b92132");
      }
sphere(22, 2, 25, 1, "#ffe5da");
set(21, 3, 24, "#ffaaa2");
animate("ball", { type: "bob", axis: "z", speed: 4, amplitude: 1.5 });