fogón

← Asian3D assetfogon/mono-de-nieve

Mono de nieve

by fogonCC022072 blocks
Mono de nieveDrag to turn it
// «Mono de nieve» · gpt-6-sol (medium)
// A Japanese snow monkey sitting, compact and round: thick fluffy grey-beige fur, a bright red-pink face and hands, small dark eyes, a few snowflakes of white blocks on its head and shoulders, arms wrapped around its knees.

const fur = "#b7ad98";
const lightFur = "#c9bea6";
const shadowFur = "#958c7a";
const pink = "#df6170";
const brightPink = "#ee7d89";
const deepPink = "#a94354";

function furTexture() {
  forEach((x, y, z, color) => {
    if (color !== fur && color !== lightFur && color !== shadowFur) return;
    const exposed =
      !get(x, y - 1, z) || !get(x - 1, y, z) ||
      !get(x + 1, y, z) || !get(x, y, z + 1);
    if (!exposed) return;

    const n = rand();
    if (n < 0.055) set(x, y, z, "#ded3bb");
    else if (n < 0.125) set(x, y, z, z < 12 ? "#898273" : "#a29885");
    else if (n < 0.19) set(x, y, z, "#cfc3aa");
  });
}

// Round seated body and haunches.
ellipsoid(24, 27, 15, 14, 11, 13, fur);
ellipsoid(24, 29, 9, 15, 10, 8, shadowFur);
ellipsoid(14, 20, 9, 8, 10, 9, fur);
ellipsoid(34, 20, 9, 8, 10, 9, fur);

// Knees pulled up in front of the belly.
ellipsoid(15, 14, 11, 7, 7, 9, fur);
ellipsoid(33, 14, 11, 7, 7, 9, fur);
ellipsoid(15, 11, 13, 5, 4, 5, lightFur);
ellipsoid(33, 11, 13, 5, 4, 5, lightFur);

// Broad, flat feet on the floor.
ellipsoid(14, 10, 2, 7, 6, 2, shadowFur);
ellipsoid(34, 10, 2, 7, 6, 2, shadowFur);
ellipsoid(14, 8, 3, 6, 4, 2, fur);
ellipsoid(34, 8, 3, 6, 4, 2, fur);

// Soft pale chest, visible between the knees.
ellipsoid(24, 17, 19, 9, 3, 8, lightFur);
ellipsoid(24, 15, 15, 6, 2, 5, "#d6cab0");

// Short tail peeking out beside the body.
ellipsoid(38, 34, 8, 4, 4, 5, fur);
ellipsoid(40, 34, 7, 2, 3, 3, lightFur);

// Thick arms curl forward around the outside of the knees.
line(11, 24, 22, 9, 17, 18, 4, fur);
line(9, 17, 18, 12, 11, 10, 4, fur);
line(37, 24, 22, 39, 17, 18, 4, fur);
line(39, 17, 18, 36, 11, 10, 4, fur);
ellipsoid(11, 17, 17, 4, 5, 6, lightFur);
ellipsoid(37, 17, 17, 4, 5, 6, lightFur);

furTexture();

// Red-pink hands clasp the fronts of the knees.
ellipsoid(14, 8, 10, 4, 2, 3, deepPink);
ellipsoid(34, 8, 10, 4, 2, 3, deepPink);
ellipsoid(14, 7, 11, 4, 2, 2, pink);
ellipsoid(34, 7, 11, 4, 2, 2, pink);
for (const x of [12, 14, 16, 32, 34, 36]) {
  line(x, 6, 9, x, 6, 7, 0, brightPink);
}

// A few flakes caught on the shoulders.
for (const [x, y, z] of [
  [10, 23, 26], [12, 21, 27], [37, 23, 26],
  [35, 20, 26], [9, 19, 22], [39, 19, 22]
]) {
  set(x, y, z, "#f7f8f2");
  if (rand() < 0.5) set(x + 1, y, z, "#e7f0ee");
}

// Only the head turns; its pivot sits at the neck.
part("head", [24, 22, 25]);
ellipsoid(24, 21, 30, 11, 9, 9, fur);
ellipsoid(24, 22, 34, 9, 8, 5, lightFur);
ellipsoid(13, 20, 30, 3, 3, 4, fur);
ellipsoid(35, 20, 30, 3, 3, 4, fur);

// Small rosy ears tucked into the cheek fur.
ellipsoid(12, 17, 30, 2, 1, 3, deepPink);
ellipsoid(36, 17, 30, 2, 1, 3, deepPink);
ellipsoid(12, 16, 30, 1, 1, 2, brightPink);
ellipsoid(36, 16, 30, 1, 1, 2, brightPink);

furTexture();

// Bright, unmistakable snow-monkey face.
ellipsoid(24, 12, 30, 8, 3, 7, deepPink);
ellipsoid(24, 10, 31, 7, 2, 6, pink);
ellipsoid(19, 9, 28, 3, 1, 3, brightPink);
ellipsoid(29, 9, 28, 3, 1, 3, brightPink);
ellipsoid(24, 9, 26, 4, 2, 2, brightPink);
ellipsoid(24, 7, 27, 2, 1, 1, "#a73d4d");

// Dark, close-set eyes under a gentle brow.
box(19, 8, 31, 21, 8, 32, "#463c3b");
box(27, 8, 31, 29, 8, 32, "#463c3b");
set(20, 7, 32, "#171b1d");
set(28, 7, 32, "#171b1d");
set(20, 7, 33, "#fff1df");
set(28, 7, 33, "#fff1df");
line(18, 8, 34, 21, 8, 34, 0, "#ad4554");
line(27, 8, 34, 30, 8, 34, 0, "#ad4554");
set(24, 6, 27, "#713640");
line(22, 7, 24, 26, 7, 24, 0, "#773c44");
set(24, 7, 23, "#b64d5c");

// Snowflakes resting on the crown.
for (const [x, y, z] of [
  [19, 18, 39], [20, 18, 39], [25, 17, 39],
  [29, 20, 38], [16, 20, 37], [32, 23, 36]
]) {
  set(x, y, z, "#fcfffa");
}
set(25, 16, 38, "#e5f2ef");
set(29, 19, 38, "#e5f2ef");

animate("head", { type: "swing", axis: "z", speed: 1.5, amplitude: 0.3 });