fogón

← Parties and Christmas3D assetfogon/reno

Reno

by fogonCC06520 blocks
RenoDrag to turn it
// «Reno» · gpt-6-sol (medium)
// A cute cartoon reindeer standing, with a horizontal body along y: warm brown body with a cream belly, four thin legs with dark hooves, a short fluffy cream tail at the back, a head at the front (-y) with big branching tan antlers, black dot eyes and a big round glowing red nose. A red collar with a small golden bell around the neck.

// Warm, rounded body
ellipsoid(24, 25, 20, 9, 14, 7, "#a86739");
forEach((x, y, z, color) => {
  if (color === "#a86739" && rand() < 0.045)
    set(x, y, z, rand() < 0.5 ? "#b87543" : "#98582f");
});
ellipsoid(24, 24, 17, 7.5, 12, 3.5, "#f5e8cb");
ellipsoid(24, 25, 25, 6.5, 10, 1.5, "#b87543");

// Four independently swinging legs
function leg(name, x, y, speed) {
  part(name, [x, y, 16]);
  ellipsoid(x, y, 13, 2, 2.2, 4, "#a86739");
  line(x, y, 13, x, y, 4, 1.35, "#9d6035");
  ellipsoid(x, y, 3, 1.7, 1.7, 2.5, "#a86739");
  box(x - 2, y - 2, 0, x + 2, y + 1, 2, "#46352f");
  box(x - 2, y - 2, 2, x + 2, y + 1, 3, "#5b4338");
  box(x - 1, y - 2, 3, x + 1, y - 1, 3, "#776052");
  animate(name, { type: "swing", axis: "x", speed, amplitude: 0.3 });
  part("body");
}
leg("front-left", 18, 16, 5);
leg("front-right", 30, 16, -5);
leg("rear-left", 18, 34, -5);
leg("rear-right", 30, 34, 5);

// Fluffy tail at the back
ellipsoid(24, 38, 23, 3.5, 3.5, 3, "#f2dfbd");
sphere(23, 41, 24, 2.5, "#fff1d5");
sphere(26, 41, 23, 2, "#f8e7c8");
sphere(24, 43, 24, 1.5, "#fff1d5");

// Upright neck, red collar, and little golden bell
ellipsoid(24, 15, 25, 5, 5, 7, "#a86739");
ellipsoid(24, 13, 25, 5.5, 4.5, 1.7, "#d92f3a");
box(19, 12, 25, 29, 14, 25, "#f04a50");
set(20, 10, 25, "#ff9b85");
set(28, 10, 25, "#ff9b85");
sphere(24, 9, 22, 2, "#f3bd37");
set(23, 8, 23, "#ffe68b");
box(23, 7, 20, 25, 8, 20, "#bd8426");
set(24, 7, 20, "#6c472a");

// Big ears, with pink inner fur
ellipsoid(15, 12, 33, 4.5, 2, 2.2, "#a86739");
ellipsoid(33, 12, 33, 4.5, 2, 2.2, "#a86739");
ellipsoid(14, 10, 33, 2.5, 0.8, 1.1, "#eaa5a2");
ellipsoid(34, 10, 33, 2.5, 0.8, 1.1, "#eaa5a2");

// Cheerful face and cream muzzle
ellipsoid(24, 11, 31, 7, 6, 6, "#ac6b3b");
ellipsoid(24, 7, 27, 4.5, 3.5, 3, "#f5e8cb");
ellipsoid(24, 10, 36, 2.5, 2, 1, "#bf8049");
sphere(20, 5, 32, 1.2, "#211d20");
sphere(28, 5, 32, 1.2, "#211d20");
set(20, 4, 33, "#ffffff");
set(28, 4, 33, "#ffffff");

// Broad, branching antlers
function antler(side) {
  const X = n => 24 + side * n;
  const branch = (a, b, c, d, radius = 1) =>
    line(X(a), 11, b, X(c), 11, d, radius, "#c99255");

  branch(4, 35, 6, 39, 1.35);
  branch(6, 39, 11, 42, 1.25);
  branch(11, 42, 15, 43, 1);
  branch(6, 39, 7, 44);
  branch(10, 41, 11, 45);
  branch(14, 43, 16, 45);
  branch(4, 35, 5, 38, 0.5);

  // Bright edges catch the light on the front.
  line(X(6), 10, 39, X(11), 10, 42, 0, "#efc584");
  line(X(11), 10, 42, X(15), 10, 43, 0, "#efc584");
}
antler(-1);
antler(1);

// Rudolph's glowing nose is its own animated part.
part("nose", [24, 3, 28]);
sphere(24, 2, 28, 2.6, "#f7283d");
set(23, 0, 29, "#ffacb1");
animate("nose", {
  type: "colors",
  palette: ["#dd1735", "#f7283d", "#ff5266", "#ff8a9a"],
  pattern: "pulse",
  glow: 1
});
part("body");