fogón

← Gear3D assetfogon/guantes-de-cuero

Guantes de cuero

by fogonCC08810 blocks
Guantes de cueroDrag to turn it
// «Guantes de cuero» · gpt-6-sol (medium)
// A pair of brown leather adventurer gauntlets lying side by side on the floor, palms down, with wide flared cuffs, darker stitched seams and small iron plates over the knuckles.

const leather = "#85502f";
const lightLeather = "#a86b3d";
const highlight = "#bd8050";
const darkLeather = "#59351f";
const stitch = "#38291f";
const iron = "#77838a";
const ironLight = "#b7c1c3";
const ironDark = "#49545b";
const brass = "#b88a43";

function gauntlet(base, mirror) {
  const X = u => base + (mirror ? 20 - u : u);
  function B(u0, y0, z0, u1, y1, z1, color) {
    box(Math.min(X(u0), X(u1)), y0, z0,
        Math.max(X(u0), X(u1)), y1, z1, color);
  }

  // Four separate, slightly staggered leather fingers.
  const tips = [10, 7, 8, 11];
  for (let i = 0; i < 4; i++) {
    const u = 3 + i * 4;
    const tip = tips[i];
    B(u, tip + 2, 0, u + 2, 20, 3, darkLeather);
    B(u, tip + 2, 2, u + 2, 19, 4, leather);
    B(u, tip, 0, u + 2, tip + 2, 3, leather);
    B(u, tip + 1, 4, u + 2, tip + 3, 4, highlight);
    B(u, tip + 5, 5, u + 2, tip + 5, 5, darkLeather);
    B(u, tip + 7, 5, u + 2, tip + 7, 5, lightLeather);
  }

  // Broad hand, narrower wrist, and an outward-angled thumb.
  B(2, 18, 0, 18, 28, 5, darkLeather);
  B(2, 19, 3, 18, 28, 6, leather);
  B(3, 20, 6, 17, 27, 6, lightLeather);
  B(4, 28, 0, 16, 34, 6, darkLeather);
  B(4, 29, 3, 16, 34, 7, leather);

  B(0, 20, 0, 3, 25, 3, darkLeather);
  B(0, 21, 3, 3, 26, 4, leather);
  B(1, 19, 0, 4, 23, 4, leather);
  B(1, 21, 5, 3, 24, 5, highlight);

  // Stitched, raised panel across the back of the hand.
  B(5, 21, 7, 15, 27, 7, darkLeather);
  B(6, 22, 7, 14, 26, 7, lightLeather);
  B(7, 23, 8, 13, 25, 8, highlight);
  for (const u of [5, 15]) {
    for (const y of [22, 24, 26]) B(u, y, 8, u, y, 8, stitch);
  }
  for (const u of [7, 10, 13]) {
    B(u, 21, 8, u, 21, 8, stitch);
    B(u, 27, 8, u, 27, 8, stitch);
  }

  // Individual iron knuckle guards, separated by dark leather gaps.
  for (let i = 0; i < 4; i++) {
    const u = 3 + i * 4;
    B(u, 17, 6, u + 2, 20, 6, ironDark);
    B(u, 17, 7, u + 2, 19, 7, iron);
    B(u, 17, 8, u + 2, 17, 8, ironLight);
    B(u, 18, 8, u, 19, 8, ironLight);
    B(u + 2, 19, 8, u + 2, 19, 8, ironDark);
  }

  // Thick flared cuff, widening toward its open rear end.
  for (let y = 32; y <= 42; y++) {
    const lo = y <= 34 ? 4 : y <= 37 ? 2 : 1;
    const hi = y <= 34 ? 16 : y <= 37 ? 18 : 19;
    const top = y <= 34 ? 7 : y <= 37 ? 8 : 9;
    B(lo, y, 0, hi, y, top - 2, darkLeather);
    B(lo + 1, y, 2, hi - 1, y, top, leather);
    B(lo + 2, y, top, hi - 2, y, top, lightLeather);
    B(lo, y, 2, lo, y, top - 1, lightLeather);
  }

  // Heavy rim and a dark recess suggesting the cuff opening.
  B(2, 39, 9, 18, 42, 9, darkLeather);
  B(4, 39, 10, 16, 41, 10, stitch);
  B(1, 42, 9, 19, 42, 10, lightLeather);
  B(2, 42, 11, 18, 42, 11, highlight);
  B(4, 43, 2, 16, 43, 8, stitch);
  B(2, 43, 0, 18, 43, 2, darkLeather);
  B(2, 43, 9, 18, 43, 10, lightLeather);

  // Wraparound strap, stitching, and a chunky brass buckle.
  B(2, 35, 8, 18, 37, 8, darkLeather);
  B(3, 36, 9, 17, 36, 9, lightLeather);
  for (let u = 4; u <= 16; u += 3) {
    B(u, 34, 8, u, 34, 8, stitch);
    B(u, 38, 9, u, 38, 9, stitch);
  }
  B(8, 35, 9, 12, 37, 9, brass);
  B(9, 35, 10, 11, 37, 10, "#e1ba68");
  B(9, 36, 11, 11, 36, 11, ironDark);
  B(10, 36, 12, 10, 36, 12, ironLight);
}

gauntlet(3, false);
gauntlet(26, true);

// Sparse, seeded variation on exposed leather without obscuring the details.
forEach((x, y, z, color) => {
  if (color === leather && get(x, y, z + 1) === undefined && rand() < 0.11) {
    set(x, y, z, rand() < 0.6 ? lightLeather : "#764527");
  }
});