fogón

← AnimalesObjeto 3Dfogon/llama

Llama

de fogonCC09736 bloques
LlamaArrastrá para girarlo
// «Llama» · gpt-6-sol (medium)
// A fluffy cartoon llama, horizontal along y, head at the front (-y): a woolly white body, four thin legs, a long upright neck and a head with tall banana-shaped ears, black eyes with lashes and a little smile. A colorful Andean blanket on its back with red, yellow and blue stripes, and pompoms on the ears.

const wool = "#f7f3e8";
const woolLight = "#fffdf4";
const woolShadow = "#dedbd1";
const woolWarm = "#eee8db";
const blue = "#1675bb";
const darkBlue = "#184a91";
const red = "#e84248";
const yellow = "#ffd44f";

// Rounded, woolly body.
ellipsoid(24, 27, 19, 11, 13, 9, wool);
ellipsoid(24, 15, 22, 7, 6, 8, woolWarm);

// Little fleece curls break up the silhouette.
for (let i = 0; i < 85; i++) {
  const a = rand() * Math.PI * 2;
  const v = rand() * 1.65 - 0.82;
  const s = Math.sqrt(1 - v * v);
  const x = 24 + 10.5 * s * Math.cos(a);
  const y = 27 + 12.5 * s * Math.sin(a);
  const z = 19 + 8.5 * v;
  if (z > 12) sphere(x, y, z, 1 + rand() * 0.8, rand() < 0.45 ? woolLight : wool);
}

// Tall, fluffy neck and oversized head.
ellipsoid(24, 13, 28, 5, 5, 10, wool);
for (let z = 22; z <= 34; z += 3) {
  sphere(19.5, 13 + (z % 2), z, 2, woolLight);
  sphere(28.5, 14 - (z % 2), z, 2, woolWarm);
}
ellipsoid(24, 10, 36, 7, 6, 6, woolLight);
sphere(21, 7, 40, 2, woolLight);
sphere(27, 7, 40, 2, woolLight);

// Soft tail at the back.
sphere(24, 40, 24, 3, wool);
sphere(24, 42, 25, 2, woolLight);

// Four independent walking legs.
const legs = [
  ["frontLeft", 18, 17, 5],
  ["frontRight", 30, 17, -5],
  ["rearLeft", 18, 35, -5],
  ["rearRight", 30, 35, 5]
];
for (const [name, x, y, speed] of legs) {
  part(name, [x, y, 15]);
  ellipsoid(x, y, 13, 3, 3, 3, wool);
  cylinder(x, y, 3, 1.8, 11, woolWarm);
  box(x - 2, y - 2, 0, x + 2, y + 1, 2, "#78635b");
  box(x - 2, y - 2, 2, x + 2, y + 1, 3, woolShadow);
  animate(name, { type: "swing", axis: "x", speed, amplitude: 0.25 });
}
part("body");

// Woven blanket follows the curve of the back.
function weaveColor(y) {
  if (y === 19 || y === 36) return darkBlue;
  if (y === 20 || y === 23 || y === 27 || y === 31 || y === 35) return yellow;
  if (y === 21 || y === 22 || y === 28 || y === 29 || y === 34) return red;
  return blue;
}
for (let x = 15; x <= 33; x++) {
  for (let y = 19; y <= 36; y++) {
    const q = 1 - ((x - 24) / 11) ** 2 - ((y - 27) / 13) ** 2;
    if (q < 0.09) continue;
    const z = Math.round(19 + 9 * Math.sqrt(q));
    let c = weaveColor(y);
    if ((x === 16 || x === 32) && y > 20 && y < 35) c = yellow;
    if (y >= 31 && y <= 33 && Math.abs(x - 24) + Math.abs(y - 32) === 4) c = yellow;
    box(x, y, z, x, y, z + 1, c);
  }
}
// Blanket panels hang down both sides, with a bright hem.
for (const x of [14, 15, 16, 32, 33, 34]) {
  for (let y = 20; y <= 35; y++) {
    for (let z = 19; z <= 24; z++) {
      if ((x === 14 || x === 34) && (y < 22 || y > 33)) continue;
      set(x, y, z, z === 19 ? yellow : weaveColor(y));
    }
  }
}

// Curved banana-shaped ears, pink inside and pompoms at the tips.
line(19, 10, 40, 18, 10, 43, 1.5, wool);
line(18, 10, 43, 16, 10, 44, 1.2, woolLight);
line(29, 10, 40, 30, 10, 43, 1.5, wool);
line(30, 10, 43, 32, 10, 44, 1.2, woolLight);
line(18, 8, 41, 17, 8, 43, 0, "#ee9fa6");
line(30, 8, 41, 31, 8, 43, 0, "#ee9fa6");
sphere(16, 10, 44, 1.2, red);
sphere(32, 10, 44, 1.2, blue);

// Plush muzzle, dot eyes, tiny lashes and a smiling mouth.
ellipsoid(24, 5, 33, 4.5, 3, 3, "#f2e7dd");
box(19, 5, 37, 20, 5, 38, "#24242a");
box(28, 5, 37, 29, 5, 38, "#24242a");
set(19, 4, 38, "#ffffff");
set(28, 4, 38, "#ffffff");
line(18, 5, 39, 17, 5, 40, 0, "#24242a");
line(30, 5, 39, 31, 5, 40, 0, "#24242a");
set(24, 1, 34, "#63474a");
set(23, 1, 34, "#63474a");
line(21, 2, 32, 23, 1, 31, 0, "#775658");
line(23, 1, 31, 25, 1, 31, 0, "#775658");
line(25, 1, 31, 27, 2, 32, 0, "#775658");
set(18, 6, 34, "#efb7af");
set(30, 6, 34, "#efb7af");