fogón

← GranjaObjeto 3Dfogon/chancho

Chancho

de fogonCC015681 bloques
ChanchoArrastrá para girarlo
// «Chancho» · gpt-6-sol (medium)
// A round chubby pink cartoon pig, horizontal: a fat oval barrel body about 1.5 times longer (along y) than tall, pink with lighter pink on top, standing on four very short stubby legs with dark hooves. A big round head at the front (-y) with a prominent flat round snout disc pointing forward (darker pink with two dark nostril holes), black dot eyes above the snout, and two small triangular ears flopping forward over the eyes. At the back only a SMALL thin curly tail (a little 3-4 block spiral), nothing large.

// Round barrel body and oversized head.
ellipsoid(24, 27, 18, 13, 16, 12, "#f3a4b2");
ellipsoid(24, 12, 22, 10, 10, 10, "#f8adba");

// Sunny top highlights, soft underside shading, and subtle variation.
forEach((x, y, z) => {
  const isHead = y < 19 && z >= 13;
  let color;
  if (z >= (isHead ? 27 : 23)) color = isHead ? "#ffc5ca" : "#ffbdc4";
  else if (z < (isHead ? 19 : 15)) color = isHead ? "#e995a8" : "#e58da1";
  else color = isHead ? "#f8adba" : "#f3a4b2";
  if (rand() < 0.065) color = z > 23 ? "#ffd0d0" : "#efa0ad";
  set(x, y, z, color);
});

// Small triangular ears, tipped forward over the eyes.
for (const side of [-1, 1]) {
  for (let z = 30; z <= 36; z++) {
    const t = z - 30;
    const cx = 24 + side * (5 + t * 0.45);
    const halfWidth = 2.8 - t * 0.37;
    const frontY = 6 - Math.floor(t / 2);
    for (let x = Math.ceil(cx - halfWidth); x <= Math.floor(cx + halfWidth); x++) {
      box(x, frontY, z, x, frontY + 3, z, "#e9899e");
      if (z >= 31 && z <= 34 && Math.abs(x - cx) < halfWidth - 0.7) {
        set(x, frontY, z, "#f7a8b7");
      }
    }
  }
}

// Bright black dot eyes.
for (const x of [19, 29]) {
  sphere(x, 4, 27, 1.5, "#302a31");
  set(x, 3, 28, "#ffffff");
}

// Prominent flat snout, facing the viewer at -y.
cylinder(24, 1, 19, 6, 5, "#d9758d", "y");
cylinder(24, 0, 19, 5, 2, "#ed91a3", "y");
for (const x of [21, 27]) {
  box(x - 1, 0, 18, x, 0, 20, "#793e4d");
  set(x - 1, 0, 20, "#914b5a");
}

// Four independently swinging stubby legs.
for (const [name, x, y, speed] of [
  ["frontLeft", 16, 17, 5],
  ["frontRight", 32, 17, -5],
  ["rearLeft", 16, 36, -5],
  ["rearRight", 32, 36, 5]
]) {
  part(name, [x, y, 9]);
  ellipsoid(x, y, 7, 3.5, 3.5, 3.5, "#e992a6");
  box(x - 3, y - 3, 2, x + 3, y + 3, 7, "#ee9dad");
  box(x - 3, y - 3, 0, x + 3, y + 3, 2, "#654a4b");
  box(x - 3, y - 3, 2, x + 3, y - 3, 3, "#775254");
  set(x, y - 3, 0, "#443b3e");
  animate(name, { type: "swing", axis: "x", speed, amplitude: 0.3 });
}

// A tiny, thin corkscrew tail behind the rump.
part("tail", [24, 43, 21]);
const curl = [
  [24, 43, 21], [24, 44, 21], [25, 45, 22],
  [26, 45, 22], [27, 45, 21], [27, 45, 20],
  [26, 45, 19], [25, 45, 20]
];
for (let i = 1; i < curl.length; i++) {
  line(...curl[i - 1], ...curl[i], 0, i > 4 ? "#de7e95" : "#ef9cae");
}
animate("tail", { type: "spin", axis: "y", speed: 1 });
part("body", [24, 24, 18]);