fogón

← Basics3D assetfogon/bidon-de-combustible

Bidón de combustible

by fogonCC020047 blocks
Bidón de combustibleDrag to turn it
// «Bidón de combustible» · gpt-6-sol (medium)
// Fuel can («Bidón de combustible»).

const red = "#bd3028";
const redLight = "#d74131";
const redTop = "#e34b37";
const redDark = "#8d211e";
const redShadow = "#681d1b";

// Solid, slightly rounded rectangular can.
box(9, 17, 2, 39, 30, 33, red);
box(10, 16, 3, 38, 16, 32, "#b82c25");
box(9, 18, 34, 39, 30, 35, redLight);
box(10, 17, 34, 38, 17, 35, redTop);

// Subtle variation in the painted metal.
forEach((x, y, z, color) => {
  if (color === red && rand() < 0.035)
    set(x, y, z, rand() < 0.55 ? "#c8392c" : "#a82923");
});

// Raised bottom seam and protective edge.
box(8, 16, 0, 40, 31, 1, redDark);
box(9, 16, 1, 39, 30, 2, red);
box(9, 15, 2, 39, 15, 3, redLight);
box(10, 15, 3, 38, 15, 3, "#e04a34");
box(9, 17, 33, 39, 30, 34, redDark);
box(9, 16, 34, 39, 29, 35, redLight);
box(10, 16, 35, 38, 28, 35, redTop);

// Strong rolled seams around the front.
box(9, 14, 4, 10, 16, 33, redDark);
box(10, 14, 5, 11, 15, 32, redLight);
box(38, 14, 4, 39, 16, 33, redDark);
box(38, 14, 5, 38, 14, 32, redLight);
box(11, 14, 32, 38, 15, 33, redDark);
box(11, 14, 33, 38, 15, 33, redTop);

// The visible left side: recessed panel and vertical reinforcement.
box(8, 18, 5, 8, 29, 31, "#a92822");
box(8, 18, 5, 8, 18, 31, "#d13b2c");
box(8, 29, 5, 8, 29, 31, redShadow);
box(8, 18, 5, 8, 29, 5, redDark);
box(8, 18, 31, 8, 29, 31, redLight);
box(8, 22, 6, 8, 23, 31, "#c63729");
box(9, 30, 4, 9, 30, 32, "#7e201d");

// Pressed X-shaped ribs on the front, with dark edges for depth.
line(12, 15, 7, 36, 15, 30, 1, redDark);
line(12, 15, 30, 36, 15, 7, 1, redDark);
line(12, 14, 8, 36, 14, 30, 0, "#d84330");
line(12, 14, 30, 36, 14, 8, 0, "#d84330");
line(13, 14, 8, 36, 14, 8, 0, "#e04933");
line(12, 14, 29, 37, 14, 29, 0, "#d33b2c");

// Small rivets at the corners of the stamped face.
for (const x of [13, 36]) {
  for (const z of [7, 30]) {
    set(x, 13, z, "#87211d");
    set(x, 13, z + 1, "#e65338");
  }
}

// Raised shoulder supporting the handle.
box(19, 20, 35, 38, 29, 36, redDark);
box(20, 20, 36, 38, 28, 37, redLight);
box(21, 20, 37, 37, 27, 37, redTop);

// Hollow red carrying handle, with a dark inner opening.
box(22, 23, 38, 24, 29, 41, red);
box(35, 23, 38, 37, 29, 41, red);
box(24, 28, 38, 35, 29, 39, redShadow);
box(23, 23, 42, 37, 29, 43, red);
box(24, 23, 44, 36, 29, 44, redTop);
box(25, 22, 43, 35, 22, 43, "#ec5440");
box(23, 22, 40, 24, 22, 42, "#d74230");
box(36, 22, 39, 37, 22, 42, "#a42a22");
box(25, 23, 41, 35, 23, 41, redDark);
box(25, 23, 40, 35, 23, 40, "#76221e");

// Layered neck and broad black screw cap.
box(10, 19, 34, 20, 27, 35, redDark);
box(11, 18, 35, 20, 27, 36, redLight);
box(12, 19, 36, 19, 26, 36, "#92251e");
box(11, 19, 37, 19, 26, 40, "#242a28");
box(12, 18, 38, 18, 27, 39, "#303633");
box(12, 20, 41, 18, 25, 41, "#39403c");
box(13, 19, 40, 17, 26, 40, "#424944");
box(11, 20, 40, 11, 25, 40, "#343b37");
box(19, 20, 38, 19, 25, 40, "#171d1c");
for (const x of [12, 15, 18]) {
  box(x, 17, 37, x, 18, 39, "#191f1e");
  box(x, 19, 41, x, 24, 41, "#202725");
}
box(12, 17, 37, 18, 17, 38, "#353c38");
box(13, 17, 39, 17, 17, 39, "#48504a");

// Pale enamel label, mounted over the upper right of the X.
box(21, 12, 23, 39, 13, 31, "#65221d");
box(22, 11, 24, 38, 11, 30, "#ded4ac");
box(23, 10, 25, 37, 10, 29, "#f2e6c0");
box(22, 10, 24, 38, 10, 24, "#a88b6a");
box(22, 10, 30, 38, 10, 30, "#fff0ca");
box(22, 10, 25, 22, 10, 29, "#f8e9c3");

// Block-letter FUEL on the front of the label.
const letters = [
  ["111", "100", "110", "100", "100"], // F
  ["101", "101", "101", "101", "111"], // U
  ["111", "100", "110", "100", "111"], // E
  ["100", "100", "100", "100", "111"]  // L
];
for (let i = 0; i < letters.length; i++) {
  for (let row = 0; row < 5; row++) {
    for (let col = 0; col < 3; col++) {
      if (letters[i][row][col] === "1") {
        const x = 23 + i * 4 + col;
        const z = 29 - row;
        set(x, 9, z, "#382d25");
        if (row === 0 || col === 0) set(x, 8, z, "#53402e");
      }
    }
  }
}

// Golden fuel emblem below the label: beveled rim and dark center.
const emblem = [
  "00011000",
  "00122100",
  "01222210",
  "12233221",
  "12333321",
  "12333321",
  "01233210",
  "00122100",
  "00011000"
];
const emblemColors = {
  "1": "#8a531c",
  "2": "#e4ac35",
  "3": "#523b25"
};
for (let row = 0; row < emblem.length; row++) {
  for (let col = 0; col < emblem[row].length; col++) {
    const v = emblem[row][col];
    if (v !== "0") {
      const x = 26 + col, z = 20 - row;
      set(x, 12, z, emblemColors[v]);
      if (v === "2" && col < 4) set(x, 11, z, "#ffd04b");
    }
  }
}
set(31, 10, 18, "#ffe05c");
set(31, 10, 17, "#eab33a");
set(30, 10, 16, "#e7ad32");
set(30, 10, 15, "#d99828");

// Fine red stamping marks beneath and beside the emblem.
for (let i = 0; i < 6; i++) {
  set(18 + i, 13, 9 + i, i % 2 ? "#e04a32" : "#84231e");
  set(19 + i, 13, 9 + i, "#b72b22");
}
box(13, 13, 5, 36, 13, 5, "#92231e");
box(15, 12, 6, 35, 12, 6, "#dc402e");