fogón

← AnimalesObjeto 3Dfogon/canguro

Canguro

de fogonCC010563 bloques
CanguroArrastrá para girarlo
// «Canguro» · gpt-6-sol (medium)
// A cartoon kangaroo standing upright facing front (-y): a sandy orange-brown body with a lighter belly and a pouch with a little joey's head peeking out, big strong rear legs and long feet, short front arms, a long head with tall ears and a thick long tail resting on the ground behind.

const fur = "#c77b3f";
const lightFur = "#e29a55";
const darkFur = "#a95e30";
const cream = "#f3d39a";
const creamShade = "#dfb77b";
const ink = "#251b1a";

part("hop", [24, 24, 0]);

// Thick tail trailing behind, with its tip resting on the floor.
line(24, 29, 13, 24, 36, 7, 4, darkFur);
line(24, 35, 7, 24, 43, 2, 3, fur);
ellipsoid(24, 43, 2, 2.8, 3.2, 2, lightFur);

// Powerful haunches and oversized forward-pointing feet.
for (const x of [16, 32]) {
  ellipsoid(x, 24, 10, 5.2, 5.4, 8, darkFur);
  ellipsoid(x, 22, 10, 4.8, 5, 7.5, fur);
  ellipsoid(x, 15, 2.5, 4.4, 8, 2.5, darkFur);
  ellipsoid(x, 12.5, 2.2, 4, 7, 2, lightFur);
  for (const dx of [-2, 0, 2]) {
    ellipsoid(x + dx, 9, 1.2, 0.7, 1.3, 0.5, creamShade);
  }
}

// Round upright body and chest.
ellipsoid(24, 24, 19, 10, 7.5, 12.5, fur);
ellipsoid(24, 21, 27, 7, 6, 6, lightFur);

// A little irregularity on exposed fur, without obscuring the bold markings.
forEach((x, y, z, color) => {
  if (color !== fur || rand() > 0.065) return;
  if (get(x, y - 1, z) === fur && get(x, y, z + 1) === fur) return;
  set(x, y, z, rand() < 0.7 ? lightFur : darkFur);
});

// Cream belly, raised pouch, and a visible dark opening.
ellipsoid(24, 17.7, 18.5, 7, 2.7, 9.2, creamShade);
ellipsoid(24, 16.5, 20, 6.4, 2, 7, cream);
ellipsoid(24, 14.6, 14, 6, 2.7, 4.8, darkFur);
ellipsoid(24, 12.7, 16.4, 5.4, 1.4, 2.6, "#81462b");

// The joey peeks above the pouch edge.
ellipsoid(24, 12.4, 19.6, 3.4, 2.8, 3.5, lightFur);
for (const x of [21.7, 26.3]) {
  ellipsoid(x, 12.6, 23.1, 1.1, 1.2, 2.5, fur);
  ellipsoid(x, 11.5, 23.5, 0.55, 0.5, 1.5, "#cf8470");
}
ellipsoid(24, 9.9, 18.2, 2.3, 0.9, 1.2, cream);
for (const x of [22.5, 25.5]) set(x, 9, 20.5, ink);
set(24, 9, 18.8, ink);
ellipsoid(24, 11.9, 16.8, 5.5, 1.4, 1.1, lightFur);
line(19, 12.3, 16.8, 20, 12.1, 18.2, 0, creamShade);
line(29, 12.3, 16.8, 28, 12.1, 18.2, 0, creamShade);

// Short arms framing the pouch.
for (const side of [-1, 1]) {
  const shoulder = 24 + side * 9;
  line(shoulder, 20, 25, 24 + side * 10, 17, 18, 2.3, darkFur);
  ellipsoid(24 + side * 9.6, 17.5, 20, 2.6, 2.5, 5.4, fur);
  ellipsoid(24 + side * 8.5, 14.7, 16.4, 2.4, 2.2, 2.4, lightFur);
}

// Long face, rounded cheeks, and tall upright ears.
ellipsoid(24, 19.5, 34, 8, 7, 7, fur);
ellipsoid(24, 17.7, 36, 7.4, 5.8, 4.4, lightFur);
for (const x of [18, 30]) {
  ellipsoid(x, 19.5, 40.2, 2.5, 2.4, 6, darkFur);
  ellipsoid(x, 18.7, 40.5, 2.1, 2, 5.4, fur);
  ellipsoid(x, 16.8, 40.5, 1.1, 0.8, 4.3, "#d98b79");
}

// Forward-projecting, pale muzzle.
ellipsoid(24, 12.1, 31, 5.3, 4.3, 3.4, creamShade);
ellipsoid(24, 10.5, 31.8, 5, 3, 2.7, cream);
ellipsoid(24, 7.9, 32.3, 1.65, 1, 1.1, ink);
line(24, 8, 31.5, 24, 8, 30, 0, darkFur);
line(22, 8.6, 29.9, 24, 8, 29.4, 0, darkFur);
line(24, 8, 29.4, 26, 8.6, 29.9, 0, darkFur);

// Simple bright toy-like eyes.
for (const x of [19.5, 28.5]) {
  ellipsoid(x, 12.3, 35.7, 1.35, 0.9, 1.5, ink);
  set(x - 0.4, 11.4, 36.3, "#ffffff");
}

animate("hop", { type: "bob", axis: "z", speed: 4, amplitude: 2 });