fogón

← Ancient and prehistory3D assetfogon/tigre-dientes-de-sable

Tigre dientes de sable

by fogonCC014591 blocks
Tigre dientes de sableDrag to turn it
// «Tigre dientes de sable» · gpt-6-sol (medium)
// A chunky cartoon saber-toothed tiger on four strong legs, body horizontal along y with a heavy front: a big head at the front (-y) with two very long white curved fangs hanging below the jaw, tawny orange fur with a cream muzzle and belly and a few dark brown stripes, a short stubby tail.

const fur = "#c97832";
const furLight = "#dc9144";
const furDark = "#a85829";
const cream = "#f1dbad";
const creamShade = "#d8bd8e";
const stripe = "#54382b";
const ivory = "#fff7df";

// Horizontal, heavy-shouldered body.
ellipsoid(24, 26, 21, 10, 15, 9, fur);
ellipsoid(24, 17, 22, 11, 10, 10, furLight);
ellipsoid(24, 26, 15, 8, 12, 4, creamShade);
ellipsoid(24, 15, 16, 7, 8, 4, cream);

// Subtle fur variation, applied before the face and markings.
forEach((x, y, z, color) => {
  if (color === fur || color === furLight) {
    const n = rand();
    if (n < 0.075) set(x, y, z, furDark);
    else if (n < 0.17 && z > 20) set(x, y, z, furLight);
  }
});

// Bold stripes wrapping down both flanks.
for (const side of [-1, 1]) {
  for (const [y, top, bottom] of [
    [21, 29, 21],
    [28, 29, 20],
    [35, 27, 19]
  ]) {
    line(24 + side * 7, y - 1, top,
         24 + side * 9, y + 1, bottom, 1, stripe);
  }
}
line(20, 24, 30, 28, 24, 30, 1, stripe);
line(21, 31, 29, 27, 31, 29, 1, stripe);

// Short, blunt tail with a dark tip.
line(24, 39, 25, 24, 43, 28, 2, fur);
sphere(24, 44, 28, 2, stripe);

// Oversized friendly head and rounded ears.
ellipsoid(24, 12, 27, 11, 9, 10, furLight);
ellipsoid(16, 12, 37, 3, 3, 4, fur);
ellipsoid(32, 12, 37, 3, 3, 4, fur);
ellipsoid(16, 9, 38, 2, 1, 2, "#bc795e");
ellipsoid(32, 9, 38, 2, 1, 2, "#bc795e");

// Forehead markings.
line(23, 5, 35, 22, 8, 32, 1, stripe);
line(25, 5, 35, 26, 8, 32, 1, stripe);
line(14, 10, 33, 16, 8, 30, 1, stripe);
line(34, 10, 33, 32, 8, 30, 1, stripe);

// Big dot eyes, facing the viewer at -y.
for (const x of [18, 30]) {
  sphere(x, 5, 29, 2, furDark);
  box(x - 1, 3, 28, x + 1, 4, 30, "#242321");
  set(x - 1, 2, 30, "#ffffff");
}

// Cream cheeks, muzzle, little nose, and smiling lower jaw.
ellipsoid(19, 5, 22, 5, 3, 4, cream);
ellipsoid(29, 5, 22, 5, 3, 4, cream);
box(22, 2, 23, 26, 3, 25, stripe);
box(23, 1, 24, 25, 2, 25, "#352a28");
box(22, 3, 18, 26, 4, 18, stripe);
ellipsoid(24, 7, 17, 5, 3, 2, creamShade);

// Two unmistakably long, slightly inward-curving saber teeth.
for (const side of [-1, 1]) {
  const root = 24 + side * 7;
  box(root - 1, 2, 18, root + 1, 4, 21, ivory);
  box(root - 1, 2, 15, root + 1, 3, 17, ivory);
  box(root, 2, 12, root + side, 3, 14, ivory);
  box(root + side, 2, 10, root + side, 2, 11, creamShade);
}

// Four independently swinging, sturdy legs. Opposite diagonals walk together.
for (const [name, x, y, speed] of [
  ["frontLeft", 17, 16, 4],
  ["frontRight", 31, 16, -4],
  ["rearLeft", 17, 35, -4],
  ["rearRight", 31, 35, 4]
]) {
  part(name, [x, y, 18]);
  ellipsoid(x, y, 16, 4, 5, 5, fur);
  box(x - 3, y - 3, 4, x + 3, y + 3, 16, fur);
  box(x - 3, y - 3, 4, x + 3, y + 3, 7, furDark);
  ellipsoid(x, y - 2, 2, 4, 5, 2, furLight);

  // Light toes and three tiny dark claw marks.
  for (const dx of [-2, 0, 2]) {
    box(x + dx, y - 5, 1, x + dx + 1, y - 4, 2, cream);
    set(x + dx, y - 6, 1, furDark);
  }
  animate(name, { type: "swing", axis: "x", speed, amplitude: 0.3 });
}
part("body", [24, 24, 20]);