fogón

← Level kit3D assetfogon/nivel-ventana

Ventana

by fogonCC017504 blocks
VentanaDrag to turn it
// «Ventana» · gpt-6-sol (medium)
// A modular wall segment with a window, matching the brick wall: exactly 48 blocks long on x (x 0..47), 10 thick on y (y 19..28), 40 tall, red bricks in running bond with light grey mortar and a light grey stone cap on top. In the middle, a square window opening 20 wide and 18 tall starting at z 12, with a white stone frame and sill sticking out 2 blocks at the front, a white cross-shaped mullion dividing it into four panes, light blue glass with a white diagonal glint, and two green wooden shutters open on both sides.

// Mortar core and running-bond brickwork.
box(0, 19, 0, 47, 28, 37, "#d4d0c8");

const bricks = ["#c94b39", "#d95640", "#e16046", "#c74a38"];
for (let course = 0; course < 10; course++) {
  const z0 = course * 4;
  const z1 = Math.min(z0 + 2, 37);
  const offset = course % 2 ? -5 : 0;

  for (let start = offset; start < 48; start += 10) {
    const x0 = Math.max(0, start);
    const x1 = Math.min(47, start + 8);
    if (x0 > x1) continue;

    const color = bricks[Math.floor(rand() * bricks.length)];
    box(x0, 19, z0, x1, 28, z1, color);

    // A restrained highlight keeps the brick courses crisp.
    if (z0 + 1 <= z1) {
      box(x0, 19, z0 + 1, x1, 19, z0 + 1, "#df6048");
    }
  }
}

// Clear the full depth of the window opening.
for (let x = 14; x <= 33; x++)
  for (let y = 19; y <= 28; y++)
    for (let z = 12; z <= 29; z++)
      set(x, y, z, null);

// Light-grey stone cap, flush with the modular wall footprint.
box(0, 19, 38, 47, 28, 38, "#bfc6ca");
box(0, 19, 39, 47, 28, 39, "#e5e9e8");
box(0, 19, 38, 47, 19, 38, "#d6dddf");

// White stone window surround and projecting sill.
box(12, 18, 12, 13, 20, 31, "#f1f1e9");
box(34, 18, 12, 35, 20, 31, "#f1f1e9");
box(12, 18, 30, 35, 20, 31, "#f5f5ee");
box(12, 27, 12, 13, 28, 31, "#e3e6e1");
box(34, 27, 12, 35, 28, 31, "#e3e6e1");
box(12, 27, 30, 35, 28, 31, "#e9ebe7");

box(12, 17, 10, 35, 28, 10, "#c9d0d0");
box(12, 17, 11, 35, 28, 11, "#f5f6f0");
box(12, 17, 11, 35, 17, 11, "#ffffff");

// Four blue panes.
for (const [xa, xb] of [[14, 22], [25, 33]]) {
  for (const [za, zb] of [[12, 19], [22, 29]]) {
    box(xa, 21, za, xb, 23, zb, "#8cdaf2");
    box(xa, 21, za, xb, 21, za + 1, "#acdff2");
    box(xa, 21, zb, xb, 21, zb, "#63b9dc");
    box(xa, 22, za, xa, 22, zb, "#5eb5da");
  }
}

// Chunky white cross mullion.
box(23, 20, 12, 24, 24, 29, "#f5f6ef");
box(14, 20, 20, 33, 24, 21, "#f5f6ef");
box(24, 20, 12, 24, 20, 29, "#dce3e1");
box(14, 20, 20, 33, 20, 20, "#ffffff");

// Short diagonal glints, one per pane.
for (const [x, z] of [[16, 26], [27, 26], [16, 16], [27, 16]]) {
  for (let i = 0; i < 4; i++) set(x + i, 20, z + 3 - i, "#ffffff");
}

// Open green wooden shutters, mounted against the front face.
for (const [x0, x1, hingeX] of [[5, 11, 11], [36, 42, 36]]) {
  box(x0, 18, 13, x1, 19, 28, "#257c42");
  box(x0 + 1, 17, 14, x1 - 1, 17, 27, "#51b75a");

  for (let z = 17; z <= 25; z += 5)
    box(x0 + 1, 17, z, x1 - 1, 17, z, "#308b45");

  box(x0, 17, 13, x1, 17, 13, "#33994c");
  box(x0, 17, 28, x1, 17, 28, "#73cb69");
  box(x0, 17, 13, x0, 17, 28, "#389d4d");
  box(x1, 17, 13, x1, 17, 28, "#247b40");

  for (const z of [16, 25])
    box(hingeX, 17, z, hingeX, 17, z + 1, "#f3cf67");
}