fogón

← Animals3D assetfogon/coati

Coatí

by fogonCC09382 blocks
CoatíDrag to turn it
// «Coatí» · gpt-6-sol (medium)
// A cartoon coati, horizontal along y, head at the front (-y): a reddish-brown body, a long pointed upturned snout with a black tip, a white mask around the eyes, small round ears, four legs with dark feet and a long upright tail ringed in brown and cream.

const fur = "#ad542f";
const furLight = "#c66a3a";
const furDark = "#874024";
const cream = "#f5e7c5";
const creamShade = "#dcc9a3";
const footDark = "#493029";

// Rounded body with subtle fur variation.
ellipsoid(24, 25, 17, 10, 13, 9, fur);
forEach((x, y, z, color) => {
  if (color !== fur) return;
  if (z >= 21 && rand() < 0.65) set(x, y, z, furLight);
  else if (z <= 12 && rand() < 0.75) set(x, y, z, furDark);
  else if (rand() < 0.07) set(x, y, z, furLight);
});
ellipsoid(24, 22, 11, 7, 9, 3, creamShade);

// Tall, curved tail with bold horizontal rings.
for (let z = 19; z <= 43; z++) {
  const t = z - 19;
  const cy = 35 + 0.8 * t - 0.027 * t * t;
  const ring = Math.floor(t / 4) % 2;
  const base = ring ? cream : "#704027";
  for (let x = 20; x <= 28; x++) {
    for (let y = Math.floor(cy - 4); y <= Math.ceil(cy + 4); y++) {
      const d = (x - 24) ** 2 + (y - cy) ** 2;
      if (d <= 11.5) {
        let color = base;
        if (ring && d > 7 && rand() < 0.45) color = creamShade;
        if (!ring && rand() < 0.12) color = "#91502d";
        set(x, y, z, color);
      }
    }
  }
}
sphere(24, 39, 43, 3, "#704027");

// Oversized head and small round ears.
ellipsoid(24, 13, 24, 8, 8, 8, fur);
forEach((x, y, z, color) => {
  if (color === fur && y <= 20 && z >= 19 && z <= 32) {
    if (z >= 26 && rand() < 0.48) set(x, y, z, furLight);
    else if (rand() < 0.045) set(x, y, z, furDark);
  }
});
for (const x of [16, 32]) {
  sphere(x, 13, 30, 3, furDark);
  sphere(x, 11, 31, 2, furLight);
  ellipsoid(x, 9, 31, 1.5, 0.8, 1.5, "#ce8c78");
}

// White eye mask and bright, simple dot eyes.
ellipsoid(20, 7, 27, 3, 2.5, 3, cream);
ellipsoid(28, 7, 27, 3, 2.5, 3, cream);
ellipsoid(24, 8, 25, 2, 1.5, 2, creamShade);
sphere(20, 5, 28, 1.4, "#211c1a");
sphere(28, 5, 28, 1.4, "#211c1a");
set(20, 4, 29, "#ffffff");
set(28, 4, 29, "#ffffff");

// Long snout rises toward its black nose.
ellipsoid(24, 8, 21, 4, 5, 3, "#bc673d");
ellipsoid(24, 5, 22, 3, 4, 2.5, "#ce7848");
ellipsoid(24, 3, 24, 2.3, 2.5, 2.2, "#d9824c");
ellipsoid(24, 2, 25, 2, 1.5, 1.5, "#292322");
set(23, 1, 26, "#49403c");

// Four independent walking legs.
function leg(name, x, y, speed) {
  part(name, [x, y, 13]);
  sphere(x, y, 12, 3, furDark);
  cylinder(x, y, 3, 2.5, 9, "#92502e");
  ellipsoid(x, y - 1, 2, 3, 3.5, 2, footDark);
  box(x - 2, y - 3, 0, x + 2, y, 1, footDark);
  animate(name, { type: "swing", axis: "x", speed, amplitude: 0.3 });
  part("body");
}
leg("frontLeft", 17, 17, 5);
leg("frontRight", 31, 17, -5);
leg("rearLeft", 17, 33, -5);
leg("rearRight", 31, 33, 5);